Ваша проблема, наверняка, кроется в том что вы просто меняете OP_BUYSTOP на OP_BUYLIMIT, но возможно не задумались над определением/изменением цены открытия ордера. Если цена Buy Stop выше рыночной то цена Buy Limit ниже.
Задумывался, и менял....тоже без результатно, менял цены бид и аск....думал что-то в них, тоже не в какую....установил изначально СЛ и ТП 0 - все заработало....может ошибка в них еще кроется?? не понимаю уже
В тестере должна ошибка выдаваться, когда OrderSend() не может выставить ордер (или сами отловите и выведите в лог тестера).
Код ошибки какой?
Может быть ошибка - слишком близкие SL или TP ? Попробуйте SL и TP подальше отодвинуть.
И по-любому, SL для BUY должен быть ниже цены открытия, а для SELL - выше (на величину не меньше MODE_STOPLEVEL пунктов от цены Bid и Ask соответственно).
Если и с нулевыми SL и TP не открываются - значит цена открытия слишком близко к текущей цене.
Дайте хотя бы кусок кода. Телепатически, со всякими "наверняка", "возможно", "скорее всего" трудно будет вам помочь. :)
Вот часть кода
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()); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть кто может мне в этом помочь?? сову могу скинуть через личико.
Я сколько не пытался поменять тип ордеров не идет ничего, менял все что можно. Помогите кто то...