Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Terrari
44
Terrari  

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

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

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

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

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

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

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

Файлы:
Terrari
44
Terrari  
Yuri_Evseenkov:

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

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

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

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

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

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

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

Файлы:
Yuri Evseenkov
2324
Yuri Evseenkov  

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

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

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

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

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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий