double mtsVolumeCoerse(string _symbol, double _volume) { double vmin = SymbolInfoDouble(_symbol,SYMBOL_VOLUME_MIN); double vmax = SymbolInfoDouble(_symbol,SYMBOL_VOLUME_MAX); double vstep = SymbolInfoDouble(_symbol,SYMBOL_VOLUME_STEP); _volume = vstep > 0 ? vstep * (int)NormalizeDouble(_volume/vstep,0) : 0; if (_volume < vmin) _volume = vmin; if (_volume > vmax) _volume = vmax; if (vstep>=1) return NormalizeDouble(_volume,0); if (vstep>=0.1) return NormalizeDouble(_volume,1); return NormalizeDouble(_volume,2); }
Думаю дело еще в этом: _volume = vstep > 0 ? vstep * (int)NormalizeDouble(_volume/vstep,0) : 0;
Надо приводить открываемый объем к значению кратному шагу.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При тесте ошибок не обнаружено хотя тест был на разных вариациях, но проверяющие робот перед выставлением в маркет говорят, что у них где то выдается ошибка 131, при этом отказываются говорить параметры и торговые условия символов где возникает ошибка.
В коде этой ошибки не может быть, так как перед функцией OrderSend(открытие сделки) есть проверка:
int dlot = 2;
if(NormalizeDouble(MarketInfo(zsymbol,MODE_LOTSTEP),2)<nd(0.1,1)) dlot = 2;
else
if(NormalizeDouble(MarketInfo(zsymbol,MODE_LOTSTEP),2)<1) dlot = 1;
else
if(NormalizeDouble(MarketInfo(zsymbol,MODE_LOTSTEP),2)<10) dlot = 0;
zlot = NormalizeDouble(MathMax(MathMin(zlot,MarketInfo(zsymbol,MODE_MAXLOT)),MarketInfo(zsymbol,MODE_MINLOT)),dlot);
int t=OrderSend(zsymbol,ztype,zlot,zprice,zslippage,zzsl,zztp,zcomment,zmg,zexpostin,zclr);
При этом проверялись разные вариации и насильно вбивался лот меньше допустимого/больше допустимого/неверная дробь(1.001) и все ровно ошибки 131 мой терминал не выдавал т.к. код выше корректировал значения на допустимые.
Напомню что маркет не сообщает параметры и торговые условия символов где возникает ошибка
В чем причина подобного ответа маркета?