Помогите исправить тип ордеров с Бай и Сел Стоп - на Бай и Сел Лимит

 

Есть кто может мне в этом помочь?? сову могу скинуть через личико.
Я сколько не пытался поменять тип ордеров не идет ничего, менял все что можно. Помогите кто то...

 
Ваша проблема, наверняка, кроется в том что вы просто меняете OP_BUYSTOP на OP_BUYLIMIT, но возможно не задумались над определением/изменением цены открытия ордера. Если цена Buy Stop выше рыночной то цена Buy Limit ниже.
 
pro_:
Ваша проблема, наверняка, кроется в том что вы просто меняете OP_BUYSTOP на OP_BUYLIMIT, но возможно не задумались над определением/изменением цены открытия ордера. Если цена Buy Stop выше рыночной то цена Buy Limit ниже.

Задумывался, и менял....тоже без результатно, менял цены бид и аск....думал что-то в них, тоже не в какую....установил изначально СЛ и ТП 0 - все заработало....может ошибка в них еще кроется?? не понимаю уже
 

В тестере должна ошибка выдаваться, когда OrderSend() не может выставить ордер (или сами отловите и выведите в лог тестера).

Код ошибки какой?

Может быть ошибка - слишком близкие SL или TP ? Попробуйте SL и TP подальше отодвинуть.

И по-любому, SL для BUY должен быть ниже цены открытия, а для SELL - выше (на величину не меньше MODE_STOPLEVEL пунктов от цены Bid и Ask соответственно).

Если и с нулевыми SL и TP не открываются - значит цена открытия слишком близко к текущей цене.

 
Дайте хотя бы кусок кода. Телепатически, со всякими "наверняка", "возможно", "скорее всего" трудно будет вам помочь. :)
 
pro_:
Дайте хотя бы кусок кода. Телепатически, со всякими "наверняка", "возможно", "скорее всего" трудно будет вам помочь. :)


Вот часть кода

if (bay<1&&TimeBarBay!=TimeDay(CurTime()))

{

MaxPrice=iHigh(NULL,1440,LastDay)+NormalizeDouble(Delta*Point,Digits);

if (SL==0) StLo = NormalizeDouble(iLow(NULL,1440,LastDay),Digits);

if (Bid-STOPLEVEL*Point>MaxPrice) MaxPrice = NormalizeDouble(Bid+STOPLEVEL*Point,Digits);

if (TP!=0) TrPr = NormalizeDouble(MaxPrice + TP * Point,Digits);

if (SL!=0) StLo = NormalizeDouble(MaxPrice - SL * Point,Digits);

if (risk!=0)

{

Lot=LOT()/(MarketInfo(Symbol(),MODE_TICKVALUE)/(MarketInfo(Symbol(),MODE_TICKSIZE))*(MaxPrice-StLo));

}

error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,MaxPrice,3,StLo, TrPr,"SELLLIMIT BLD",magic,expiration,Blue);

if (error==-1) Print("Error SELLLIMIT ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MaxPrice," SL ",StLo," TP ",TrPr," expiration ",expiration);

else TimeBarBay=TimeDay(CurTime());

}

if (sel<1&&TimeBarSell!=TimeDay(CurTime()))

{

MinPrice=iLow(NULL,1440,LastDay)-NormalizeDouble(Delta*Point,Digits);

if (Ask+STOPLEVEL*Point<MinPrice) MinPrice = NormalizeDouble(Ask-STOPLEVEL*Point,Digits);

if (SL==0) StLo = NormalizeDouble(iHigh(NULL,1440,LastDay),Digits);

if (TP!=0) TrPr = NormalizeDouble(MinPrice - TP * Point,Digits);

if (SL!=0) StLo = NormalizeDouble(MinPrice + SL * Point,Digits);

if (risk!=0)

{

Lot=LOT()/(MarketInfo(Symbol(),MODE_TICKVALUE)/(MarketInfo(Symbol(),MODE_TICKSIZE))*(StLo-MinPrice));

}

error=OrderSend(Symbol(),OP_BUYLIMIT,Lot,MinPrice,3,StLo,TrPr,"BUYLIMIT BLD",magic,expiration,Red );

if (error==-1) Print("Error BUYLIMIT ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MinPrice," SL ",StLo," TP ",TrPr," expiration ",expiration);

else TimeBarSell=TimeDay(CurTime());

}

 

Усё перепутал, Кутузов...)))

f (bay<1&&TimeBarBay!=TimeDay(CurTime()))

 {

 MaxPrice=iHigh(NULL,1440,LastDay)+NormalizeDouble(Delta*Point,Digits);

 if (SL==0) StLo = NormalizeDouble(iHigh(NULL,1440,LastDay),Digits);

 if (Bid+STOPLEVEL*Point>MaxPrice) MaxPrice = NormalizeDouble(Bid+STOPLEVEL*Point,Digits);

 if (TP!=0) TrPr = NormalizeDouble(MaxPrice - TP * Point,Digits); 

 if (SL!=0) StLo = NormalizeDouble(MaxPrice + SL * Point,Digits); 

 if (risk!=0)

 {

 Lot=LOT()/(MarketInfo(Symbol(),MODE_TICKVALUE)/(MarketInfo(Symbol(),MODE_TICKSIZE))*(MaxPrice-StLo)); 

 }

 error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,MaxPrice,3,StLo, TrPr,"SELLLIMIT BLD",magic,expiration,Blue);

 if (error==-1) Print("Error SELLLIMIT ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MaxPrice," SL ",StLo," TP ",TrPr," expiration ",expiration);

 else TimeBarBay=TimeDay(CurTime());

 }

 if (sel<1&&TimeBarSell!=TimeDay(CurTime()))

 {

 MinPrice=iLow(NULL,1440,LastDay)-NormalizeDouble(Delta*Point,Digits);

 if (Ask-STOPLEVEL*Point<MinPrice) MinPrice = NormalizeDouble(Ask-STOPLEVEL*Point,Digits);

 if (SL==0) StLo = NormalizeDouble(iLow(NULL,1440,LastDay),Digits); 

 if (TP!=0) TrPr = NormalizeDouble(MinPrice + TP * Point,Digits); 

 if (SL!=0) StLo = NormalizeDouble(MinPrice - SL * Point,Digits); 

 if (risk!=0)

 {

 Lot=LOT()/(MarketInfo(Symbol(),MODE_TICKVALUE)/(MarketInfo(Symbol(),MODE_TICKSIZE))*(StLo-MinPrice)); 

 }

 error=OrderSend(Symbol(),OP_BUYLIMIT,Lot,MinPrice,3,StLo,TrPr,"BUYLIMIT BLD",magic,expiration,Red );

 if (error==-1) Print("Error BUYLIMIT ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MinPrice," SL ",StLo," TP ",TrPr," expiration ",expiration);

 else TimeBarSell=TimeDay(CurTime());

 }



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