Здравствуйте Ув. Гуру, продавцы и обычные ребята, администрация, читатель, мимо проходящий, случайно заглянувший и т.д.
Вы сталкивались с 131 ошибкой при обновлении продуктов в последние 2-3 месяца?
Ясное дело что нужна проверка и она есть, но предыдущий раз когда обновлял продукт, без проблем все обошлось, теперь же на пути у модератора, встал большой и жирный 131 и не хочет пускать дальше.
Пытался выявить у себя эту ошибку, устанавливая различный лот, депозит, валюту, но, не удается.
У меня же, как положено при не хватке, соответствующее уведомление выдает журнал "AUDCAD,M30: Not enough money. Not enough ="Нужно больше золота"
Может есть какие то изменения в проверке, которые нужно было внести...
131
ERR_INVALID_TRADE_VOLUME | 131 | Неправильный объем |
Проверяйте корректность лота, минимальный, максимальный и допустимый шаг изменения.
Для "четверки" пользуюсь такой функцией открытия позиции, ошибок нет.
//+----------------------------------------------------------------------------+ //| Функция открытия ордера https://www.mql5.com/ru/users/kino | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (Symbol() - текущий символ) | //| op - операция (0-Buy 1-Sell) | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { int LS=0; double MinLot = MarketInfo(Symbol(),MODE_MINLOT); double MaxLot = MarketInfo(Symbol(),MODE_MAXLOT); double LotStep = MarketInfo(Symbol(),MODE_LOTSTEP); if (LotStep == 0.01) LS = 2; if (LotStep == 0.1) LS = 1; if (LotStep == 1) LS = 0; ll = NormalizeDouble(ll,LS); if (ll < MinLot) ll = MinLot; else ll = ll; if (ll > MaxLot) ll = MaxLot; else ll = ll; if (op == 0) // Открытие BUY { // Проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Buy, not enough money."); return(0); } RefreshRates(); // Открываем ордер int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,mn,0,BuyColor); if(ticketbuy<0) Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Buy successfully"); // Sleep (Pause); // Модифицируем ордер (выставляем тейкпрофит и стоплосс) if (sl !=0 || tp !=0) { //--- Вычисленные значения цен SL и TP должны быть нормализованы double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- Если входящие значения ноль то заменяем цену модификации на ноль if (sl == 0) BSLoss = 0; if (tp == 0) BTProfit = 0; bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor); if(!resbuy) Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Buy successfully"); } } if (op == 1) // Открытие Sell { // Проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Sell, not enough money."); return(0); } RefreshRates(); // Открываем ордер int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,mn,0,SellColor); if(ticketsell<0) Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Sell successfully"); // Sleep (Pause); // Модифицируем ордер (выставляем тейкпрофит и стоплосс) if (sl !=0 || tp !=0) { //--- Вычисленные значения цен SL и TP должны быть нормализованы double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- Если входящие значения ноль то заменяем цену модификации на ноль if (sl == 0) SSLoss = 0; if (tp == 0) STProfit = 0; bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor); if(!ressell) Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Sell successfully"); } } return (True); } //End
Спасибо Владимир. Попробую. Получилось или нет, узнаю после того как его модератор проверит.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте Ув. Гуру, продавцы и обычные ребята, администрация, читатель, мимо проходящий, случайно заглянувший и т.д.
Вы сталкивались с 131 ошибкой при обновлении продуктов в последние 2-3 месяца?
Ясное дело что нужна проверка и она есть, но предыдущий раз когда обновлял продукт, без проблем все обошлось, теперь же на пути у модератора, встал большой и жирный 131 и не хочет пускать дальше.
Пытался выявить у себя эту ошибку, устанавливая различный лот, депозит, валюту, но, не удается.
У меня же, как положено при не хватке, соответствующее уведомление выдает журнал "AUDCAD,M30: Not enough money. Not enough ="Нужно больше золота"
Может есть какие то изменения в проверке, которые нужно было внести...