Проблемы с оформлением на Маркете

 

Здравствуйте.

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

Так же ошибки 130 и 145, хотя так же в коде присутствуют все проверки при открытии ордеров и модификации на уровень StopLevel

В чем может быть причина?


Примерно вот так все проверяю:

if (sl > 0 && op - sl <= MarketInfo(_symbol,MODE_STOPLEVEL) * _point) { Print("Ошибка StopLevel для StopLoss in ",TypeToString(type)," paramerts: op=",op," sl=",sl," tp=",tp," price=",MarketInfo(_symbol,MODE_BID)," lot=",lot); return (false); }

if (tp > 0 && tp - op <= MarketInfo(_symbol,MODE_STOPLEVEL) * _point) { Print("Ошибка StopLevel для TakeProfit in ",TypeToString(type)," paramerts: op=",op," sl=",sl," tp=",tp," price=",MarketInfo(_symbol,MODE_BID)," lot=",lot); return (false); }

 
Sergey Ermolov:

Здравствуйте.

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

Так же ошибки 130 и 145, хотя так же в коде присутствуют все проверки при открытии ордеров и модификации на уровень StopLevel

В чем может быть причина?


Примерно вот так все проверяю:

if (sl > 0 && op - sl <= MarketInfo(_symbol,MODE_STOPLEVEL) * _point) { Print("Ошибка StopLevel для StopLoss in ",TypeToString(type)," paramerts: op=",op," sl=",sl," tp=",tp," price=",MarketInfo(_symbol,MODE_BID)," lot=",lot); return (false); }

if (tp > 0 && tp - op <= MarketInfo(_symbol,MODE_STOPLEVEL) * _point) { Print("Ошибка StopLevel для TakeProfit in ",TypeToString(type)," paramerts: op=",op," sl=",sl," tp=",tp," price=",MarketInfo(_symbol,MODE_BID)," lot=",lot); return (false); }

1. Сравниваются ненормализованные цены (op-sl уже такое) - это критическая ошибка для робота, надо бросать такую привычку, а то можно невзначай влететь на бабло. 

2. даже если MODE_STOPLEVEL отдаёт 0, считайте что он не менее 2-х спредов, а если и тот 0, то и не менее 2-х пунктов

3. опция: ставить (тем более близко) Sl/Tp  сразу при открытии не вполне прилично ;-) Потому как не везде можно открывать сразу со стопом и к тому до момента открытия вы не знаете точно какая цена получится у позиции. Может проскользнуть и придётся пересчитывать Sl/Tp

 
Ставте минимальный спред при автопроверке.
 
Результат скажите здесь
 

Привет!

Уберите МаркетИнфо-стоплевел. Найдите к нему простое решение.

Допустим -Если стоплосс задан меньше 200 пипс то Принт-"нельзя такое!" и ретурн.

Обычно брокеры не дают информацию о МаркетИнфоСтоплевел.

Спред надо найти с разницы Аск и Бид, а не через МаркетИнфо. Обычно даже когда скачки спреда идут большие , то МаркетИнфо показывает меньший спред и и сделка открывается с диким спредом.


ИМХО

 

Всем спасибо за рекомендации. Действительно в stoplevel была проблема.

Решил проблему вот так:

stoplevel = (int)MarketInfo(_Symbol,MODE_STOPLEVEL);

if (stoplevel == 0) stoplevel = 1;

И дальше по коду уже с этой переменной все сравниваю.