Ошибка 130

 
Не могу понять в чем допустил ошибку, работало работало а щас перестало работать
SetOrder(NULL, OP_SELLSTOP, lot,Low[2]-3*Point,Bid-(Low[1]-SL)*Point,Low[1]-TP*Point);


void SetOrder(string sy, int op, double ll, double pp,
              double sl=0, double tp=0, int mn=0, datetime ex=0) {
  color clOpen;
  int   err, ticket;

  if (sy=="" || sy=="0") sy=Symbol();
  if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell;
  ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, ex, clOpen);
  if (ticket<0) {
    err=GetLastError();
    Print("Error(",err,") set ",GetNameOP(op),": ",ErrorDescription(err));
    Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",ll,
          " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
  }
}


Можно ли так выставлять ордер?...если стоплосс ставить 0, то все равно ошибка 130 - неправильные стопы
 
посмотри сколько лотов получает ф-ция и сравни с мин.лотом, и какой TP (если TP-спрэд*Point меньше) может еще вместо BUYSTOP НУЖЕН BUYLIMIT.. в зависимости от цены
 
кстати ф-ция получает OP_SELLSTOP, а она может только OP_BUYLIMIT || OP_BUYSTOP    =)
 
ROlegWM >>:
кстати ф-ция получает OP_SELLSTOP, а она может только OP_BUYLIMIT || OP_BUYSTOP    =)

она может выставлять все ордера, условие:

if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell;

для определения цвета позиции

Лот 0,1, ТП=50....не суть важно, 

А если во время выставления селлстоп цена находится ниже  заданного уровня то ордер не выставится?

 
ответьте кто нибудь пожалуйста....почему пишет не правильные стопы? Из за того что при селлстоп цена находится ниже Low[2] ?
 

Рискну предположить (особо не вникая), что ошибка может быть обусловлена

ценой открытия -

Low[2]-3*Point

Может стоит проверить это расстояние на допустимое в этом ДЦ значение?

 

вот на это не проверял....а где посмотреть допустимое значение  между ценой и уровнем установки стоповых ордеров?

А как вы считаете на счет :  если во время выставления селлстоп цена находится ниже заданного уровня то ордер не установится?

 

Конечно не установится. Это очевидно

А допустимый уровень в каждом ДЦ задается в-ной

MODE_STOPLEVEL*Point

Вот примерно так я сделал в одной из своих конструкций (ДЛЯ ОРДЕРА БАЙСТОП) -

if ((PriceBuy-Ask) < MODE_STOPLEVEL*Point) PriceBuy = (Ask+MODE_STOPLEVEL*Point);//расст. от цены
//если расст. менее допустимого , то приравнять его к допустимому
 
Спасибо, теперь ясно
 

Чтобы не лазить и не перелопачивать сайт ДЦ - искать допустимый уровень стопов, можно сделать так:

Открыть в мт4 окно тестера. Зарядить в него нужный символ. После чего наж. на кн. СВОЙСТВА СИМВОЛА

и там будут указаны уровни стопов, спред. и прочие характеристики.

Сейчас это особенно актуально, т.к. с 22-25 дек. по 5 янв. все брокеры в неск. раз повышают уровни стоплевелов и спреды.

 
rid писал(а) >>

Сейчас это особенно актуально, т.к. с 22-25 дек. по 5 янв. все брокеры в неск. раз повышают уровни стоплевелов и спреды.

Да, все правильно... Но Вы видимо имели ввиду ДЦ... Потому, что БРОКЕРЫ... ну во первых, это в некоторой степени вообще вопрос-то несколько спорный - есть ли они на форексе... Ну да ладно, пусть есть...

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

У правильных "брокеров" их нет, есть только оферы и биды... Так же как на самом деле.... :))

---

http://robotrading.liveforums.ru/