Расширенный сервис оповещений quik
- Версия: 3.18
- Требования: Quik 8.6
- Размер: 2.85 MB
- Просм: 23894
- Добавлено: 12.12.13
- Скачано: 5561
- Изменено: 02.12.21
Замена встроенного сервиса оповещений терминала quik. Практически полностью покрывает встроенные возможности плюс дает возможность генерировать сообщения на основании графиков и индикаторов, применяя широкий набор математических и логических функций.
Позволяет оповещать о наступлении события
- Индикацией состояния в экранной таблице крипта с использованием настоиваемого цвета.
- Стандартным сообщением терминала на экране
- Оповещением Windows в системной области
- Проигрыванием звукового файла wav, mp3, midi (настраивается отдельно на каждое событие)
- Запуском произвольной программы Windows
- Отсылкой почты на указанный адрес
- Отсылкой сообщения в Telegram
- Голосовым сообщением через звуковое устройство компьютера
- Установкой метки на графике
Можно выбрать только необходимые способы оповещения, отключив ненужные.
Количество графиков (или индикаторов), используемых для расчета событий, не ограничено.
Количество правил для генерации оповещений не ограничено.
В качестве исходных данных для расчетов можно использовать котировки инструментов, историю их параметров, встроенные в терминал индикаторы, пользовательские, написанные на qlua, и ряд иных данных, предоставляемых терминалом.
Все действия и сигналы и ошибки протоколируются.
Корректная работа на тиковых графиках не гарантируется. Работа на диаграммах, где присутствуют сдвинутые вправо индикаторы, требует особого внимания при задании условий.
Отличие демонстрационной версии от полной только одно: каждые 10 минут скрипт демонстрационной версии останавливает свою работу и просит нажать кнопку.
Условия для оповещения могут быть (практически) любыми, пользователь может их задавать в соответствии со своими потребностями. Примеры возможностей:
- Цена инструмента превысила 100 рублей за акцию
- Цена инструмента превысила максимум цен за последние 10 свечей.
- Цена инструмента пробила вверх (вниз) скользящую среднюю
- Цена инструмента превысила верхнюю линию канала Боллинджера
- Потеряно соединение с брокером
- Текущее время больше чем 12:00:00
- Сегодня пятница и через 10 минут завершится торговый день
- Три (четыре, пять, восемь или пятнадцать) скользящих средних выстроились в порядке возрастания (убывания) их периодов
- Все четыре индикатора RSI, построенных с разными периодами, выше 70
- Спред между базовым активом и фьючерсом на него превысил (или стал меньше) требуемой величины
- Индекс РТС отклонился на большее чем задано расстояние от рассчитанного индекса его составляющих по фьючерсам
- Цена вошла в облако Ишимоку и стохастик меньше (больше, равен) заданного значения
- Прибыль клиентского портфеля превысила 10000 рублей
- Стоимость портфеля более 300 000 рублей
- Разница в ценах Лукойла в Москве и Лондоне с коррекцией на курс превысила 1%
- За последние 5 свечей Газпром вырос на большее количество процентов, чем Роснефть (или индекс РТС, Nasdaq или ставки на победу пилота в гонках Indy)
- Квадратный корень из цены индекса РТС минус натуральный логарифм лучшей цены предложения фьючерса на Сбербанк превышает сумму предложений Газпрома на величину цены вчерашнего закрытия акции Уралкалия минус квадратный корень из индекса ММВБ
- И все остальное, на что у Вас хватает фантазии, главное, чтобы в терминале были необходимые для расчета данные.
В полной версии историю срабатывания условий можно хранить на графике:
а также получать на экране:
Также программа создаёт лог-файл. В зависимости от настроек он может быть кратким и подробным. Подробное логирование удобно во время отладки условий. Лог-файл можно отключить.
Alerter можно использовать совместно с индикатором трендовой линии. В этом случае можно вручную рисовать на графиках тренды и получать уведомления о выполнении условий.
Демонстрационная версия не имеет ограничений по времени. Предложения по развитию приветствуются.
Использование:
- Создайте папку с любым именем и разархивируйте в неё содержимое архива.
- Если вы знаете пароль к полной версии, разархивируйте файл Alerter_Full.zip (с заменой) в эту же папку. Если пароль вам неизвестен, пропустите этот пункт.
- Добавьте в терминал необходимые графики или индикаторы.
- Отредактируйте файл Alert.ini, задав необходимые условия срабатывания оповещений. Правила описания событий находятся в самом файле.
- Запустите Alert.lua как обычный lua-скрипт (Сервисы-Lua скрипты).
- Если в задании условий есть ошибки (робот сообщит) - исправляйте (редактируйте) Alert.ini и перезапускайте скрипт. Увидеть процесс расчета условий можно в лог-файле с включенным режимом Trace. Режим задаётся в Alert.ini.
- Ждите сигналы
- Если ваш антивирус сообщает о наличии несуществующих вирусов в скрипте, у вас есть 2 варианта. Либо не использовать этот скрипт, либо утихомирить антивирус, поместив папку скрипта в исключения.
- Не забудьте поблагодарить автора за работу. Сумма благодарности не регламентируется (соблюдайте приличия
). В ответ вы получите пароль от файлов полнофункциональной версии. Номер карты и электронные кошельки для перевода:
История изменений:
3.18 |
|
3.17 |
|
3.16 |
|
3.15 |
|
3.14 |
|
3.13 |
|
3.12 |
|
3.11 |
|
3.10 |
|
3.09 |
|
3.08 |
|
3.07 |
|
3.06 |
|
3.05 |
|
3.04 |
|
3.03 |
|
3.02 |
|
3.01 |
|
3.00 |
|
2.04 |
|
2.03 |
|
2.02 |
|
2.01 |
|
2.0 |
|
1.18 |
|
1.17 |
|
1.16 |
|
1.15 |
|
1.14 |
|
1.13 |
|
1.12 |
|
1.11 |
|
1.10 |
|
1.9 |
|
1.8 |
|
1.7 |
|
1.6 |
|
1.5 |
|
1.4 |
|
1.3 |
|
1.2 |
|
1.1 |
|
1.0 |
|
{price} > 100
Получается следующая штука. Допустим , сделки идут так:
100
100.1
100
100.1
100
100.1
Если инструмент ликвидный - то такая ситуация является совершенно нормальной.В описанной ситуации, естественно, возникнет три сигнала, один за другим. Робот 3 раза и отреагирует, как положено.
Как бороться?
Выбирайте на свой вкус
Александр, крайне просто. Для нужного инструмента постройте дневной график и дайте ему идентификатор. Например, XXX.
Далее в условии сравниваете хай сегодняшнего дня с закрытием вчерашнего. Что-то типа
CONDITION = {XXX,0,HIGH} > {XXX,1,CLOSE}
Срабатывание стопа можно сделать путем сравнения текущей цены с ценой, на которую установлен стоп.
Как вариант - сделать оповещения ПО ВСЕМ стоп-заявкам. Но надобность этого мне совсем неочевидна
если CONDITION = {pri} > 50 работает
а когда CONDITION = {vol} > 100 не хочет
больше 53 срабатывает сразу на запуске
больше 54 говорит нет сколько не жди
а по графику тиковые объемы частенько за 100 а минутные все больше 1000.
пробовал хай за последние 10 свечей - не помогает.
Про тиковые я читал, что не работает. Но на минутках тоже не пашет
[Большой объем в GAZP]
CONDITION = {GAZPVOL,0,Volu me} > 10000
DESCRIPTION = Объем в последней свече Газпрома больше 10000
MESSAGE = Нет
SOUND = Alert.wav
; Контроль объёмов нескольких свечей
[Большой объем в последних свечах GAZP]
CONDITION = average({GAZPVO L,1-4,Volume}) > 10000
DESCRIPTION = Средний объем в последних 4 свечах Газпрома (исключая текущую) больше 10000
MESSAGE = Н
SOUND = Alert.wav
EMAIL = No
Теперь буду знать, что к объему надо Volume обращаться:)
Всё прекрасно работает и на тиках в том числе
Задача следующая
В Квике Брокер транслирует спот рубль-доллар и срочный рынок рубль-доллар
на каждый день существует коридор в котором должны находится значения этого свопа (зависит от текущий процентных ставок и так далее)
но в течение дня возможны экстремальные выходы из коридора особенно во время сильной волатильности
нужно написать самую простенькую программу которая просто выводила значения свопа на экран
Можно модернизировать ваш робот для выполнения этой задачи?
а я бы Вам скинул 2000 руб за помощь
Александр
Программа не видит скрипты luac по шаблону *.lua. - Это нормальное поведение терминала quik. Так и должно быть
По поводу error 14001. Скорее всего у вас в системе отсутствует стандартный модуль MSVC++ 2005 vcredist_x86. luaforwindows.googlecode.com/files/vcredist_x86.exe
О, спасибо, это помогло! Буду пробовать.
Сборка 12.01.2015 20:04:12 s_mike
Рабочее место QUIK 6.16.1.15
02/17/15 Tuesday Калининградское время (зима) +0300
18:09:30 Подключено к ММВБ (78.41.199.21:15100)
18:09:30 Ошибка получения данных с графика с идентификатором 30_ekz_cl
18:09:30 Ошибка вычисления выражения {Minutka,0,Clos e} > {30_ekz_cl}
Звук не проигрывает оповещения не выдает
В скрипте вот что
; Пример задания секции.
[Ниже зеленой] // Заголовок секции (в квадратных скобках)
CONDITION = {Minutka,0,Clos e} > {30_ekz_cl} // Условие срабатывания по графику с идентификатором Minutka
DESCRIPTION = Цена превысила мувинг 30 периода // Текст сообщения на экране
MESSAGE = Y // Выводить сообщение на экран или нет
SOUND = grumb.wav // Звуковой файл. Не проигрывать если пустой. Форматы звуковых файлов mp3, wav, midi
; RUN = %windir%\system 32\notepad.exe // Запуск программы. Можно использовать переменные окружения DOS, как в .BAT файлах
EMAIL = N // Отправлять или нет почту
График минутный есть с идентификатором и есть мувинг с периодом 30 идентифицирован
Если робот Вам говорит, что он не может получить данные с графика 30_ekz_cl, не стоит в этом сомневаться.Он действительно не может.
Если график с таким именем "вроде как" существует, проверьте внимательно его идентификатор. Возможно, вы ошиблись в какой-то букве, давая этому графику имя. Проверьте, не смешаны ли там русские и английские буквы и т.п.
Чтобы дать имя графику или индикатору, нужно
Все заработало (несмотря на то что пользуюсь квиком седьмой год, вот к чему приводит самоуверенность).
Помогло ваше подробное описание скриншота (то что я как бы знаю наизусть и проделывал тысячи раз (но тыкая на сам индюк) присваивал имя индюку обычно.
Оказывается я присвоил имя индикатору для чтения его на диаграмме во вкладке "Общие", А НУЖНО БЫЛО ВО ВКЛАДКЕ "Дополнительно" "Идентификатор" (как на прайсе).
В общем заработало все и музыка заиграла
Спасибо за терпение
1. соединение разорвано; 2. соед-ие установлено; 3. Есть соединение и нет поступления записей n секунд и другие подобные неприятности.
Может подскажите, что нужно использовать, чтобы в этих случаях отправлялись СМС-ки.
К моему удивлению, и это можно.. Я никак не рассчитывал скрипт на такое использование и поэтому подобного рода синтаксис в в файле настроек (был) не описан. Если для событий 1 и 2 Вы укажете такие условия
для получения сообщения в момент подключения к брокеру
CONDITION = isConnected() == 1
для сообщения об отключении от брокера
CONDITION = isConnected() == 0
То они будут работать.
Касаемо отправки смс. Можно. Для этого потребуется:
1. Приобрести полную версию, которая умеет отправлять емайл
2. Зарегистрироват ься на каком-нибудь гейте, преобразующем email в sms. Поищите гуглом и подберите тот, что вам понравится
3. Настроить отправку почты на этот гейт в соответствии с его правилами.
Робот будет отправлять электронные сообщения гейту, а тот будет преобразовывать их в смски на ваш телефон
Второй вариант - при наличии GSM модема. При срабатывании условия запускайте внешнюю программу, работающую с этим GSM модемом.
Михаил доходчиво отвечает на все вопросы по установке и настройке, оперативно дорабатывает скрипт.
Я не мог настроить отправку почты с Gmail, вместе разобрались, оказывается гугл блокирует доступ к Gmai от сторонних программ.... Для того чтоб всё заработало, пришлось в настройках аккаунта Google, разрешить этот доступ. Может кому пригодится!
Чем не устраивает пример, который идет в поставке?
[Верхний фрактал] // Max свечей (4-3) < max свечи (2) > min свечей (1-0)
CONDITION = max({LKOH,3-4,H igh}) < {LKOH,2,High} and {LKOH,2,High} > max({LKOH,0-1,High})
DESCRIPTION = Сформирован верхний фрактал
MESSAGE = да
Странно. Сейчас сам скачал, посмотрел. И вот они, фракталы, в самом конце файла alert.ini, лежат как миленькие. Закомментирован ы, ждут своего часа ))
Файлы архива, необходимые для демо-версии, незапаролены.
На каких условиях можно получить полную версию ?
Например,так: www.bot4sale.ru/.../51-nuzhen-amisharp.html
Конечно можно.
Дайте графику индикатора RSI какой-то идентификатор. Например _rsi_
CONDITION = {_rsi_} < 30
SOUND = Alert.wav
или любой другой звуковой файл.
Собственно, и все.
Торгую фьючем на РТС.
Мне нужно чтобы оповещение срабатывало когда цена достигала уровня верхнего болинджера +30 пунктов и нижнего уровня болинджера -30 пунктов.
Для этого назначил идентификатор цены на фьюч РТС как Price_RTS и на линии болинджера присвоил RTS_BB.
Далее я написал след. скрипт:
CONDITION = {Price_RTS-30,0 ,Close} >= {RTS_BB,0,Close,1}
DESCRIPTION = Цена достигла +30 пунктов уровня Боллинджера
MESSAGE = Y
SOUND = ringin.wav
CONDITION = {Price_RTS+30,0 ,Close} >= {RTS_BB-30,0,Close,2}
DESCRIPTION = Цена достигла -30 пунктов уровня Боллинджера
MESSAGE = Y
SOUND = ringin.wav
При запуске данного скрипта выдается ошибка:
Alerter: Ошибка вычисления выражения {Price_RTS+30,0 ,Close} >= {RTS_BB,0,Close ,2}
Должно быть что-то типа следующего:
CONDITION = {Price_RTS} < {RTS_BB,0 ,Close,2} - 30
CONDITION = {Price_RTS,0,Cl ose} - {RTS_BB,0,Close ,1} >= 30
CONDITION = {RTS_BB,0,Close ,2} - {Price_RTS,0,Cl ose} >= 30
Но странно, когда я указываю эти два условия, у меня почему то исполняется лишь одно - последнее, т.е. работает только в случае если цена пересекает нижнюю границу Боллинджера -30пунктов. Но когда закомментируешь последнее выражение, начинает срабатывать верхняя строчка, т.е. на пересечении верхней линии Боллинджера +30пунктов.
т.е. срабатывает одно из двух условий. Как сделать так чтобы срабатывали оба условия - как на вверх, так и вниз?
Я так понимаю, что оба условия Вы указали в одной секции?
В каждой секции может быть только одно условие.
Создайте 2 разные секции и каждой из них пропишите свое условие.
В полной версии можно условия объединить:
CONDITION = {Price_RTS,0,Cl ose} - {RTS_BB,0,Close ,1} >= 30 or {RTS_BB,0,Close ,2} - {Price_RTS,0,Cl ose} >= 30
Прочите эту статью внимательно. Там все есть:
В полной версии позволяет использовать для генерации события более 2х графиков (индикаторов)
Что это значит, можете привести пример?
В демоверсии в одном условии таких обращений может быть лишь 2.
В полной версии их количество неограничено.
Можете привести пример, этих двух и более обращений?
Сколько будет стоить полная версия?
Полная версия стоит столько, сколько вы считаете справедливым за нее заплатить. Подробности почтой
Все-таки вы поленились прочитать предыдущие комментарии...
?:0: attempt to call field 'sinsert' (a nil value)
Что это значит ?
Может быть Вы сможете подсказать, как сделать такое вроде бы простенькое условие:
1)Хотелось бы, чтобы срабатывал звуковой сигнал, при имезнении рыночной цены на какой то заданный процент изменения с момента запуска скрипта в некий выбранный промежуток времени ?
Алертер работает с графиками. поэтому написать именно то условие, которое вы написали, в текущей реалиации не представляется возможным.
Имеет смысл как-то переформулирова ть условие.. Например, изменение цены за последние 5 свечей графика более чем x рублей (или x процентов)
Или изменение с начала торгового дня более чем x процентов.
Или как-то еще - чтобы можно было читать данные OHLC с графиков
Если да, то это можно будет зациклить ?
Подскажите пожалуйста - что нужно прописать (какой код) для оповещения, когда в "индикаторе NRTR" будет (появление треугольников) в любую сторону, либо вверх, либо в низ. Заранее спасибо за ответ...
Если речь идет об индикаторе NRTR, взятого с этого сайта (www.bot4sale.ru/.../indikator-nrtr-2.html), то условие возникновения красного треугольника вниз может выглядеть так:
[NRTR sell]
CONDITION = {nrtr,0,Close,3 } ~= 0
DESCRIPTION = Сигнал NRTR на продажу на текущей свече
В индикаторе 4 линии. 2 линии уровней (их номера 0 и 2) и 2 линии треугольников с номерами 1 и 3. Линии (и их номера) можно посмотреть в настройках индикатора. Соответственно номер линии красных треугольников - 3, о чем мы и пишем в нашем условии.
Если у вас версия алертера 1.12 и выше, тогда условие продажи может выглядеть так:
CONDITION = {NRTR,0,Exist,3 } == 1
Условия на покупку - аналогично, но линия индикатора 1
Пока ничего не понимаю, но хочу
Даже на одну строчку скрипта выскакивает
?:0: attempt to index field `?` ( a nil value)
хоть что это и в чем причина?
Спасибо
Чтобы я смог сказать вам что-то вразумительное, нужно больше информации. Например, прислать мне файл настроек с условиями.
дело новое, неизведанное...
хочу сделать чтобы при пересечении двух ема звучала "музыка". Беру строку с Вашего примера, с файла ini;
condition = {gazp_price} > {gazp_ma}
и вместо {gazp_price} вставляю {gazp_ma2}.
Соответсвенно присваиваю для первой ема - {gazp_ma1}
для второй - {gazp_ma2}
Это все присваиваю в "дополнительно-идентификатор"
Т.е. получилась одна строка...
condition = {gazp_ma2} > {gazp_ma1}
запускаю скрипт и выскакивает
?:0: attempt to index field `?` ( a nil value)
Не знаю где можно было бы поподробнее почитать правила задания условий. А так, с одной строчкой, без знаний, много не поэкспериментир уешь. Вроде понятно, но что-то не "играет"
ОписАл как смог.
Спасибо
skype mikemsk. Звоните, разберёмся в ситуации.
А masd можно как-то "зашифровать" в этом скрипте?
три периода. а идентификатор один...
Спасибо.
Да, конечно можно. Макд - это индикатор, состоящий из нескольких линий. Вы можете получать значение любой линии, указав её номер среди параметров, задаваемых внутри фигурных скобок. Формат задания параметров подробно описан в ini файле.
CONDITION = {ЦенаГазпрома1} > {Цена Газпрома2}
DESCRIPTION = Цена1 составляет {ЦенаГазпрома1} , Цена2 составляет { Цена Газпрома2} текущий спред ({ЦенаГазпрома1 } - {Цена Газпрома2})???
В текущей реализации в поле decsription невозможно вычислить выражение. Можно вывести любые значения с графиков, но не результат действия над этими значениями.
Update: 01.01.2016
Уже можно.
Однако дело вот в чем.
На текущий момент синтаксис настроечного файла и так весьма сложен для среднестатистич еского пользователя. Добавление такого рода возможностей сделает сложность настройки чрезмерной.
Тут можно пойти путем доработок под конкретного пользователя или путем добавления возможностей в полной версии. Если вы заинтересованы - велкам в скайп mikemsk. В общедоступной версии я считаю такие усложнения излишними.
Update: 01.01.2016
Уже можно.
Если можно конечно....
Я думал об этом. С моей точки зрения информация, рассчитанная в момент срабатывания условия значительно важнее последующей. Именно в момент срабатывания условия рассчитываются разные уровни типа стоп-лосса, тейк-профита и аналогичные им.
Цитирую sekret_x:
К сожалению, невозможно. Срабатывание происходит по условию, которое может быть совокупностью различных событий.
В условии может быть использована цена какого-то инструмента, цены нескольких инструментов или вообще не использоваться какие-либо цены
Вот именно поэтому я и написал только про поле Description, а остальные Message и Email оставить только первоначальные значения... Так 2 зайца убьётся.
Очевидно, что они срабатывают не одновременно, а одно после другого через небольшой промежуток времени.
Для начала посмотрите внимательно в условие. В нем имееется много условий or и and. Эти условия имеют неодинаковый приоритет и вероятно, высчитывается совершенно не то, что вы хотели бы.
Изменить приоритет можно при помощи скобок.
Далее Вам следует включить трассировку и вывести в лог рассчитываемые значения. Вы сможете проверить, что подставляется в выражения и как они рассчитываются, отладив тем самым ваши условия.
Если уж совсем ничего не получается - звоните мне голосом в скайп, помогу.
есть мощная идея апгрейда как раз то о чем просит секрет_х
если отделить основные понятия дискретности сигнала и его продолжающегося состояния (нужен момент срабатывания сигнала или индикация продолжающегося сигнала на продолжающихся индикаторах), то о чем просит секрет_х можно попробовать сделать и вполне реально и это будет фантастически удобно. Могу расписать детали в сообщении по почте.
Только без заумностей, попроще. Можно с примерчиками.
1.Сообщить и схватить СИГНАЛ - это момент генерации трейда с генерируемой автоматически рассчитываемой целью и стопом. Это конкретны момент, конкретная точка, выстреливающая дискретно. В программе к основному условию индикатора алгоритма добавляются конкретные точки в том что на 1 свече линия была выше а на 2 свече ниже, так называемый перелом в конкретной точке.
2.Это ИНДИКАЦИЯ сигнала - работает он еще или нет, в силе еще сохраняются основные условия или нет. В программе есть условие-алгорит м самого индикатора, но не фиксируется точка перелома- старта индикатора. Из-за этого индикатор активен и показывается до того момента пока действительны его основные условия и пока он сам не закончится сменой на встречный. ИНДИКАТОР работает до момента его самостоятельног о окончания до смены на встречный. Либо индикатор переворачиваетс я на встречный не доходя до таргета , либо превышает таргет и потом меняется на встречный. В этом основное отличие СИГНАЛА от ИНДИКАТОРА
Для совокупного отражения работы алгоритма во всех его проявлениях один и тот же алгоритм задействован 4 раза. Первая пара это СИГНАЛ вверх и СИГНАЛ вниз, а также вторая пара ИНДИКАТОР вверх и ИНДИКАТОР вниз.
Сейчас сам СИГНАЛ хоть вверх хоть вниз при срабатывании генерит расчетные величины таргета и стопа, создает сообщение, звук и емейл в момент срабатывания, и в окне Алертера V1.15 в поле Описание больше вообще не появляется. Даже перезагрузки Алертера не вызывают его новую генерацию и нанесение на график, то есть сигнал прошел, отметился везде и все.
Индикатор же с момента генерации появляется в окне Алертера V1.15 в поле Описание и номинально там демонстрирует факт того, что основные условия алгоритма пока существуют и действительны. Но важный момент и проблема в том, что так как алгоритм тот же, то при внеочередных перезагрузках алертера все расчетные цифры по таргету и стопу расчитываются произвольно на момент перезапуска алертера, что является нежелательным. Тем не менее ИДИКАТОР используется исключительно как наглядный пример того что основные условия алгоритма еще действуют, а реальные важные цифры таргета и стопа берутся для работы только из прежнего СИГНАЛА.
2. Индикация сигнала имеется - в главной таблице скрипта в поле "состояние" показывается текущий результат вычисления условия. На график наносить этот сигнал невозможно. Во-первых, невозможно посчитать сигнал на истории В ПРИНЦИПЕ. Пример: наличие соединения с брокером. Во вторых, расчетом сигналов на истории занимаются специализирован ные программы типа амиброкера и повторять их функционал на луа лишено всякого смысла.
3. Пара сигнал вверх и сигнал вниз - опять-таки - это исключительно ваша потребность. Кто-то использует алертер для получения сигнала о том, что 10 скользыящих средних выстроились в каком-то порядке. Какие тут сигналы вверх-вниз? Или просто условие достижения времени, по которому пользователь просто хочет услышать звуковой сигнал - тоже никаких вверх-вниз нет, как и стопов с тпаргетами или еще чего-то.
1. Есть ли возможность объединить две эти функции алертера - СИГНАЛ и ИНДИКАТОР (действия условия), сигнал для расчета цифр, а индикатор для индикации действительност и и пока еще существования данного условия, приведшего к генерации сигнала.
Для этого в сам момент генерации все расчетные цифры сигнала должны сохраняться в каких то то переменных ячейках. То есть полностью со всех расчетных цифр указанных в поле Description должен быть сделан слепок, и этот слепок с момента генерации сигнала должен быть показан в поле Description. В идеале эти сохраненные переменные необходимо сравнивать с текущим рынком и показывать сколько процентов прошло от начала генерации сигнала, сколько процентов осталось до таргета и сколько процентов осталось до стопа. То есть мы схватили момент начала сигнала и так сравниваем эти величины пока сам индикатор не опрокинется на встречный. Саму величину наивысшего значения цены в процессе ее отслеживания в индикаторе с начала генерации - насколько она превысила таргет или недобила до таргета - эту переменную - ее максимум в идеале тоже необходимо где то запоминать и складировать.
2.Этот пункт совсем не сложный. С момента точки генерации сигнала НЕОБХОДИМО и полезно все поле Description фиксировать в таблице истории срабатывания. Одной даты и времени в этой таблице крайне мало. Но как удобно было бы заглянуть в таблицу и посмотреть все детали каждого сигнала с временем и датой генерации сигнала, а также с цифрами указанными в поле Description - цифрой входа, цифрой таргета, цифрой стопа (разумеется если эти цифры были запрограммирова ны пользователем в поле Description)
В идеале после окончания самого сигнала, когда он закончился, то цифру максимального исполнения сигнала (и в абсолюте и в процентах) (то есть насколько за время действия сигнала цена не добила или превысила таргет), так вот эту самую величину в идеале было бы также дописать в таблицу истории срабатывания в конце той строки где прежде до этого в момент генерации были указаны расчетные величины начала сигнала, таргета и стопа. А после них таким образом цифра на сколько исполнен таргет или на сколько до него не добила цена в момент работы сигнала и до его отмены.
Невозможно в принципе - ничто не мешает вам изменить инифайл и просто выкинуть из него какую-то секцию. куда девать все эти сохранения? Алертер о них уже ничего не знает
сколько процентов осталось до стопа
см. выше. стопы - это нужно вам. другим стопы не нужныа нужно что-то совсем иное
стопы и таргеты не программируются в description. Там просто вычисляются выражения. Смысл этих ыражений может быть произвольным (погода на фарерских островах) и алертер об этом ничего не знает
Тем более невозможно выводить какие-то расстояния от текущих значений (например, спреда) до погоды на фарерах
Все что вы пишете, нужно исключительно вам и для вашей конкретной задачи. Задача изменится - и ваши пожелания станут неактуальными или невозможными.
Поэтому. Если необходим робот, который работает по жесткому алгоритму и выводит какую-то специфичную информацию - обращайтесь, сделаем вам робота. Алертер задумывался как универсальное средство и таким и будет оставаться.
просьба одна тогда, сформулирована в пункте 2. Думаю это более чем полезно и справедливо. Если уж вы сделали таблицу историй срабатывания, и ставите туда дату и время, то сделайте доброе дело, добавьте плс туда же и слепок всего поля Description. Причем опционально в настройках должна быть какая то команда добавлять в окно истории срабатывания или нет. Кому надо будут включать и смотреть потом историю с деталями, кому не надо вообще не будут включать. Думаю это совсем не сложно. Буквально это означает следующее. При открытии окна истории срабатывания я буду видеть те цифры, что были указаны в условии срабатывания и поле Description именно этого сигнала в это время и этот день. Это же удобно. Если я считаю стопы и таргеты в поле Description то буду их видеть, а кому не надо это тот вообще не будет включать эту опцию в настройках.
То есть. Пока скрипт запущен, он собирает историю. Как только вы выключили скрипт или закрыли квик, эта история пропадает.
Я думал, нужно ли хранить эту историю на диске, но по размыщлению пришел к тому, что это просто никому не потребуется. Смотреть сегодня те события, которые произошли неделю назад. Зачем? Все равно любой робототрейдер (не говоря уже о ручном трейдере) заглядывает в терминал как минимум раз в день.
Зачем видеть прошлогодние алерты? Объясните.
чтобы не хранить огромную простыню этих сигналов - можно сделать в установках лимит сколько строк хранить, штук 20 было бы более чем достаточно.
Вы будете смотреть в содержимое этого файла - и видеть полный бред.
Нашел баг! Если выводить данные с помощью MESSAGE или EMAIL и указать символ "%", то он выводится дважды (выглядит как два символа идущих друг за другом вместо одного. вот так --> "%%").
Пример (условный):
[Test]
CONDITION = {INDICATOR} == 50
MESSAGE = #{INDICATOR}# %
При срабатывании сообщение будет выглядеть:
50 %%
А должно быть:
50 %
Исправил, забирайте )
Ещё один баг.
Арифметическая операция "%" (остаток от деления) не работает.
Пример (условный):
[Test]
CONDITION = {INDICATOR} % 2 == 0
MESSAGE = Чётное число!
В данном примере ни разу не сработало условие, даже когда точно знал что историческое значение индикатора чётное.
А вот обратная вещь (при нечетном числе) срабатывает всегда, даже когда значение индикатора на самом деле четное:
CONDITION = {INDICATOR} % 2 ~= 0
При каждой математической операции с плавающей запятой накапливаются малюсенькие погрешности. Поэтому эти вычисления нельзя никогда считать точными, только приблизительно точными.
Поэтому
Если у вас есть интерпретатор lua, вы можете в этом убедиться сами.
Выход прост:
abs({xxx} % 2) < 1
Такой вариант подходит.
Понимаю, вредность связана с тем что он бросил курить, сам помню что это такое - курил 15 лет, уже не курю 8. Итак, много писать не буду, как вижу в файле ini :
[Рост в LKOH за 3 свечи]
CONDITION = {Лукойл} - {Лукойл,2,Open} > 2
DESCRIPTION = Рост в Лукойле 3 последние свечи равен #{Лукойл} - {Лукойл,2,Open}#
COLUMN = Весёлые розовые поросята(назван ие столбца), Увеличение числа поросят на #вычисляемое и обновляемое поле#
MESSAGE = Рост в Лукойле больше 2 рублей за 3 последние свечи
SOUND = Alert.wav
EMAIL = Рост в Лукойле 3 последние свечи = #{Лукойл} - {Лукойл,2,Open}#
Теперь подробней, при срабатывании условия алерта и до конца true, начинает рассчитываться поле COLUMN (по сути можно было бы сделать и не одно такое поле COLUMN 1 COLUMN 2, по их числу добавляется количество столбцов в результирующей таблице ). При помощи этого поля можно наглядно увидить динамику изменений определённых параметров, оценить силу сигнала.
Ну наверно всё, надеюсь "Весёлые розовые поросята" будут весомым аргументом, и спасибо за эту доработку скажут не один десяток конечных пользователей alertera
Имеется ввиду что при срабатывании основного условия в таблице будут считаться какие угодно другие условия (в том числе и основное) и выводится в отдельный столбец.
Думаю, можно ли это сделать красивенько и правильно.
как пользователь Alerter'а хочу высказаться ПРОТИВ предложенной идеи добавлять "#вычисляемое и обновляемое поле#" (сообщение выше про весёлых розовых поросят).
Обоснование:
1. Суть уведомления в том, чтобы после него сразу совершать какое-то действие (покупать/прода вать). Если не уверен что сразу после уведомления нужно совершать какое-то действие значит измени условия на более "жесткие".
А если боишься пропустить что-то важное создай одно уведомление с названием "слабый сигнал", и второе "сильный"
2. Добавление дополнительного кода уменьшит скорость работы всех функций скрипта
Не вижу целесообразности.
Спасибо.
Я и не писал что абсолютно все будут согласны с данным предложением, так как и не все поймут как его использовать. Сразу чувствуется Вы в "жёстком" алгоритме. И, как видите, желающих подобной доработки тут как минимум двое, в отличии от Вас.
Досконально описать жёсткий сигнал почти не возможно, а принять решение на основании параметров мозг сможет.
И по поводу второго пункта, процитирую одного умного человека, я думаю он свои слова узнает
" Алертер съедает доли процента среднего современного процессора. Это сущие мелочи."
Программа просто абалденная, использую ее на алерт объемов в свече. Спасибо Вам за нее))
Но хотелось бы задать вопрос, пытаюсь сделать срабатывание на разницу цены открытия и закрытие одного и то го же бара не более, например 50 пунктов, задаю след. условия в двух разных секциях.
Два условия, т.к. цена открытие может быть как больше так и меньше цены закрытия и наоборот.
Но алерт почему то срабатывает через раз.
CONDITION = {SiPrice,1,CLOS E} - {SiPrice,1,OPEN } < 50
CONDITION = {SiPrice,1,OPEN } - {SiPrice,1,CLOS E} < 50
Подскажите пож-та, где мой косяк?
Спасибо!
А условие можно написать в одну строчку
CONDITION = abs({SiPrice,1, OPEN } - {SiPrice,1,CLOS E}) < 50
Как я понимаю, в рамках этого алерта это сделать невозможно, т.к. в виде графика эта информация не выводится и идентификатор на него не повесишь.
В графиках индикаторах квик есть параметр - "кол-во в последней сделке", но эти значения не совпадают с данными кол-во из таблицы всех сделок квика, они разняца.
Возможно ли вообще сделать такой алерт в рамках другой программы?
Спасибо!
Здесь есть небольшая проблемка. Алертер смотрит в рынок с определённой периодичностью. Если между просмотрами вывалится большущее количество тиков, возможна ситуация, что часть этих тиков не будет обработана.
Частично снять проблему можно, если написать условие типа следующего:
дудеть, если максимальный объем в последних 25 сделках больше 1000
В таком случае вы будете получать практически все алерты
Так и есть, как Вы описали, пробовал ставить тиковый график , но после большущего количества тиков алерт срабатывал на последнее значение этого большущего количества, если оно подходило по условию.
Цитирую admin:
Хмм...а интересное предложение, будем пробовать ))
Спасибо за идею )
Допустим,на предпоследней свече условие выполнилось. Музычка продудела, секция перешла в состояние true
Далее появляется новая свеча и тестируется новая предпоследняя свеча. Если и на ней выполняется условие, то ничего не происходит. Секция как была в состоянии true, так и осталась. Сигнала нет и не должно быть.
Вот если в этой новой предпоследней свече условие не выполнится, секция перейдет в состояние false и секция будет снова готова играть музычку при следующем выполнении условия
Все верно Вы написали Михаил, когда условие выполнилось на свече и продудела музычка, то в таблице алерта строка осталась подсвечена color, т.е. как теперь понятно из Вашего комментария осталось в состоянии true.
А теперь вопрос, как бы сбросить это состояние перед след. анализом? ))
Спасибо!
Что-то у меня не хватает фантазии. Может, кто другой сможет подсказать?
Мне кажется и эту задачу можно решить при помощи обновляемого поля, дудеть конечно не будет, но текущее состояние алерта будет видно.... По сути в этом и есть смысл, определить текущее состояние алерта
Спасибо, работает условие с abs.
[Si: Цена меньше заданной]
CONSTANT PRICE = 76500
CONDITION = {Si5m,0} < PRICE and {Si5m,1,Close} > PRICE
DESCRIPTION = Цена Si превысила установленную границу $PRICE
MESSAGE = Цена Si превысила установленную границу $PRICE
SOUND = Alert.wav
На самом деле внутри условия condition можно написать целую программу на языке Lua. Она может состоять из большого количества функций и иметь весь функционал, предоставляемый языком программировани я. Переменные тоже можно использовать.
Единственное ограничение - не надо из этих функций рушить материнский скрипт и вообще весь терминал ))
Хочу поделиться своим способом решения данного вопроса. Это не замена переменным в скрипте, но в целом лично мне очень помогло их заменить, т.к. у меня много одинаковых переменных в скрипте, которые не хотелось править каждый раз руками.
Идею подал Михаил, автор этого скрипта, за что ему отдельное спасибо.
Суть в том, что можно добавить горизонтальную линию на график и в скрипте использовать её вместо переменной столько раз сколько нужно. Саму линию конечно можно будет двигать вверх-вниз.
Пошаговая инструкция как это сделать:
1.Скопировать код горизонтальной линии (который ниже), вставить в блокнот и сохранить как файл с расширением .lua
2.Скопировать полученный lua-скрипт в папку LuaIndicators в Quik
3.Подключить этот lua-скрипт в интерфейсе Quik
4.Добавить на график индикатор "Alerter Lines", который добавляет этот lua-скрипт
5.После его добавления на графике появятся две горизонтальные прямые на уровне 1.0000 и 2.0000. В свойствах добавленного индикатора изменить эти значения на нужные.
6.Там же в свойствах присвоить идентификатор этому индикатору, например Lines
7.Теперь в скрипт алертера можно их вписывать как {Lines} и {Lines,0,CLOSE, 1} (первая и вторая линия)
Скрипт достаточно простой-добавля ет две горизонтальные линии, но можно убрать вторую или добавить ещё линий.
Код горизонтальной линии:
debug = nil
Settings =
{ Name = "Alerter Lines",
Start = 1,
Finish = 2,
line =
{ { Name = "Start",
Color = 0x010000,
Type = TYPE_LINE,
Width = 1
},
{ Name = "Finish",
Color = 0x4fbf5a,
Type = TYPE_LINE,
Width = 1
},
}
}
function Init()
return #Settings.line
end
function OnCalculate()
return Settings.Start, Settings.Finish
end
жаль только линии на графике нельзя таскать мышкой - не помешало бы в квике наличие идентификатора для линий.
да и наклонные линии были бы кстати.
Получите: www.bot4sale.ru/.../indikator-trendovoj-linii.html
Это означает, что у вас в операционной системе отсутствует библиотека cdosys.dll
Кто ее удалил и зачем - мне неведомо...
.
Например. При соблюдении условия A>B я рассчитываю Ценусрабатывани я1, Таргет1 и Стоплосс1.
.
Эти данные рассчитываются в поле Description, а также рассылаются полями Email и Message. При наступлении следующего срабатывания также будут рассчитаны Ценасрабатывани я2, Таргет2 и Стоплосс2, так вот хотелось бы иметь возможность сравнить и посчитать разницу между этими значениями или между собой но из разных условий срабатывания. Вычесть/сложить ценасрабатывани я1 и цена срабатывания2, вычесть/сложить таргет1 и таргет2, вычесть сложить ценасрабатывани я1 и стоплосс2.
.
Можно ли сделать несколько таких глобальных переменных, чтобы при срабатывании условия после расчета необходимых значений, данные значения записывались/со хранялись бы в этих глобальных переменных ячейках и накапливались бы исключительно до следующего срабатывания, пока новое условие срабатывания не создаст новые значения и не обновит глобальные переменные.
Если включить скрипт Alert.lua в окне включения скриптов в Quik и не выключать, то при каждом выключении/вклю чении Quik скрипт должен автоматически запускаться. Это не происходит когда истекла 24-часовая аутентификация. Т.е. я включаю Quik, загружается интерфейс Quik, отрисовываются графики с предыдущими значениями (до того момента когда Quik был выключен), вижу что окно Alerter отсутствует, появляется стандартное окно ввода временного смс-пароля Quik. Ввожу пароль, графики обновляются, а окно Alerter так и не появляется. (В настройках Quik у меня установлен запрос только текущих данных по текущим открытым таблицам). Приходится запускать Alert.lua вручную. Баг воспроизвёлся примерно 11 раз за последние 14 истекших 24-часовых аутентификаций
С другими подключенными скриптами такого бага нет, т.е. "отваливается" только Alerter
Ситуация похожа на то, что описал пользователь Николай Камынин с форума forum.quik.ru/forum10/topic475/ а именно:
Цитирую DigitService:
Также в этом форуме другие пользователи отмечали в качестве возможной причины использование SetTableNotific ationCallback в скрипте. Я не знаю имеет ли это отношение к этой проблеме.
Насколько я понимаю LUA, на котором написан Alerter, довольно гибкий язык, и поэтому в нем можно делать проверки запрошенных данных и скорее всего "усыплять" скрипт пока эти данные не будут получены (если причина связана с этим). Можно ли доработать Alerter таким образом, чтобы в моменты истекшей 24-часовой аутентификации он не "вылетал"?
Проблема неготовности данных очевидна и алертером отслеживается. Если бы дело было в некорректной обработке таких данных, Вы бы видели в окне доступных Lua скриптов диагностику о возникшей ошибке. Как понимаю, у вас этой диагностики нет.
Касаемо SetTableNotific ationRequest. Эта функция конечно же используется в Алертере. У меня нет информации о ее особеностях. Если есть пруф (не фантазии, а проверенная информация) - пожалуйста дайте ее.
Или это отправка почты на шлюз?
1. Данное окно отображает диагностическую информацию только с момента своего открытия
2. Проблема возникает сразу после включения Quik. А окно Lua скриптов, сразу после включения Quik выключено
Исходя из этих двух пунктов мне кажется невозможным увидеть диагностику этой ошибки в окне Lua скриптов.
Хочу дополнить баг-репорт дополнительной информацией. Ниже пошаговое включение Quik "с" и "без" 24-часовой аутентификацией.
Включение Quik "без" 24-часовой аутентификации:
1. Запускаю info.exe
2. Отрисовывается пустое главное окно Quik
3. В окне Quik отрисовываются пустые окна графиков, таблиц и окно алертера (т.н. "остовы")
4. В окнах графиков, таблиц и окна алертера отрисовываются соответствующие типы устаревших данных с диска
5. Появляется окно ввода логина/пароля
6. Срабатывает первое уведомление от алертера
7. Ввожу логин/пароль и нажимаю "OK"
8. В окнах графиков и таблиц перерисовываютс я соответствующие типы данных с учетом скачанных (последних)
Включение Quik "с" 24-часовой аутентификацией:
1. Запускаю info.exe
2. Отрисовывается пустое главное окно Quik
3. В окне Quik отрисовываются пустые окна графиков и таблиц
4. В окнах графиков и таблиц отрисовываются соответствующие типы устаревших данных с диска
5. Появляется окно ввода логина/пароля
6. Ввожу логин/пароль и нажимаю "OK"
7. Появляется окно ввода пароля 24-часовой аутентификации
8. Ввожу пароль и нажимаю "OK"
9. В окнах графиков и таблиц перерисовываютс я соответствующие типы данных с учетом скачанных (последних)
Возможно последовательно сть где-то нарушена, потому что пишу по памяти. Если надо подтвердить, готов перепроверить последовательно сть использовав видео запись.
Как видно из сравнения окно алертера появляется на третьем шаге когда идёт запуск "без" 24-часовой аутентификации, а "с" 24-часовой аутентификацией на третьем шаге его нет. Т.е. баг, как мне кажется, больше связан с 24-часовой аутентификацией , а не с некорректной обработкой данных.
Это маленькое окошко похожее на окно ввода логина/пароля, но только содержащее поле для ввода пароля. Оно появляется если я подключаюсь к своему брокеру и прошло 24 часа с момента последней такой аутентификации. Когда оно появляется, значит мне брокер выслал смс с временным паролем, которое я и должен ввести в это окошко. Разве не у всех двухфакторная аутентификация стоит по умолчанию?
Если без этой двухфакторной авторизации все нормально, а с ней нет - причина очевидна.
Из луа скрипта что-либо узнать про тип авторизации невозможно. Вероятно, как-то проблему двойной авторизации обойти можно, но у меня нет возможности поэкпериментиро вать
В настройках алертера есть параметр "TIMEOUT", который определяет частоту обновления скрипта. Можно добавить рядом параметр, например, DELAYEDSTART, который позволит в секундах задавать задержку между инициализацией скрипта (когда Quik его инициализирует) и фактическим стартом работы (когда скрипт начнёт работать), установленную по умолчанию в 0. Так, я думаю, я и те, кто использует подобную систему аутентификации смогут просто задать это значение, например, в 30 и тем самым успеть обойти эту проблему. Но эта задержка не должна остановить весь Quik. Можно так сделать?
Пользователь сам будет устанавливать это значение, отличным от нуля (по умолчанию), если ему это надо. Это не решение проблемы в целом, но я действительно запускаю скрипт алертера каждые 24 часа по новой, серьёзно уже набил в этом деле руку, хорошо прокачал бицепсы и подтянул нижние трицепсы, и уже готов откалибровать под себя переменную этой задержки.
У этой функции есть и другие предназначения. Простой пример: если делать алерт на обрыв подключения к серверу, то оно всегда срабатывает при включении Quik, потому что алертер запускается раньше, чем устанавливается соединение с сервером брокера. И эта задержка помогла бы и эту проблему решить. Конечно, может быть это не у всех, но у меня так.
Михаил, иногда Алертер после запуска Квика не включен и окно Алертера отсутствует на том месте где оно было расположено. После включения вручную через меню окно Алертера почему то может открыться на любой вкладке Квика, причем поля Дескрипшн в окне Алертера могут быть красного цвета. Это сохраняется вплоть до тех пор, пока не выключу-включу Алертер снова, либо как альтернатива пока не зайду-выйду в файл настроек Алертер.ини . После этого окно Алертера выглядит нормально и располагаю его на должное место где оно и было. С чем может это быть связано и связано ли это с той причиной, о которой написал Багфайндер? Может ли Алертер запускаться раньше чем получил новые данные утром из за чего и нарушается какой то процесс в программе? Никаких аутентификаций 24 часовых у меня нет.
Тоже самое, что и у меня.
То предложение, которое я описал выше с задержкой запуска алертера мне кажется должно исправить этот баг. Идея немножко изменилась. Вместо установки задержки в секундах, завершать задержку запуска алертера в тот момент когда установилось соединение с сервером.
Причина проста: алертер (у меня) вылетает только в промежутке времени между включением Quik и установлением соединения. Вылетает он потому что делает что-то не то. В этом промежутке времени он не нужен. Поэтому пускай ничего не делает.
Пошагово:
1. В alert.ini добавить переменную, например, DELAYEDSTART=0
2. Если пользователь меняет "0" на "1",то:
3. При запуске алертер работает в "холостую", проверяя установлено ли соединение с сервером, например, каждые пол-секунды или секунду
4. Если соединение установлено, начинает работать как обычно
5. Если после этого соединение прервётся или будет отключено, "холостой режим" включать повторно конечно не надо.
DigitService,
попробуй сделать следующую штуку, которую я сейчас тестирую. Включи Quik и проверь, что окно алертера на месте и всё с ним нормально. Выключи Quik. Установи файлу "scripts.dat", который находится в папке Quik, аттрибут "только для чтения" (правой кнопкой мышки по файлу>свойства> галочка "только для чтения"). В этом файле хранятся пути на все скрипты, которые мы добавили в Quik и для каждого указано значение включать ли их при включении Quik (т.е. автозапуск). Когда скрипт вылетает, то Quik меняет параметр автозапуска на "выключено". Аттрибут "только для чтения" не даст это сделать. Поэтому когда алертер при очередном включении Quik не запустится на старте, то можно будет просто выключить Quik и включить обратно (2 клика вместо 4, чтобы включить скрипт в окне запуска скриптов).
Ну или воспользоваться стандартными сообщениями QUIK, в которых в истории остаётся в том числе, название alerta, а так же время его срабатывания..
Михаил, скажите, пожалуйста, возможно-ли получить номер фрактала в индикаторе fractals и номера линий в индикаторе price channel (думаю верхняя=2, нижняя=0)? для вставки в алертер. Мой мозг уже сломался на поиске этой инфы, скажите, если Вам не трудно. спс!
Открываете параметры Настройку) индикатора и смотрите линии. Первая линия имеет номер 0, вторая 1, третья- 2 и т.д.
Мне помнится, что индикатор Fractals, идущий в составе quik, имеет 2 линии. Верхние фракталы идут по полю high, нижние фракталы по полю low.
Также имейте ввиду, что фракталы отрисовываются "задним числом"
Скрипт на экране сортирует секции по алфавиту
?:0: attempt to index upvalue '?' (a nil value)
что можно сделать?
На ней ничего подобного я получить не смог.
Если у вас есть скайп, тимвьювер или что-то подобное, было бы неплохо посмотреть на ситуацию живьём
Но у меня например из квика не обновляется выше 7.0.4.10 и соответственно не получается приобщиться..
Если эта настройка включена, то при остановке скрипта он убирает все метки, которые были поставлены В ТЕКУЩЕМ СЕАНСЕ работы скрипта.
Что было раньше - ему неизвестно. Кем и когда были поставлены метки до старта текущего сеанса работы скрипта - ему неизвестно. Как и то, нужны ли эти метки пользователю или нет.
Ничто не мешает вам нажать правую кнопку мышки на графике и удалить вообще все метки
CONDITION = {_rsi_} < 30
SOUND = Alert.wav
Ни какой реакции от quika нет.
В таблице Алертера реакция будет в любом случае - там появится секция с вашим условием и ее статус.
Статус может быть Да, Нет или Ошибка. Ошибка появляется, если вы что-то неправильно настроили.
Возможно, у вас слишком старая версия терминала, возможно, вы допустили ошибку в настройках параметров.
В сообщениях терминала или лог-файле вы найдете ответ на свой вопрос.
module 'bot4sale' not found:
no field package.preload['bot4sale']
no file '.\bot4sale.lua'
no file 'C:\QUIK_KA\lua\bot4sale.lua'
no file 'C:\QUIK_KA\lua\bot4sale\init.lua'
no file 'C:\QUIK_KA\bot4sale.lua'
no file 'C:\QUIK_KA\bot4sale\init.lua'
no file 'C:\Alerter\bot4sale.dll'
no file 'C:\QUIK_KA\bot 4sale.dll'
no file '.\bot4sale.dll'
no file 'C:\QUIK_KA\bot 4sale.dll'
Но после устанвоки DLL происходит какая то мистика :)
Скрипт требует Квик версии 7.1.0.0 или ваше. Но у меня стоит последняя версия 7.0.4.10 и больше обновления на сервере - нет. :)
Требуйте от брокера более свежие версии или просто возьмите последнюю с сайта арки.
И да прибудет с вами Сила!
arqatech.com/ru/support/files/quik-workstation/
Это оно?
Просто чтото стремно оттуда устанавливать, а что если полетят какие-нибудь текущие брокерские настройки? не хочется лишнего гемора потом.
А может есть ссылочка на предыдущую версию Алертера?
Заинсталил всё в отдельный каталог, предварительно сохранив в старом квике файл настроек. Подтянул его в новой версии, переписал два файла ключей + настроил соединение. Ну там тему на стандартную поменять + пару личных предпочтений в настройках и всё заработало как и былО!
Алертер настроил на свой индикатор, всё работает, надо только внимательно ознакомиться с примерами в ini файле.
Михаилу респект.
Поддержал немного топ-менеджеров Леман бразерс, жду пароль :)
А пароль вам выслан.
И подскажите пожалуйста можно ли приобрести его в двух версиях старой, которая идет на версии Квика 7.0.4.10 и какой нибудь более новой версии, на тот случай еслик Брокер все таки решит обновить Квик ?
Если серьёзно - я не ставлю ценник - руководствуйтес ь собственным пониманием справедливости.
Касаемо версий. Я не храню архив версий. Та, что на сайте и есть единственная и неповторимая.
Раз так - немножко подождите и брокер обновит версию у себя.
Идентификатор указывается в свойствах графика. Выше в комментариях есть картинка по этому поводу.
условия задаются в конфигурационно м файле. смотрите в нем готовые примеры
Можно ли сделать алёрт на появление в стакане заявок лимитки >= определённой величины?
Текущая версия алертера берет информацию с графиков. Поэтому анализировать стакан он не умеет.
Обработку стакана у меня уже просили, она лежит в списке TODO. Правда, лежит у же давно....
Придется чуточку почитать документацию на луа и все получится. Например:
[Текущий остаток по денежным средствам]
; Параметры для функции getMoneyEx берем из таблицы лимитов по денежным средствам
; Порядок входных параметров: Фирма,КодКлиента,Группа,Валюта,ВидЛимита
; Столбец, значение которого нужно получить, кодируется так:
; openbal Входящий остаток по деньгам
; openlimit Входящий лимит по деньгам
; currentbal Текущий остаток по деньгам
; currentlimit Текущий лимит по деньгам
; locked Заблокированное количество
; locked_value_co ef Стоимость активов в заявках на покупку немаржинальных бумаг
; locked_margin_v alue Стоимость активов в заявках на покупку маржинальных бумаг
; leverage Плечо
CONDITION = getMoneyEx("NC0 011100000","qte st078","EQTV"," SUR",0).current bal > 100000
DESCRIPTION = Денег больше чем 100 000
MESSAGE = Денег больше чем 100 000
Аналогично можно настроить уведомления на прибыль
[Текущая прибыль]
CONDITION = tonumber(getPor tfolioInfoEx("N C0011100000","q test078",0).pro fit_loss) > 1000
DESCRIPTION = Прибыль больше 1000
MESSAGE = Прибыль больше 1000
и так далее для любых параметров, которые вы видите в таблицах терминала.
Таки образом можно получать любые доступные параметры из терминала,но необходимо немного попрограммирова ть.
Отправитель - Zabelin Maksim
код:
TO = vtrdr
FROM = vtrdr
SUBJECT = Сообщение Alerter
SMTP = smtp.mail.ru
USERNAME = vtrdr
PASSWORD =хххххххххххх
PORT = 25
SMTPAUTHENTICAT E = 1
SMTPUSESSL = 1 SMTPCONNECTIONT IMEOUT = 30 SMTPSENDUSING = 2
[chanell]
CONDITION = {5mb,1,close} > {5mtb}
MESSAGE = пробит
SOUND = Alert.wav
EMAIL = пробит
Утилита отправки почты ошибок не содержит. При невозможности отправить почту она выдает на экран сообщение с кодом. Гугл по этому коду расскажет о проблеме.
При отправке почты в системном лотке должен кратковоеменно появиться значок отправки почты. Если сообщений несколько, таких значков может быть тоже несколько.
Проверьте, что у вас установлен нормальный антивирус, а не генно-модифицир ованное гуано.
Проверьте папку спам
Включите трассировку лога и посмотрите, запускается ли майлер.
Или просто ищите момент, где вы были невнимательны.
Извините.
Подскажите пожалуйста что делаю не правильно. Заполняю поля:
TO = alex-777-aleks
FROM = alex-777-aleks
SUBJECT = Сообщение Alerter // Заголовок письма
SMTP = smtp.mail.ru // Имя SMTP сервера
USERNAME = alex-777-aleks // Имя пользователя
PASSWORD = ******** // Пароль для SMTP (напишите здесь свой пароль)
PORT = 25 // SMTP порт (обычно 25) 465
SMTPAUTHENTICATE = 1 // SMTP аутентификация
SMTPUSESSL = 0 // Используется ли SSL (0 или 1)
SMTPCONNECTIONTIMEOUT = 30 // Таймаут для соединения
SMTPSENDUSING = 2
Майл агент запускается и чрез несколько секунд пишет:
Ошибка. Код: 8002009
Сервер отклонил один или несколько адресов получателей. Отклик сервера: 550 SMTP is availabel only with SSL or TSL connection enabeled.
В чём может быть причина? Заранее спасибо!
Ответ в полученной вами диагностике.
SMTP is availabel only with SSL or TSL connection enabeled
SMTP сервер mail.ru доступен только по SSL или TSL соединению.
Решение
SMTPUSESSL = 1 // Используется ли SSL (0 или 1)
На текущий момент это не предусмотрено.
В принципе сделать можно, но тут я обращаюсь ко всем заинтересованным.
В каждой сделке есть много разных параметров: цена, количество, сумма, торговый счет и другие.
если добавлять возможность отслеживания сделок, может потребоваться не только факт совершения самой сделки, но и получение какого-то набора параметров.
как бы вы видели такую возможность?
У Вас написан отличный журнал сделок. может быть можно построить график всех сделок не по инструменту, а по всему счету и, сравнивая с предыдущим значением отправлять сигнал.
Либо читать таблицу сделок и при появлении новой сделки
отправлять уведомление.
trade_account=get_value(get_item("TRADES", trade_i),"ACCOUNT")
Либо же косвенными методами, например отслеживать изменение "Суммы денежных остатков".
Как может выглядеть условие CONDITION, если иметь ввиду, что интересует не только сам факт появлении сделки,но и значения ее полей?
как могло бы выглядеть условие такого рода:
Произошла сделка по Сбербанку и количество купленных лотов больше 10?
как бы вы видели оформление такого условия?
Правила задания условий находятся в файле настроек alert.ini. Там же приведено множество примеров.
Внимательного прочтения первого и второго достаточно для запуска скрипта.
в п. 1 раздела ИСПОЛЬЗОВАНИЕ этой статьи написано:
Цитата: В том же пункте написано, куда нужно файлы поместить.
в предыдущем сообщении я вам написал про правила условий:
Цитата: Надеюсь, что больше у вас вопросов не возникнет.
читайте статью
Цитата: отправляет почту
CONDITION = {RTSVOL,0,Volum e} > 10000
Пишет что выражение должно иметь логический вид.
Где может быть ошибка?
Михаил, а где находится этот список TODO?
Касаемо стаканов - я пока не вижу какого-то великого смысла в добавлении этой фичи. Сможете привести две-три внятные задачи, которые нельзя решить существующим функционалом, но можно с использованием стаканов котировок?
Приводите реальные примеры задач. Сможете убедить - добавлю.
Возможно простой Volume не хуже справится.
В конце статьи в разделе СМ. ТАКЖЕ есть ссылка на Market Scaner
Приведите пример с инструментом SRZ6
Возможно, кто-то из гостей сайта захочет вам помочь.
У вас комплексы, или таким способом уходите от ответа?!...
Так как не нашел в ini файле даже упоминание о пунктах, попросил простой пример у автора. Такой же пример как с другими условиями, приведенными в ini файле - ни больше, ни меньше.
А в ответ такие выпады
Или может просто втюхать не вышло, и он не способен выдавать оповещения на таких условиях
У вас тут секта что ли, гавкаете на людей в унисон.
Для даунов может и распространяетс я версия где в инструкции присутствуют упоминания о пунктах...
Учи матчасть, опен минус клозе > 40... и это только в случае шорта(если ты конечно знаешь что это).... а чтоб и лонг работал, надо будет добавить некую математическую функцию из инструкции(это уже сам, если сумеешь)
и ни в коем случае не покупай у Михаила алертер, он наверно потом повесится от твоих вопросов))))
Уж не верится что столько неадекватов вдруг полезло целовать в засос своего кумира Мишу. Притом что инициатором такого дискуса был ты, Миша! Как тебя перекорежило то
И на будущее тебе, Миша, уровень развития человека определяется не знаниями программировани я. А вот цивилизованност ью общения отделить такое быдло как ты от адекватного человека вполне возможно!
О программировани и в файле ини даже не идёт речь.
Бесят таки диванные Васьки, но ничего, жизнь когда то научит как надо общаться с людьми.
Сними с себя напряжение, Wolt, и люди возможно к тебе потянутся
В терминале все настроено, да и сообщения стандартного оповещателя в quike выводится.
Простой пример:
[Разрыв связи с брокером]
CONDITION = isConnected() == 0
DESCRIPTION = Связь с брокером потеряна
MESSAGE = Связь с брокером потеряна
SOUND = Broker.wav
Звук проигрывает, текст информационной строки таблицы выводится, экранное сообщение не появляется.
Возможно, что экранное сообщение не появляется в силу настроек оповещений в терминале. Разрешите в настройках показывать сообщения на экране.
1. "Общие настройки" > "Сообщения" > "Оповещения" включено "Показать уведомления" и галочкой указано "Показать окно с исполненным оповещением".
2. "Общие настройки" > "Сообщения" > "Сообщения трейдера" включено "Показать уведомления".
Какие настройки еще могут не пропускать экранное сообщение?
создайте файл test.lua, содержащего такую строчку:
message("this is a simple test")
и запустите этот файл как скрипт в терминале quik.
если окошко не выскочило - звоните брокеру и добивайтесь с ним правильных настроек.
если окошко выскочило, тогда будем разбираться дальше.
Сохранил в Notepad++ строку: message("this is a simple test") в файл test.lua
Всвязи с большим количеством комментариев к этой статье была создана ветка на форуме bot4sale.ru/.../295-alerter.html#1183 для продолжения обсуждения Алертера.
Пожалуйста, пишите новые сообщения и вопросы на форуме. Все новые комментарии, написанные здесь, будут удалены автоматически.
Спасибо за понимание
RSS лента комментариев этой записи