О причинах ошибки 130.

 

Раньше считал, что причиной ошибки 130 является:

1. Если пытаемся установить стоплосс или тейкпрофит  рыночного ордера, а расстояние между ценой и стоплоссом или между ценой и тейкпрофитом меньше величины стоплевела.

2. Если пытаемся установить отложенный ордер на расстоянии от цены рынка, которое меньше стоплевел.

Но оказывается это ещё не всё, - был пробел в моих знаниях. Как говорится век живи век учись.)  Есть и 3-й пункт: 

3. Если стоплосс или тейкпрофит отложенного ордера расположены к цене установки ордера ближе, чем стоплевел.

Не знаю, может этот 3-й пункт действует не у всех брокеров. Ранее как-то не приходилось с этим ограничением сталкиваться, так как не торговал на инструментах с большим стоплевелом и ошибки 130 не возникало. А сегодня на GBPAUD с этим столкнулся.

Теперь стоплосс и тейкпрофит(в пунктах) для отложенных ордеров вычисляю так:

SL = MathMax(SL,StopLevel+5);//при 5-значных котировках
TP = MathMax(TP,StopLevel+5);
 
этого не достаточно, у некоторых брокеров стоп-левел равен нулю, надо ещё спред контролировать
 
Alexander Bereznyak:
этого не достаточно, у некоторых брокеров стоп-левел равен нулю, надо ещё спред контролировать
Это нужно сделать просто в пределах вычисления значения StopLevel. Логика такая: если Stop Level равен нулю, то "спрашиваем" (при помощи специального настроечного параметра) у пользователя, может ли такое быть. Если может (счет типа ECN), то так и оставляем, а если нет, то берем StopLevel равным двум спредам.