простейший скрипт - почему ошибка?

 

Вот такой простейший код

Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах = 4

int start()

{
//----
double bid =MarketInfo("EURUSD",MODE_BID); // Запрос значения Bid
double ask =MarketInfo("EURUSD",MODE_ASK); // Запрос значения Ask
double point =MarketInfo("EURUSD",MODE_POINT);//Запрос Point
OrderSend("EURUSD",OP_BUY,0.01,ask,2,bid-0.0006,bid+0.0007);
Alert (GetLastError());
OrderSend("EURUSD",OP_SELL,0.01,bid,2,ask+0.0006,ask-0.0007);
Alert (GetLastError());
//----
return(0);

}

Выдаёт ошибку 130

Так и не понял, в чём дело. Пробовал и bid-0.008, всё равно не хочет....

 
Попробуй вначале открыть ордер с нулевыми тейками и стопами. А потом установить нужные
 
string SMB=Symbol();
double PR,SL,TP;
PR=NormalizeDouble(Ask,Digits);
SL=NormalizeDouble(PR-0.0006,Digits);
TP=NormalizeDouble(PR+0.0007,Digits);
int Ticket=OrderSend("EURUSD",OP_BUY,0.01,ask,2,SL,TP);
if(Ticket<0){
  Alert("TP = ",TP);
  Alert("SL = ",SL);
  Alert("PR = ",PR);
  Alert("Ошибка № ",GetLastError()," при установке, бай-ордера на валютной паре ",SMB);
}

Если возникает ошибка 130 - неправильные стопы - то нужно посмотреть какие конкретно стопы Ваш скрипт послал на сервер.

Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130

Причина обращения: