Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Начни зарабатывать с помощью Маркета. Опубликуй продукт!
Terrari
44
Terrari 2015.03.09 22:10 

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

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

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

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

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

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

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

Файлы:
Terrari
44
Terrari 2015.03.10 08:53  
Yuri_Evseenkov:

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

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

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

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

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

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

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

Файлы:
Yuri Evseenkov
2298
Yuri Evseenkov 2015.03.13 11:44  

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

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

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

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

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

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

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

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