Дык знаю...
уж не первый год МТ мучаю. :)))
Вот этим скриптом. Исполнение по маркету.
//--- 0-СЕЛЛ-ММС2.mq4 | #property show_inputs extern double Lots=0.01; extern int StopLoss=10; extern int TakeProfit=0; int start() { double loss=0, profit=0; if (StopLoss>0) loss=Bid+StopLoss*Point; if (TakeProfit>0) profit=Bid-TakeProfit*Point; int ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0); if (ticket==-1) Print ("Ошибка = ",GetLastError()); else { if (!OrderSelect(ticket,SELECT_BY_TICKET)) Print ("Ошибка = ",GetLastError()); else if (!OrderModify(ticket,OrderOpenPrice(),loss,profit,0)) Print ("Ошибка = ",GetLastError()); } return(0); } //-----------------------------------------------------------+
Но что более озадачило, так это то, что журнал выписывал прям с терминала,
а в логах этого не нашел сейчас...
Вот, снова воспроизвёл ситуацию...
Для чего в скрипте что выше помелял + с - как и описывал ещё выше.
Билд 211 от 15.10.2007г.
Спасибо за скрипт. Я вижу следующее развитие событий:
1. OrderSend отрабатывает без ошибок, о чём и написано в журнале "open ... ok"
2. OrderSelect отрабатывает без ошибок.
3. OrderModify вызывает ошибку 130 (неверные стопы), о чём Вы же и выводите сообщение в журнал "Ошибка = 130"
Вроде бы всё логично, так и должно было быть.
Да мне особо не мешает...
Просто буду учитывать в советнике обработку ошибки.
Которая насколько понял по логике остановит попытку открыться.
Основной же причиной появления темы банальное стечение обстоятельств...
У меня вот господин случай, а у одного клента одного ДЦ через раз она вылазит, 130-я...
Причем говорит только на одной паре, и стопы далеко стоят, чуть ли на 100 пипок от открытия.
К тому же почему то был я уверен что наличие ошибки не позволит открыться.
Теперь же посмотрев повнимательней ошибка возникает на стадии выставления стопов.
Ещё точнее НЕвыставлении оных...
Спасибо за внимание !
Заметил один артефакт. Правда на исполнении по маркету.
(на инстанте не проверял... )
Для бай: / правильный вариант /
if (StopLoss>0) loss=Ask-StopLoss*Point;
if (TakeProfit>0) profit=Ask+TakeProfit*Point;
Простым копипастом создал скрипт для селл.
И... забыл про пару знаков...
if (StopLoss>0) loss=Bid - StopLoss*Point;
if (TakeProfit>0) profit=Bid + TakeProfit*Point;
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: removed
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: uninit reason 0
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: Ошибка = 130
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: open #25911 sell 0.01 EURUSD at 1.4734 ok
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15 inputs: Lots=0.01; StopLoss=10; TakeProfit=0;
Ошибка! однако поза была таки открыта...
в обработке ошибок, возможно проблема прояснится
При установке стопов в ордере, открытом по маркету, необходимо учитывать не только расстояние до Bid или Ask, но и расстояние до цены открытия ордера (OrderOpenPrice), которая может сильно отличаться от Bid или Ask (исполнение по маркету, однако!)
Возможно...
Однако непонятны причины такого вот "отказника" ;)
Что за ерунда с CHFJPY? Советник пытается выставить Sell по CHFJPY (Bid=98.12,sl=0, tp=96.09), вылетает ошибка 130: Как следует из номера ошибки – неправильные стопы.
На демо, по разным парам, в т.ч. по CHFJPY, работает. На реале, по другим валютам, тоже работает. Проблема только с CHFJPY.
Торговые условия таковы, что даже впринципе не столь важны эти плюсы и минусы.
- уровень стопов 0
- фриз 0
- спреды от 1 пипа на мажорах
Иногда, и очень редко на некоторых парах вводится временно ~ уровень стопов: спред * 2,5
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
(на инстанте не проверял... )
Для бай: / правильный вариант /
if (StopLoss>0) loss=Ask-StopLoss*Point;
if (TakeProfit>0) profit=Ask+TakeProfit*Point;
Простым копипастом создал скрипт для селл.
И... забыл про пару знаков...
if (StopLoss>0) loss=Bid - StopLoss*Point;
if (TakeProfit>0) profit=Bid + TakeProfit*Point;
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: removed
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: uninit reason 0
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: Ошибка = 130
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15: open #25911 sell 0.01 EURUSD at 1.4734 ok
2008.02.21 17:07:17 0-СЕЛЛ-ММС2 EURUSD,M15 inputs: Lots=0.01; StopLoss=10; TakeProfit=0;
Ошибка! однако поза была таки открыта...