Накидал, скопировал, собрал скрипт. Суть: скрипт выставляет две отложки на бай и селл и при срабатывании одной из отложек, должен тралить ее. Но почему то не тралит. Подскажите пожалуйста что не так.
При установке ордеров нужно указать Magic Number. Или же при трейлинге уберите проверку на равенство заданному Magic Number.
Накидал, скопировал, собрал скрипт. Суть: скрипт выставляет две отложки на бай и селл и при срабатывании одной из отложек, должен тралить ее. Но почему то не тралит. Подскажите пожалуйста что не так.
зачем...
При установке ордеров нужно указать Magic Number. Или же при трейлинге уберите проверку на равенство заданному Magic Number.
Это у вас так
Выставляются ордера. Срабатывает какой нибудь отложник и сразу модифицирует его на указанный Стоп Лос. Но потом цена идет но стоп лосс не модифицируется. Ошибок в журнале по модификации ордера нету.
Еще раз: код трейлинга рабочий (специально проверил). Проблема в отсутствии MagicNumber при установке ордеров. То есть нужно сделать либо так:
int buy = OrderSend(NULL,OP_BUYSTOP, lot, Ask+ras*Point, 3,0,0,NULL, Magic,0,0); int sell = OrderSend(NULL,OP_SELLSTOP, lot, Bid-ras*Point, 3,0,0,NULL, Magic,0,0);
либо вот так:
for (int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol()) { if(OrderType()== OP_BUY) { if(Bid-OrderOpenPrice()>Trailing*Point|| OrderStopLoss()==0) { if(OrderStopLoss()<Bid-(Trailing+TrailingStep)*Point||OrderStopLoss()==0) bool isMod = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-Trailing*Point, Digits),0 ,0); } } if(OrderType()== OP_SELL) { if(OrderOpenPrice()-Ask>Trailing*Point||OrderStopLoss()==0) { if(OrderStopLoss()>Ask+(TrailingStep+Trailing)*Point||OrderStopLoss()==0) bool isMod = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+Trailing*Point, Digits), 0, 0); } } } } }
Возможно, еще проблема в величине значений Trailing и TrailigStep. В сових экспериментах я поставил их равными 300 и 5 соответственно.
Еще раз: код трейлинга рабочий (специально проверил). Проблема в отсутствии MagicNumber при установке ордеров. То есть нужно сделать либо так:
либо вот так:
Возможно, еще проблема в величине значений Trailing и TrailigStep. В сових экспериментах я поставил их равными 300 и 5 соответственно.
спасибо большое. проблема была в велечине значений.
Добавленно: Вру. Проблема не знаю в чем. Перенес код из скрипта и все заработало.
спасибо большое. проблема была в велечине значений.
Добавленно: Вру. Проблема не знаю в чем. Перенес код из скрипта и все заработало.
Скрипт у Вас зацикленный, но неправильно зациклен.
Во-первых, нельзя делать так:
while (true) { ... }
Правильно так:
while (!IsStopped()) { ... }
Во-вторых, следует делать хотя бы минимальную паузу между итерациями (хотя бы 1 мсек).
В-третьих, с появлением в MQL4 таймера необходимость использования зацикленных программ отпала. Теперь достаточно садить подобные события (если нужно обрабатывать события, происходящие на других символах) на таймер в советнике. Для контроля текущего символа обычно достаточно события OnTick().
Скрипт у Вас зацикленный, но неправильно зациклен.
Во-первых, нельзя делать так:
Правильно так:
Во-вторых, следует делать хотя бы минимальную паузу между итерациями (хотя бы 1 мсек).
В-третьих, с появлением в MQL4 таймера необходимость использования зацикленных программ отпала. Теперь достаточно садить подобные события (если нужно обрабатывать события, происходящие на других символах) на таймер в советнике. Для контроля текущего символа обычно достаточно события OnTick().
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Накидал, скопировал, собрал скрипт. Суть: скрипт выставляет две отложки на бай и селл и при срабатывании одной из отложек, должен тралить ее. Но почему то не тралит. Подскажите пожалуйста что не так.