Периодически получаю ошибку 130 - страница 2

 
Force_Majeure:
Я прочитал, спасибо. Требованиям в Требования и ограничения при проведении торговых операций мой код не противоречит. Из обсуждения Некорректный возврат ошибки №130 при установке ордера я могу сделать вывод что для устранения ошибки нужно увеличивать слипаж и все равно, полностью ее избыть не удастся. Если я чего-то не понял, поясните пожалуйста подробнее.
Но ведь все прямо написано! Пусть мы хотим открыть ордер Buy по EURUSD, входные данные такие:
StopLevel = 5 пунктов
Spread = 2 пункта
Ask =1.4050
Bid =1.4048 (текущая цена для закрытия позиций Buy)

Отправляем приказ на покупку с уровнем StopLoss на допустимой границе по StopLevel: StopLoss = Bid - StopLevel*Point = 1.4048 - 0.0005=1.4043. Все в пределах правил, проскальзывание также выставили в ордере Slippage=3 (пункта).
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,Slippage,Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,...);
К моменту поступления торгового приказа на обработку серверу текущая цена Ask изменилась и стала равна 1.4049, отклонение в 1 пункт от заявленной цены открытия укладывается в заложенное проскальзывание (Slippage=3 пункта), но текущий уровень StopLoss=1.4043 теперь отличается от текущей корректной цены закрытия Bid=1.4047 всего на (1.4047-1.4043)=4 пункта, что меньше требуемых 5 (StopLevel = 5). И торговый сервер отвергает приказ на покупку.
 
Force_Majeure:
Из обсуждения Некорректный возврат ошибки №130 при установке ордера я могу сделать вывод что для устранения ошибки нужно увеличивать слипаж и все равно, полностью ее избыть не удастся. Если я чего-то не понял, поясните пожалуйста подробнее.

Никогда не задумывался, а разве слипаж имеет отношение к SL/TP?

З.Ы. Rosh ответил раньше чем я спросил)

 
Мучает та же проблема. Получается решение одно - увеличение SL? Было бы идеально, если бы когда цена сдивнулась на сервере в приделах слипажа, то и SL подтянулся бы вслед за ценой.
 

+1

Проблеме уже более полутора лет, и за это время ни от кого из официальных лиц так и поступило ни одного комментария по этой теме.


Ставлю

while(OrderModify(tickets[4],lastask-0.0042,lastask-0.0072,lastask-0.22,0,0)!=true) {}

т.е. пока не модифицирует, не успокоится. Всё равно 130 вылезает.


Что-то ветка замолка. Неужто все нашли решение проблемы?

 
Afonya:

+1

Проблеме уже более полутора лет, и за это время ни от кого из официальных лиц так и поступило ни одного комментария по этой теме.


Ставлю

while(OrderModify(tickets[4],lastask-0.0042,lastask-0.0072,lastask-0.22,0,0)!=true) {}

т.е. пока не модифицирует, не успокоится. Всё равно 130 вылезает.


Что-то ветка замолка. Неужто все нашли решение проблемы?


Это зависит только от одного, для каких целей используется стоплоссс. если как часть ТС, то его надо увеличивать. Если как предохранительный клапан, то в размерах оптимального риска. А так за пипсом не угонишься.
 
Вот: https://forum.mql4.com/ru/10626
 
Afonya:

Ставлю

while(OrderModify(tickets[4],lastask-0.0042,lastask-0.0072,lastask-0.22,0,0)!=true) {}

т.е. пока не модифицирует, не успокоится. Всё равно 130 вылезает.

Ужас тихий... Вот именно про такое мы постоянно и прудупреждаем. Автор тупо зациклил скрипт на торговлю по устаревшим ценам.

Стоит ли спрашивать про некие рефреш функции?
 
Force_Majeure:
Rosh:

Я же писал уже вторым постом в этой ветке:
Rosh:
Вы пытаетесь открыть ордер на грани дозволенного, поэтому иногда это удается (если текушая цена Ask не изменилась к моменту обработки приказа сервером), но иногда отфутболивается (если текущая в момент обработки ордера цена Ask отстоит от заявленного уровня StopLoss ближе чем на StopLevel пунктов ). Почитайте ветку Некорректный возврат ошибки №130 при установке ордера, погоняйте тот скрипт. Есть об этом информация в учебнике - Требования и ограничения при проведении торговых операций

Я прочитал, спасибо. Требованиям в Требования и ограничения при проведении торговых операций мой код не противоречит. Из обсуждения Некорректный возврат ошибки №130 при установке ордера я могу сделать вывод что для устранения ошибки нужно увеличивать слипаж и все равно, полностью ее избыть не удастся. Если я чего-то не понял, поясните пожалуйста подробнее.

В вашем коде есть маленький косяк
добавьте, в начале функции


         if ( RefreshRates() == false )
         {
            Print(" данные не обновленны " );
            // тут принять решение что делать т к смысла кидаться в торговлю особого нет
         }

----
код то может не противоречит

а вот подаваемые на вход данные вполне могут вызвать ошибку 130
типичная проблема пипсовых стратегий
поставьте ТП = 150п стоп 100п и у Вас проблема возникнет разве что на зависаниях
и новостях ...