Непонятки с OrderSend()

 
Ситуация такая. Билд 199. Пишу эксперта. Вот кусок кода:

res = OrderSend( Symbol(), OP_SELL, LotsOptimized(), 
	Bid, _Slp, Ask+_StopLoss*Point, 0, 
	"", 0, 0, Red);
if(res < 0)
{
   Print("OrderSend SELL ", Symbol(), " at ", Bid, " failed with error # ",GetLastError());
   return;
}
else 
   Print(Symbol(), " sold at "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)+" for "+Bid);
Параметры: int _StopLoss = 300; int _Slp = 40. Инструмент - золото. Тестер выдает ругательство с ошибкой 130 (ERR_INVALID_STOPS) и не позволяет открыть позицию. Увеличение размера стопа ни к чему не приводит.

В то же время на билде 200 позиция открывается без ругательств.

Что бы это значило? В чем моя ошибка?
 
Стопы по золоту должны быть в районе 200-300 пунктов, проверьте более точно у своего брокера.
 
Mathemat писал (а):
Ситуация такая. Билд 199. Пишу эксперта. Вот кусок кода:

res = OrderSend( Symbol(), OP_SELL, LotsOptimized(), 
	Bid, _Slp, Ask+_StopLoss*Point, 0, 
	"", 0, 0, Red);
if(res < 0)
{
   Print("OrderSend SELL ", Symbol(), " at ", Bid, " failed with error # ",GetLastError());
   return;
}
else 
   Print(Symbol(), " sold at "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)+" for "+Bid);
Параметры: double _StopLoss = 300.0; int _Slp = 40. Инструмент - золото. Тестер выдает ругательство с ошибкой 130 (ERR_INVALID_STOPS) и не позволяет открыть позицию. Увеличение размера стопа ни к чему не приводит.

В то же время на билде 200 позиция открывается без ругательств.

Что бы это значило? В чем моя ошибка?

Попробуте так
res = OrderSend( Symbol(), OP_SELL, LotsOptimized(), 
    Bid, _Slp, NormalizeDouble(Ask+_StopLoss*Point,Digits), 0, 
    "", 0, 0, Red);
if(res < 0)
{
   Print("OrderSend SELL ", Symbol(), " at ", Bid, " failed with error # ",GetLastError());
   return;
}
else 
   Print(Symbol(), " sold at "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)+" for "+Bid);
 
PSmith, спасибо, пробовал уже, только вместо Digits указывал явно число 2. Не покатило, даже теперь, после указания Digits.

2 Rosh: да, у меня стоп-лосс даже больше 200, тем более что он отсчитывается от Ask, а не от Bid...

Данные взяты с сервера Альпари (минутки с июня 2004), тестирование проводится офф-лайн. MarketInfo() возвращает стоп 200 пипсов. Все остальные параметры (Digits, Point) - тоже правильные...
 
Там есть такая тонкость, скажем так. При продаже по рынку стоп должен быть не ближе StopLevel пунктов от цены закрытия, то есть от Ask. Я не помню, чему равен MarketInfo("Gold",MODE_STOPLEVEL) у Альпари.
 
Rosh:
Там есть такая тонкость, скажем так. При продаже по рынку стоп должен быть не ближе StopLevel пунктов от цены закрытия, то есть от Ask. Я не помню, чему равен MarketInfo("Gold",MODE_STOPLEVEL) у Альпари.


Да, Rosh, конечно. Продаем по Bid, а стоп отсчитываем от Ask = Bid+Spread: так как стоп-лосс при шорте исполняется как покупка, т.е. по цене Ask, то получается, что спред откусывает 100 пипсов от неблагоприятного движения цены; таким образом, отсчитывая стоп от Bid, мы обманываем себя и получаем реальное расстояние до стоп-лосса, равное Bid-Spread. (Очень весело наблюдать, как очередной новичок кричит об обмане клиента со стороны ДЦ: цена, мол, не коснулась SL, а стоп-лосс срабооооотал!)

В то же время, если покупаем (по Ask), то стоп-лосс нужно отсчитывать от Bid, т.к. он исполняется как продажа, по Bid.

Я правильно понимаю?

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

Мне кажется, что

это уже не фича тестера, а баг: я уже не оптимизирую, а просто прогоняю на истории, но параметры почему-то остаются как установленные когда-то в оптимизаторе...

 
Mathemat писал (а):
...
А насчет ошибки 130 я разобрался. Оказывается, я до этого попробовал оптимизацию и выставил начальные значения параметров, которые не соответствовали зашитым в коде эксперта. Обнаружил я это случайно.

Мне кажется, что это уже не фича тестера, а баг: я уже не оптимизирую, а просто прогоняю на истории, но параметры почему-то остаются как установленные когда-то в оптимизаторе...

С параметрами еще такая штука бывает (билд 198): выставляем начальные параметры, оптимизируем, берем параметры из оптимизатора (двойной клик на лучшем знанении). После этого компилим экперта и видим, что параметры вернулись к начальным! Не к тем, которые в коде, и не к тем, которые взяты из оптимизатора, а к изначально выставленным в тестере!
 
PSmith писал (а):

С параметрами еще такая штука бывает (билд 198): выставляем начальные параметры, оптимизируем, берем параметры из оптимизатора (двойной клик на лучшем знанении). После этого компилим экперта и видим, что параметры вернулись к начальным! Не к тем, которые в коде, и не к тем, которые взяты из оптимизатора, а к изначально выставленным в тестере!

Вот как, совместными усилиями два бага обнаружили (правда, в 198-м). Ну а вообще пора бы на 199-й или 200-й перейти... Там-то такой есть или нет?
 
Mathemat писал (а):

Вот как, совместными усилиями два бага обнаружили (правда, в 198-м). Ну а вообще пора бы на 199-й или 200-й перейти... Там-то такой есть или нет?


199-й пропускаем лучше сразу 200-й заливать!

См. https://www.mql5.com/ru/forum/51438

Кстати, почему LiveUpdate не поддерживает докачку?


PS. Знакомый аватар...вы случайно не ..он?

 
PSmith писал (а):

Кстати, почему LiveUpdate не поддерживает докачку?


PS. Знакомый аватар...вы случайно не ..он?

1. Вероятно, потому, что на Альпари 199-го билда не было просто, он был только здесь. 200-й апдейт у меня получился сразу.
2. Я не реинкарнируюсь. На форуме Альпари у меня такой же ник, но с аватарчиками экспериментирую.
 
PSmith:
Mathemat писал (а):
...
А насчет ошибки 130 я разобрался. Оказывается, я до этого попробовал оптимизацию и выставил начальные значения параметров, которые не соответствовали зашитым в коде эксперта. Обнаружил я это случайно.

Мне кажется, что это уже не фича тестера, а баг: я уже не оптимизирую, а просто прогоняю на истории, но параметры почему-то остаются как установленные когда-то в оптимизаторе...

С параметрами еще такая штука бывает (билд 198): выставляем начальные параметры, оптимизируем, берем параметры из оптимизатора (двойной клик на лучшем знанении). После этого компилим экперта и видим, что параметры вернулись к начальным! Не к тем, которые в коде, и не к тем, которые взяты из оптимизатора, а к изначально выставленным в тестере!
Будем проверять - спасибо.
Причина обращения: