Виртуальный СЛ/ТП от текущей цены

 

Попытался создать свой первый советник, который бы выставлял виртуальные ТП/СЛ на уже открытые рыночные ордера от цены в момент запуска советника (не от OrderOpenPrice). Что-то ничего не происходит при его запуске.

Если у кого-то есть время взглянуть, было бы здорово.

В идеале конечно можно бы добавить рисование линий, но пока не знаю как (наверное objectcreate), но пока это не принципиально.

Файлы:
 
if(a-TP*Point>=Ask)
у вас а это a должно быть ценой открытия ордера, который проверяете на условия закрытия, и нормализуйте данные при таком сравнении.
 
А зачем это во обще надо, виртуальный тр/sl?
 
DKeN:
у вас а это a должно быть ценой открытия ордера, который проверяете на условия закрытия, и нормализуйте данные при таком сравнении.
Прошу прощения, не совсем понял, зачем мне цена открытия ордера, если я хочу выставлять от цены на момент запуска советника.

2Alexey
Я пользовался нормальным скриптом west_modify, который выставляет реальные тп/сл. Проблема в том, что получаются значительные задержки при модификации нескольких ордеров. Например, я разлокирую позиции в момент сильного движения - при установке стопов для двух рыночных ордеров задержка составляет 150-200мс, то есть стопы за это время выставятся от разных цен. При вирт. стопах данные не передаются на сервера ДЦ, время должно быть меньше, остается только риск проскальзывания.
 
Terrari:
Прошу прощения, не совсем понял, зачем мне цена открытия ордера, если я хочу выставлять от цены на момент запуска советника.

2Alexey
Я пользовался нормальным скриптом west_modify, который выставляет реальные тп/сл. Проблема в том, что получаются значительные задержки при модификации нескольких ордеров. Например, я разлокирую позиции в момент сильного движения - при установке стопов для двух рыночных ордеров задержка составляет 150-200мс, то есть стопы за это время выставятся от разных цен. При вирт. стопах данные не передаются на сервера ДЦ, время должно быть меньше, остается только риск проскальзывания.
Тогда может лучше вообще стоп не ставить, а сразу закрывать?
 

А что Вы хотели видеть при запуске?  Виртуальный стоп не виден в терминале ни Вам ни брокеру (ответ Alexey). Я вставил отрисовку линий(они видны только Вам) в Ваш код. Но по Вашему алгоритму они движутся вместе с ценой. Исправил строку 42 одно предупреждение компилятора ушло. Устраните другие. Успехов. 

Файлы:
 
Yuri_Evseenkov:

А что Вы хотели видеть при запуске?  Виртуальный стоп не виден в терминале ни Вам ни брокеру (ответ Alexey). Я вставил отрисовку линий(они видны только Вам) в Ваш код. Но по Вашему алгоритму они движутся вместе с ценой. Исправил строку 42 одно предупреждение компилятора ушло. Устраните другие. Успехов. 

Спасибо! Визуализация процесса думаю мне поможет. В принципе я предполагал, что условие не исполняется. Буду думать, как заменить глобальную переменную.
 
Terrari:
Спасибо! Визуализация процесса думаю мне поможет. В принципе я предполагал, что условие не исполняется. Буду думать, как заменить глобальную переменную.
Пожалуйста. Для визуализации процесса рекомендую использовать оператор Print. Ещё нужно заменить Start() (функция устарела) на OnTick. 
 

С огромной благодарностью ко всем, кто отписался в этой теме, выкладываю получившийся советник. Может кому-то понадобится кроме меня)

Он, конечно, сырой, но выполняет то, для чего задумывался - выставляет виртуальные стопы/тейки для рыночных ордеров от цены на момент запуска советника.

Недостатки: рисует линии только для одного открытого ордера; если запущен на нескольких валютных парах, будет выдавать при закрытии ордера ошибку "Invalid price..." - тут скорее всего поможет нормализация.

Плюсы: это мой первый советник и он работает! - я доволен)

Со временем я его поправлю, но пока нет сил - на эти 10 строчек кода ушла почти неделя.

Файлы:
 

Да, код совсем сырой. Для корректной отрисовки линий нужно добавить проверку типа ордера Bay или Sell. Строки 52,54,55 не имеют смысла т.к при любом исходе программа переходит к следующей строке. Не устранены предупреждения компилятора

Рекомендую почитать учебник Ковалева по MQL4. Там очень наглядно описаны операторы. А также чаще пользоваться справочником. Тогда и времени на написание уйдет меньше.

С первым роботом Вас. Бутылкой шампанского (виртуальной) ему по монитору. Что бы плавал а не сливал.   

 
Alexey:
А зачем это во обще надо, виртуальный тр/sl?
Yuri_Evseenkov:

А что Вы хотели видеть при запуске?  Виртуальный стоп не виден в терминале ни Вам ни брокеру (ответ Alexey). Я вставил отрисовку линий(они видны только Вам) в Ваш код. Но по Вашему алгоритму они движутся вместе с ценой. Исправил строку 42 одно предупреждение компилятора ушло. Устраните другие. Успехов. 

Да перестаньте вы бредить, что брокер охотится за вашими стопами! За совокупной позицией по стопу - еще поверю. За вашими лично - нет. 

Виртуальный стоп позволяет реализовать функционал отработки стопа при расширении спреда на новостях и в роловер. Напрмер выставили вы стоп в 100 пунктов для ордера в БАЙ . В роловер его просто собьет расширение спреда. Но мы то знаем, что спред не нормальный и продержится таким максимум  полчаса. Можно просто запретить торговлю в этот момент. Можно отсчитывать стоп от
(Ask - нужное количество пунктов) , 10 например. Можно как то еще.