Ordermodify error 130 что это

MQL для тебя

MQL для чайников, программирование на MQL4, MQL5

Вопрос №5 — «Коды ошибок при тестировании советника»

Что значит 2010.02.01 17:00 MyExpert GBPUSD,M15: OrderModify error 130
почему обычно эта ошибка возникает?

Очень много подобных вопросов мне приходит. Поэтому публикую таблицу кодов ошибок. Например посмотрев вышеописанную ошибку error 130 становится понятно, что функция OrderModify пытается изменить стоп-лосс или тейк-профит слишком близко к текущей цене.

Коды ошибок

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.

Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:

Значение Описание
Нет ошибки
1 Нет ошибки, но результат неизвестен
2 Общая ошибка
3 Неправильные параметры
4 Торговый сервер занят
5 Старая версия клиентского терминала
6 Нет связи с торговым сервером
7 Недостаточно прав
8 Слишком частые запросы
9 Недопустимая операция нарушающая функционирование сервера
64 Счет заблокирован
65 Неправильный номер счета
128 Истек срок ожидания совершения сделки
129 Неправильная цена
130 Неправильные стопы
131 Неправильный объем
132 Рынок закрыт
133 Торговля запрещена
134 Недостаточно денег для совершения операции
135 Цена изменилась
136 Нет цен
137 Брокер занят
138 Новые цены
139 Ордер заблокирован и уже обрабатывается
140 Разрешена только покупка
141 Слишком много запросов
145 Модификация запрещена, так как ордер слишком близок к рынку
146 Подсистема торговли занята
147 Использование даты истечения ордера запрещено брокером
148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.

Коды ошибок выполнения MQL4 программы:

Источник

Модификация ордера ошибка 130

Всем привет! Советник работает хорошо, но бывает выскакивает ошибка 130 , а бывает не выставляет ТП, бывает очень редко, в основном на движухе и то не всегда. Но это очень напрягает. Вот кусок кода и модификация ордера. NumberOfTry=5 , то есть всего 5 попыток. Понимаю, что цена за это время пока он крутит эти 5 попыток цикле уходит дальше чем ТП+Проскальзывание и потому вылетает эта ошибка 130. Но как сделать, чтобы он открывал по цене какая есть? Хотя тоже понимаю, что цена может рвануть сильно и никакое проскальзывание не спасёт и будет невозможно выставить ТП даже по новой цене или это не так? В общем, помогите опытные товарищи, советом как поступить?!

READ  Mysql you have an error in your sql syntax near

Всем привет! Советник работает хорошо, но бывает выскакивает ошибка 130 , а бывает не выставляет ТП, бывает очень редко, в основном на движухе и то не всегда. Но это очень напрягает. Вот кусок кода и модификация ордера. NumberOfTry=5 , то есть всего 5 попыток. Понимаю, что цена за это время пока он крутит эти 5 попыток цикле уходит дальше чем ТП+Проскальзывание и потому вылетает эта ошибка 130. Но как сделать, чтобы он открывал по цене какая есть? Хотя тоже понимаю, что цена может рвануть сильно и никакое проскальзывание не спасёт и будет невозможно выставить ТП даже по новой цене или это не так? В общем, помогите опытные товарищи, советом как поступить?!

Добрый день.
замените Аsк на MarketInfo(_Symbol,MODE_ASK)
в большинстве случаев помогает.

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

Andrey Kisselyov :
Добрый день.
замените Аsк на MarketInfo(_Symbol,MODE_ASK)
в большинстве случаев помогает.

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

Спасибо буду пробовать. Вот что получилось))

Источник

OrderModify и error 130 — моделирование по ценам открытия

Позиция на покупку открывается по Аску, а закрывается по Биду. Поэтому прежде всего нужно знать, что при подтягивании стопа нужно работать с ценой бид.
Далее. Если, как Вы утверждаете, подтягивание происходит слишком близко к рынку, то сама логика ситуации подсказывает Вам решение — сначала проверить цену на предмет близости, потом подтягивать, если близость допустимая.

Позиция на покупку открывается по Аску, а закрывается по Биду. Поэтому прежде всего нужно знать, что при подтягивании стопа нужно работать с ценой бид.
Далее. Если, как Вы утверждаете, подтягивание происходит слишком близко к рынку, то сама логика ситуации подсказывает Вам решение — сначала проверить цену на предмет близости, потом подтягивать, если близость допустимая.

READ  Smtp error rcpt to 550 recipient unknown

Это правильно, если тестировать по тикам (методы «все тики» или «контрольные точки»). А как быть, если тестирование осуществляется «по ценам открытия». Как я уже упомянул, 1,3508 — это цена открытия текущего бара.
Как здесь написано, произойдет сравнение, SL не подтянется, правильно. Теперь следующий запуск функции start() произойдет ЛИШЬ на цене открытия следующего бара (так как метод моделирования по ценам открытия). И SL не будет подтянут. А само тело текущего бара запросто может пробить уровень SL, который не был выставлен.

Источник

Error 130, invalid stops

Подскажите пожалуйста, где может быть ошибка у меня в коде.

Я пытаюсь открыть позицию, но получаю ошибку 130 — invalid stops.

iTicket = OrderSend(Symbol(), OP_BUY, e_dLotSize, NormalizeDouble(Ask, Digits), 10, 0.0,
NormalizeDouble(dMABidMain + dSpreadCurr * e_dTakeProfitInSpreads, Digits));
if (iTicket > 0)
<
Print(g_strInf, «Opened new BUY positions #», iTicket,
«, Ask=», DoubleToStr(Ask, Digits),
«, Bid=», DoubleToStr(Bid, Digits),
«, OpenPrice=», DoubleToStr(Ask, Digits),
«, TakeProfit=», DoubleToStr(dMABidMain + dSpreadCurr * e_dTakeProfitInSpreads, Digits),
«, LotSize=», e_dLotSize
);
>
else
<
iErrorCode = GetLastError();
dNewStopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
dNewFreezeLevel = MarketInfo(Symbol(), MODE_FREEZELEVEL);
Print(g_strErr, «Failed to open new BUY position»,
«, NewStpLvl=», DoubleToStr(dNewStopLevel, Digits),
«, NewFrzLvl=», DoubleToStr(dNewFreezeLevel, Digits),
«, Ask=», DoubleToStr(Ask, Digits),
«, Bid=», DoubleToStr(Bid, Digits),
«, OpenPrice=», DoubleToStr(Ask, Digits),
«, TakeProfit=», DoubleToStr(dMABidMain + dSpreadCurr * e_dTakeProfitInSpreads, Digits),
«, LotSize=», e_dLotSize,
«, ErrCode=», iErrorCode, «, «, ErrorDescription(iErrorCode)
);
>

ERR Failed to open new BUY position, NewStpLvl=0.00000, NewFrzLvl=0.00000, Ask=1.26506, Bid=1.26432, OpenPrice=1.26506, TakeProfit=1.26573, LotSize=0.1, ErrCode=130, invalid stops

Видно, что пытаюсь купить по цене Ask. TakeProfit поставлен вроде правильно. И все равно не срабатывает. Может, я где-нибудь Bid/Ask перепутал?

Грешил на StopLevel, но он нулевой. Может нельзя выставлять уровень Take Profit одновременно с открытием позиции?

READ  Java cast fail exception

Как узнать в чем проблема?

Можно предположить, что с момента получения тика цены Bid/Ask изменились, но ведь тогда ошибка должна быть уже другой, верно?

Или нельзя не указывать stop loss (ставить нулевым) при задании take profit?

Источник

MQL для тебя

MQL для чайников, программирование на MQL4, MQL5

Вопрос №5 — «Коды ошибок при тестировании советника»

Что значит 2010.02.01 17:00 MyExpert GBPUSD,M15: OrderModify error 130
почему обычно эта ошибка возникает?

Очень много подобных вопросов мне приходит. Поэтому публикую таблицу кодов ошибок. Например посмотрев вышеописанную ошибку error 130 становится понятно, что функция OrderModify пытается изменить стоп-лосс или тейк-профит слишком близко к текущей цене.

Коды ошибок

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.

Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:

Значение Описание
Нет ошибки
1 Нет ошибки, но результат неизвестен
2 Общая ошибка
3 Неправильные параметры
4 Торговый сервер занят
5 Старая версия клиентского терминала
6 Нет связи с торговым сервером
7 Недостаточно прав
8 Слишком частые запросы
9 Недопустимая операция нарушающая функционирование сервера
64 Счет заблокирован
65 Неправильный номер счета
128 Истек срок ожидания совершения сделки
129 Неправильная цена
130 Неправильные стопы
131 Неправильный объем
132 Рынок закрыт
133 Торговля запрещена
134 Недостаточно денег для совершения операции
135 Цена изменилась
136 Нет цен
137 Брокер занят
138 Новые цены
139 Ордер заблокирован и уже обрабатывается
140 Разрешена только покупка
141 Слишком много запросов
145 Модификация запрещена, так как ордер слишком близок к рынку
146 Подсистема торговли занята
147 Использование даты истечения ордера запрещено брокером
148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.

Коды ошибок выполнения MQL4 программы:

Источник

Smartadm.ru