чтоб выставлял отложные ордера за максимума и минимума с9.00 по 14.59 с возможностью поменять время
- Помогите !!! как подправить
- Помогу доработать исправить советник, индикатор
- Нужна помощь.
//--------------------------------------------------------------------
extern string TimeSet = "7:00"; //Время в которое происходит выставление стоп ордеров, если TimeSet = "00:00", то пробой прошлого дня.
extern int Delta = 0, //Выше или ниже екстремумов дня
SL = 0, //Стоплосс в пунктах
TP = 5000, //Тейкпрофит в пунктах
risk = 1000, //Если 0 то по фиксированному лоту
NoLoss = 90, //Если 0 то нет установки безубытка
trailing = 90; //Если 0 то нет трейлинга
extern double Lot = 0.10; //используется только при risk = 0
extern bool OpenStop = true; //Выставлять стоп ордера при открытом ордере
extern color color_BAR = DarkBlue; //цвет инфо
extern bool TradeMonday = false; //торговать в понедельник
extern int magic = 123321; // номер ордера
//--------------------------------------------------------------------
double MaxPrice,MinPrice;
int STOPLEVEL,tip,TimeBarBay,TimeBarSell,LastDay;
//--------------------------------------------------------------------
int init()
{
STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);
{
if (SL < STOPLEVEL) SL = STOPLEVEL;
if (TP < STOPLEVEL) TP = STOPLEVEL;
if (NoLoss < STOPLEVEL && NoLoss != 0) NoLoss = STOPLEVEL;
if (trailing < STOPLEVEL && trailing != 0) trailing = STOPLEVEL;
Comment("\nУстановленные параметры BreakdownLevelDay "+"\n"+
"TimeSet " , TimeSet, "\n",
"Delta " , Delta, "\n",
"SL ", SL, "\n",
"TP " , TP, "\n",
"Lot ", DoubleToStr(Lot,2),"\n",
"risk ", risk, "\n",
"NoLoss " , NoLoss, "\n",
"trailing ", trailing);
if (TimeSet=="00:00") LastDay=1;
}
return(0) ;
}
//--------------------------------------------------------------------
int start()
{
if (OpenStop) magic=TimeDay(CurTime());
//-----------------------------------------------------------------
int bay,sel,error;
bool BUY=false,SEL=false;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
tip=OrderType();
if (tip==0) BUY = true;
if (tip==1) SEL = true;
if (tip==4) bay++;
if (tip==5) sel++;
}
}
if ((BUY||SEL)&&(bay!=0||sel!=0)) DelAllStop(); //если есть открытый ордер удаляем стоп ордера
if ( BUY||SEL)
{
if (trailing!=0) TrailingStop(trailing);
if (NoLoss!=0) No_Loss(NoLoss);
return(0); //если есть открытый ордер
}
if (TimeStr(CurTime())!=TimeSet) return(0); //если время не совпадает с временем выставления ордеров
if (!TradeMonday && DayOfWeek()==1)return(0);
int expiration=CurTime()+(23-TimeHour(CurTime()))*3600+(60-TimeMinute(CurTime()))*60; //время закрытия стоп ордера
double TrPr,StLo;
if (risk!=0) Lot = LOT();
if (bay<1&&TimeBarBay!=TimeDay(CurTime()))
{
MaxPrice=iHigh(NULL,1440,LastDay)+NormalizeDouble(Delta*Point,Digits);
if (Ask+STOPLEVEL*Point>MaxPrice) MaxPrice = NormalizeDouble(Ask+STOPLEVEL*Point,Digits);
if (TP!=0) TrPr = NormalizeDouble(MaxPrice + TP * Point,Digits);
if (SL!=0) StLo = NormalizeDouble(MaxPrice - SL * Point,Digits);
error=OrderSend(Symbol(),OP_BUYSTOP ,Lot,MaxPrice,3,0,TrPr,"BUYSTOP BLD",magic,0,clrBlue);
if (error==-1) Print("Error BUYSTOP ",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 (Bid-STOPLEVEL*Point<MinPrice) MinPrice = NormalizeDouble(Bid-STOPLEVEL*Point,Digits);
if (TP!=0) TrPr = NormalizeDouble(MinPrice - TP * Point,Digits);
if (SL!=0) StLo = NormalizeDouble(MinPrice + SL * Point,Digits);
error=OrderSend(Symbol(),OP_SELLSTOP,Lot,MinPrice,3,0,TrPr,"SELLSTOP BLD",magic,0,clrRed );
if (error==-1) Print("Error SELLSTOP ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MinPrice," SL ",StLo," TP ",TrPr," expiration ",expiration);
else TimeBarSell=TimeDay(CurTime());
}
if (bay<1&&sel<1)
{
ObjectDelete("bar0");
ObjectCreate("bar0", OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet ("bar0", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet ("bar0", OBJPROP_COLOR, color_BAR);
ObjectSet ("bar0", OBJPROP_BACK, true);
ObjectSet ("bar0", OBJPROP_TIME1 ,iTime( NULL, 1440, 0));
ObjectSet ("bar0", OBJPROP_PRICE1,MaxPrice);
ObjectSet ("bar0", OBJPROP_TIME2 ,CurTime());
ObjectSet ("bar0", OBJPROP_PRICE2,MinPrice);
}
return(0);
}
//--------------------------------------------------------------------
void DelAllStop()
{
int tttip=true;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
tttip=OrderType();
if(tip==4 || tip==5)
int tick33et=OrderDelete(OrderTicket());
if(tick33et<0)
Print("--- Ошибка: ",GetLastError());
}
}
}
//--------------------------------------------------------------------
void TrailingStop(int ttrailing)
{
double StLo,OSL,OOP;
bool error=true;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
if (tip==0)
{
StLo = NormalizeDouble(Bid - ttrailing*Point,Digits);
if (StLo < OOP) continue;
if (StLo > OSL)
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
}
if (tip==1)
{
StLo = NormalizeDouble(Ask + ttrailing*Point,Digits);
if (StLo > OOP) continue;
if (StLo < OSL || OSL==0 )
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
}
if (!error) Alert("Error TrailingStop ",GetLastError()," ",Symbol()," SL ",StLo);
}
}
}
}
//------------------------------------------------------------------+
double LOT()
{
double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
double LOT = AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/15;
if (LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
if (LOT<MINLOT) LOT = MINLOT;
if (MINLOT<0.1) LOT = NormalizeDouble(LOT,2); else LOT = NormalizeDouble(LOT,1);
return(LOT);
}
//------------------------------------------------------------------+
void No_Loss(int dNoLoss)
{
double OOP,OSL;
int ttip;
bool error=true;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
ttip = OrderType();
if (ttip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()!=magic)
{
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
OSL = NormalizeDouble(OrderStopLoss(),Digits);
if (ttip==0)
{
if ((Bid-OOP)/Point>=NoLoss && OOP > OSL)
error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);
}
if (ttip==1)
{
if ((OOP-Ask)/Point>=NoLoss && (OOP < OSL || OSL ==0))
error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);
}
if (!error) Alert("Error No_Loss ",GetLastError()," ",Symbol());
}
}
}
}
//------------------------------------------------------------------+
string TimeStr(int taim)
{
string sTaim;
int HH=TimeHour(taim); // Hour
int MM=TimeMinute(taim); // Minute
if (HH<10) sTaim = StringConcatenate(sTaim,"0",DoubleToStr(HH,0));
else sTaim = StringConcatenate(sTaim,DoubleToStr(HH,0));
if (MM<10) sTaim = StringConcatenate(sTaim,":0",DoubleToStr(MM,0));
else sTaim = StringConcatenate(sTaim,":",DoubleToStr(MM,0));
return(sTaim);
}
//--------------------------------------------------------------------
зарание спосибо
А вставить эту портянку в "Код (Alt+S)" религия не позволяет?
Сергей Таболин:
А вставить эту портянку в "Код (Alt+S)" религия не позволяет?
Здравствуйте как это поможет ? религия не причем !
//-------------------------------------------------------------------- extern string TimeSet = "7:00"; //Время в которое происходит выставление стоп ордеров, если TimeSet = "00:00", то пробой прошлого дня. extern int Delta = 0, //Выше или ниже екстремумов дня SL = 0, //Стоплосс в пунктах TP = 5000, //Тейкпрофит в пунктах risk = 1000, //Если 0 то по фиксированному лоту NoLoss = 90, //Если 0 то нет установки безубытка trailing = 90; //Если 0 то нет трейлинга extern double Lot = 0.10; //используется только при risk = 0 extern bool OpenStop = true; //Выставлять стоп ордера при открытом ордере extern color color_BAR = DarkBlue; //цвет инфо extern bool TradeMonday = false; //торговать в понедельник extern int magic = 123321; // номер ордера //-------------------------------------------------------------------- double MaxPrice,MinPrice; int STOPLEVEL,tip,TimeBarBay,TimeBarSell,LastDay; //-------------------------------------------------------------------- int init() { STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL); { if (SL < STOPLEVEL) SL = STOPLEVEL; if (TP < STOPLEVEL) TP = STOPLEVEL; if (NoLoss < STOPLEVEL && NoLoss != 0) NoLoss = STOPLEVEL; if (trailing < STOPLEVEL && trailing != 0) trailing = STOPLEVEL; Comment("\nУстановленные параметры BreakdownLevelDay "+"\n"+ "TimeSet " , TimeSet, "\n", "Delta " , Delta, "\n", "SL ", SL, "\n", "TP " , TP, "\n", "Lot ", DoubleToStr(Lot,2),"\n", "risk ", risk, "\n", "NoLoss " , NoLoss, "\n", "trailing ", trailing); if (TimeSet=="00:00") LastDay=1; } return(0) ; } //-------------------------------------------------------------------- int start() { if (OpenStop) magic=TimeDay(CurTime()); //----------------------------------------------------------------- int bay,sel,error; bool BUY=false,SEL=false; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue; tip=OrderType(); if (tip==0) BUY = true; if (tip==1) SEL = true; if (tip==4) bay++; if (tip==5) sel++; } } if ((BUY||SEL)&&(bay!=0||sel!=0)) DelAllStop(); //если есть открытый ордер удаляем стоп ордера if ( BUY||SEL) { if (trailing!=0) TrailingStop(trailing); if (NoLoss!=0) No_Loss(NoLoss); return(0); //если есть открытый ордер } if (TimeStr(CurTime())!=TimeSet) return(0); //если время не совпадает с временем выставления ордеров if (!TradeMonday && DayOfWeek()==1)return(0); int expiration=CurTime()+(23-TimeHour(CurTime()))*3600+(60-TimeMinute(CurTime()))*60; //время закрытия стоп ордера double TrPr,StLo; if (risk!=0) Lot = LOT(); if (bay<1&&TimeBarBay!=TimeDay(CurTime())) { MaxPrice=iHigh(NULL,1440,LastDay)+NormalizeDouble(Delta*Point,Digits); if (Ask+STOPLEVEL*Point>MaxPrice) MaxPrice = NormalizeDouble(Ask+STOPLEVEL*Point,Digits); if (TP!=0) TrPr = NormalizeDouble(MaxPrice + TP * Point,Digits); if (SL!=0) StLo = NormalizeDouble(MaxPrice - SL * Point,Digits); error=OrderSend(Symbol(),OP_BUYSTOP ,Lot,MaxPrice,3,0,TrPr,"BUYSTOP BLD",magic,0,clrBlue); if (error==-1) Print("Error BUYSTOP ",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 (Bid-STOPLEVEL*Point<MinPrice) MinPrice = NormalizeDouble(Bid-STOPLEVEL*Point,Digits); if (TP!=0) TrPr = NormalizeDouble(MinPrice - TP * Point,Digits); if (SL!=0) StLo = NormalizeDouble(MinPrice + SL * Point,Digits); error=OrderSend(Symbol(),OP_SELLSTOP,Lot,MinPrice,3,0,TrPr,"SELLSTOP BLD",magic,0,clrRed ); if (error==-1) Print("Error SELLSTOP ",GetLastError()," ",Symbol()," Lot ",Lot," Price ",MinPrice," SL ",StLo," TP ",TrPr," expiration ",expiration); else TimeBarSell=TimeDay(CurTime()); } if (bay<1&&sel<1) { ObjectDelete("bar0"); ObjectCreate("bar0", OBJ_RECTANGLE, 0, 0,0, 0,0); ObjectSet ("bar0", OBJPROP_STYLE, STYLE_SOLID); ObjectSet ("bar0", OBJPROP_COLOR, color_BAR); ObjectSet ("bar0", OBJPROP_BACK, true); ObjectSet ("bar0", OBJPROP_TIME1 ,iTime( NULL, 1440, 0)); ObjectSet ("bar0", OBJPROP_PRICE1,MaxPrice); ObjectSet ("bar0", OBJPROP_TIME2 ,CurTime()); ObjectSet ("bar0", OBJPROP_PRICE2,MinPrice); } return(0); } //-------------------------------------------------------------------- void DelAllStop() { int tttip=true; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue; tttip=OrderType(); if(tip==4 || tip==5) int tick33et=OrderDelete(OrderTicket()); if(tick33et<0) Print("--- Ошибка: ",GetLastError()); } } } //-------------------------------------------------------------------- void TrailingStop(int ttrailing) { double StLo,OSL,OOP; bool error=true; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)) { tip = OrderType(); if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { OSL = NormalizeDouble(OrderStopLoss(),Digits); OOP = NormalizeDouble(OrderOpenPrice(),Digits); if (tip==0) { StLo = NormalizeDouble(Bid - ttrailing*Point,Digits); if (StLo < OOP) continue; if (StLo > OSL) error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White); } if (tip==1) { StLo = NormalizeDouble(Ask + ttrailing*Point,Digits); if (StLo > OOP) continue; if (StLo < OSL || OSL==0 ) error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White); } if (!error) Alert("Error TrailingStop ",GetLastError()," ",Symbol()," SL ",StLo); } } } } //------------------------------------------------------------------+ double LOT() { double MINLOT = MarketInfo(Symbol(),MODE_MINLOT); double LOT = AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/15; if (LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT); if (LOT<MINLOT) LOT = MINLOT; if (MINLOT<0.1) LOT = NormalizeDouble(LOT,2); else LOT = NormalizeDouble(LOT,1); return(LOT); } //------------------------------------------------------------------+ void No_Loss(int dNoLoss) { double OOP,OSL; int ttip; bool error=true; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)) { ttip = OrderType(); if (ttip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()!=magic) { OOP = NormalizeDouble(OrderOpenPrice(),Digits); OSL = NormalizeDouble(OrderStopLoss(),Digits); if (ttip==0) { if ((Bid-OOP)/Point>=NoLoss && OOP > OSL) error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White); } if (ttip==1) { if ((OOP-Ask)/Point>=NoLoss && (OOP < OSL || OSL ==0)) error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White); } if (!error) Alert("Error No_Loss ",GetLastError()," ",Symbol()); } } } } //------------------------------------------------------------------+ string TimeStr(int taim) { string sTaim; int HH=TimeHour(taim); // Hour int MM=TimeMinute(taim); // Minute if (HH<10) sTaim = StringConcatenate(sTaim,"0",DoubleToStr(HH,0)); else sTaim = StringConcatenate(sTaim,DoubleToStr(HH,0)); if (MM<10) sTaim = StringConcatenate(sTaim,":0",DoubleToStr(MM,0)); else sTaim = StringConcatenate(sTaim,":",DoubleToStr(MM,0)); return(sTaim); } //--------------------------------------------------------------------
Konstantin Nikitin:
А вы думайте кто-то будет вашу портянку разбирать в тексте. В коде могут и посмотреть.
А вы думайте кто-то будет вашу портянку разбирать в тексте. В коде могут и посмотреть.
я понял спс кинул😉
можно все оставить по прежнему только чтоб ордера выставлялись по максимуму и минимуму за промежуток времени допустим с 9:00 по 12:59 вот на подобие вот этого советника
//-------------------------------------------------------------------- extern double Lots = 0.1; //лот extern int StopLoss = 500; //стоплосс отложенного ордера(если 0 то на предыдущий хай или лоу) extern int TakeProfit = 500; //тейкпрофит отложенного ордера extern int Delta = 100; //расстояние от лоу или хая extern int StartHour = 0; //час начала торговли extern int StartMin = 30; //минута начала торговли extern int EndHour = 23; //час окончания торговли extern int EndMin = 30; //минута окончания торговли extern int StopLimit = 0; //0-stop 1-limit extern int проскальзывание = 0; //проскальзывание ордеров extern int спред = 20; //спред extern int баров = 8; //баров для расчета extern int магик = 123; //магик //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int CountTrades() { int count=0; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==магик) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++; } } } return(count); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 30.04.2009 | //| Описание : Возвращает флаг разрешения торговли по времени. | //+----------------------------------------------------------------------------+ //| Параметры: | //| hb - часы времени начала торговли | //| mb - минуты времени начала торговли | //| he - часы времени окончания торговли | //| me - минуты времени окончания торговли | //+----------------------------------------------------------------------------+ bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0) { datetime db, de; // Время начала и окончания работы int hc; // Часы текущего времени торгового сервера db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb); de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me); hc=TimeHour(TimeCurrent()); if(db>=de) { if(hc>=he) de+=24*60*60; else db-=24*60*60; } if(TimeCurrent()>=db && TimeCurrent()<=de) return(True); else return(False); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DelAllOrders() { bool del=true; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()==магик || OrderSymbol()==Symbol()) { if(OrderType()==OP_BUYSTOP) del=OrderDelete(OrderTicket()); if(OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket()); if(OrderType()==OP_BUYLIMIT) del=OrderDelete(OrderTicket()); if(OrderType()==OP_SELLLIMIT) del=OrderDelete(OrderTicket()); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PutOrder(int type,double price) { int r=0; color clr; double sl=0,tp=0; if(type==1 || type==3 || type==5) { clr=Red; if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits); if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits); } if(type==0 || type==2 || type==4) { clr=Blue; if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits); if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits); } r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),проскальзывание,0,tp,"",магик,0,clr); return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int CountOrders(int type) { int count=0; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==магик) { if(OrderType()==type) count++; } } } return(count); } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ int start() { int spread=MarketInfo(NULL,MODE_SPREAD); double Max=High[iHighest(NULL,0,MODE_HIGH,баров,1)]; double Min= Low[iLowest(NULL,0,MODE_LOW,баров,1)]; if(CountTrades()>0) DelAllOrders(); if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin) && spread<=спред) { if(StopLimit==0) { if(CountOrders(4)<1) PutOrder(4,Max+Delta*Point); if(CountOrders(5)<1) PutOrder(5,Min-Delta*Point); } if(StopLimit==1) { if(CountOrders(3)<1) PutOrder(3,Max+Delta*Point); if(CountOrders(2)<1) PutOrder(2,Min-Delta*Point); } } return(0); } //+------------------------------------------------------------------+
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь