Помогите, ошибка 130 при попытке открыть Sell
Помогите, советник все время выдает ошибку 130 при попытке открыть Sell. При этом при попытке открыть Buy, выдал ошибку 130 один раз и после ни разу не выдавал, сколько я не присоединял советника к графику. Вот и получается, что все Buy он открывает, а Sell не может. Что это может быть.
while(true) // цикл закрытия ордера if (Total==0 && Opn_S==true) // открытых ордеров нет + < // критерий на открытие SellRefreshRates(); // обновление данных SL=Ask + StopLoss*Point; // вычисление SL откр. Alert("Попытка открыть Sell. Ожидание ответа.."); Ticket=OrderSend(Symb,OP_SELL,Lots,Bid,3,SL,Green); //открытие Sell if (Ticket > 0) // получилось if (Fun_Error(GetLastError())==1) // обработка ошибок continue; // повторная попытка return; // выход из функции start() > break; // выход из функции while >
- Эксперт всегда покупает или продает.
- Советник открывает несколько параллельных сделок на одном баре, вместо одной
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
Константа Значение Описание ERR_NO_ERROR 0 Нет ошибки ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен ERR_COMMON_ERROR 2 Общая ошибка ERR_INVALID_TRADE_PARAMETERS 3 Неправильные параметры ERR_SERVER_BUSY 4 Торговый сервер занят ERR_OLD_VERSION 5 Старая версия клиентского терминала ERR_NO_CONNECTION 6 Нет связи с торговым сервером ERR_NOT_ENOUGH_RIGHTS 7 Недостаточно прав ERR_TOO_FREQUENT_REQUESTS 8 Слишком частые запросы ERR_MALFUNCTIONAL_TRADE 9 Недопустимая операция нарушающая функционирование сервера ERR_ACCOUNT_DISABLED 64 Счет заблокирован ERR_INVALID_ACCOUNT 65 Неправильный номер счета ERR_TRADE_TIMEOUT 128 Истек срок ожидания совершения сделки ERR_INVALID_PRICE 129 Неправильная цена ERR_INVALID_STOPS 130 Неправильные стопы ERR_INVALID_TRADE_VOLUME 131 Неправильный объем ERR_MARKET_CLOSED 132 Рынок закрыт ERR_TRADE_DISABLED 133 Торговля запрещена ERR_NOT_ENOUGH_MONEY 134 Недостаточно денег для совершения операции ERR_PRICE_CHANGED 135 Цена изменилась ERR_OFF_QUOTES 136 Нет цен ERR_BROKER_BUSY 137 Брокер занят ERR_REQUOTE 138 Новые цены ERR_ORDER_LOCKED 139 Ордер заблокирован и уже обрабатывается ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Разрешена только покупка ERR_TOO_MANY_REQUESTS 141 Слишком много запросов ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку ERR_TRADE_CONTEXT_BUSY 146 Подсистема торговли занята ERR_TRADE_EXPIRATION_DENIED 147 Использование даты истечения ордера запрещено брокером ERR_TRADE_TOO_MANY_ORDERS 148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.
< // критерий на открытие SellRefreshRates(); // обновление данных SL=Ask + StopLoss*Point; // вычисление SL откр.
Исправте на: SL=Bid + StopLoss*Point; // вычисление SL откр.
. Что это может быть.
ERR_INVALID_STOPS 130 Слишком близкие стопы или неправильно рассчитанные или ненормализованные цены в стопах (или в цене открытия отложенного ордера). Попытку можно повторять только в том случае, если ошибка произошла из-за устаревания цены. Необходимо после задержки от 5 секунд обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
P.S. В Вашем варианте это или Слишком близкие стопы или ненормализованные цены в стопах или и то и другое.
См. также MODE_STOPLEVEL 14 Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах
В команде OrderSend после SL должно стоять значение для TP.
да, что тут скажешь . rtfm
То, что это неправильные стопы, я знаю. Я пробывал и нормализовывать цену, и RefreshRates есть, так на Buy то все нормально, а на Sell - ошибка 130 и все тут, хотя мой SL очень далек от StopLevel
Константа Значение Описание ERR_NO_ERROR 0 Нет ошибки ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен ERR_COMMON_ERROR 2 Общая ошибка ERR_INVALID_TRADE_PARAMETERS 3 Неправильные параметры ERR_SERVER_BUSY 4 Торговый сервер занят ERR_OLD_VERSION 5 Старая версия клиентского терминала ERR_NO_CONNECTION 6 Нет связи с торговым сервером ERR_NOT_ENOUGH_RIGHTS 7 Недостаточно прав ERR_TOO_FREQUENT_REQUESTS 8 Слишком частые запросы ERR_MALFUNCTIONAL_TRADE 9 Недопустимая операция нарушающая функционирование сервера ERR_ACCOUNT_DISABLED 64 Счет заблокирован ERR_INVALID_ACCOUNT 65 Неправильный номер счета ERR_TRADE_TIMEOUT 128 Истек срок ожидания совершения сделки ERR_INVALID_PRICE 129 Неправильная цена ERR_INVALID_STOPS 130 Неправильные стопы ERR_INVALID_TRADE_VOLUME 131 Неправильный объем ERR_MARKET_CLOSED 132 Рынок закрыт ERR_TRADE_DISABLED 133 Торговля запрещена ERR_NOT_ENOUGH_MONEY 134 Недостаточно денег для совершения операции ERR_PRICE_CHANGED 135 Цена изменилась ERR_OFF_QUOTES 136 Нет цен ERR_BROKER_BUSY 137 Брокер занят ERR_REQUOTE 138 Новые цены ERR_ORDER_LOCKED 139 Ордер заблокирован и уже обрабатывается ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Разрешена только покупка ERR_TOO_MANY_REQUESTS 141 Слишком много запросов ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку ERR_TRADE_CONTEXT_BUSY 146 Подсистема торговли занята ERR_TRADE_EXPIRATION_DENIED 147 Использование даты истечения ордера запрещено брокером ERR_TRADE_TOO_MANY_ORDERS 148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.
< // критерий на открытие SellRefreshRates(); // обновление данных SL=Ask + StopLoss*Point; // вычисление SL откр.
Исправте на: SL=Bid + StopLoss*Point; // вычисление SL откр.
Спасибо, помогло. Открывает чудно. Я вроде пробовал так, как вы написали, и у меня ничего не получалось. Но. раз получилось сейчас, значит так пробовал.