Orders Execution
2
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/CAD
Oct 2024 - Jan 2025
0.00 %
Total Trades
3
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-2.17
Gross Profit
0.00
Gross Loss
-6.52
Total Net Profit
-6.52
-100%
-50%
0%
50%
100%
limits_martin2
//+------------------------------------------------------------------+
//| Limits_Martin.mq4 |
//| Dmitriy Epshteyn |
//| setkafx@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Dmitriy Epshteyn"
#property link "setkafx@mail.ru"
#property version "1.00"
#property strict
extern int Limits0_or_Stops1=0;
// åñëè 0 - òîðãóåì ëèìèòíûìè îðäåðàìè, åñëè 1 - òîðãóåì ñòîïîâûìè
extern bool Last_Price_Limit_Use=false;
//ïîñëå óäàëåíèÿ ñîâåòíèêîì ëèìèòíîé îòëîæêè ïðè ïîÿâëåíèè ðûíî÷íîãî îðäåðà, ñëåäóþùèé ëèìèòíûé îðäåð òàêîãî æå òèïà âûñòàâèòñÿ ïî òîé æå öåíå
// (ëó÷øå îñòàâèòü false)
extern bool Last_Price_Stops_Use=false;
//ïîñëå óäàëåíèÿ ñîâåòíèêîì îòëîæêè ïðè ïîÿâëåíèè ðûíî÷íîãî îðäåðà, ñëåäóþùèé îòëîæåííûé ñòîï îðäåð òàêîãî æå òèïà âûñòàâèòñÿ ïî òîé æå öåíå
extern int Step=200;
//ðàññòîÿíèå, íà êîòîðîì âûñòàâëÿþòñÿ è òÿíóòüñÿ îðäåðà çà öåíîé
extern int Step_Interval=10;
// øàã â ïóíêòàõ, ÷åðåç êîòîðûé îòëîæåííûå îðäåðà ïîäòÿãèâàþòñÿ ê ðûíî÷íîé öåíå
extern int SL=30;
//ñòîï ëîññ
extern int TP=60;
//òåéê ïðîôèò
extern bool Martin=true;
//âêëþ÷èòü ìàðòèí
extern int Limit=10;
//îãðàíè÷åíèå êîëè÷åñòâà óìíîæåíèé ëîòà
extern double Lots=0.01;
//ëîò
extern bool MegaLot=true;
// ïðè îòêðûòèè ñëåäóþùåãî îðäåðà â ñëó÷àå, åñëè ïîñëåäíèé îðäåð (ñåðèÿ óáûòî÷íûõ îðäåðîâ) çàêðûëñÿ óáûòêîì,
// ëîò áóäåò ðàññ÷èòûâàòüñÿ òàêèì îáðàçîì,
// ÷òîáû ïåðåêðûòü ïðåäûäóùèå óáûòêè è çàðàáîòàòü ñóììó â âàëþòå äåïîçèòà = êîë-âî ïóíêòîâ ïî òåéê ïðîôèòó, çàêðûòûå ñòàðòîâûì ëîòîì
extern string A2="_______________Trailing Stop___________";
extern bool Trailing_Use=true;
// âêëþ÷èòü òðåéëèíã ñòîï îðäåðîâ (ðàáîòàåò, åñëè ïîñëåäíèé îðäåð çàêðûëñÿ ïðîôèòîì ëèáî â íîëü)
extern int Profit_Level_Trailing=100;
// óðîâåíü ïðîôèòà â ïóíêòàõ, ïðè äîñòèæåíèè îðäåðà êîòîðûì íà÷èíàåò ðàáîòàòü òðåéëèíã ñòîï
extern int TrailingStop=50;
// Ðàññòîÿíèå TrailingStop ïóíêòîâ, íà êîòîðîì ñòîï ëîññ îðäåðà áóäåò òÿíóòüñÿ çà öåíîé
extern int TrailingStep=50;
// Øàã â ïóíêòàõ, ÷åðåç êîòîðûé áóäåò ïåðåìåùàòüñÿ ñòîï ëîññ îðäåðà
extern string A3="_______________Breakeven______________";
extern bool Breakeven_Use=true;
// âêëþ÷èòü áåçóáûòîê
extern int Profit_Level=30;
// Îðäåð âûõîäèò â ïëþñ íà óêàçàííîå êîëè÷åñòâî ïóíêòîâ (äëÿ áåçóáûòêà)
extern int SL_Plus=10;
// Âûñòàâëÿåòñÿ áåçóáûòîê îðäåðà+SL_Plus â ïóíêòàõ
extern int Slip=5;
// Ïðîñêàëüçûâàíèå
extern int Magic=100;
//èíäèâèäóàëüíûé íîìåð ýêñïåðòà
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
ENUM_TIMEFRAMES TF=PERIOD_CURRENT;
int orders=0;
int accTotal1=OrdersHistoryTotal();
for(int h_1=accTotal1-1;h_1>=0;h_1--)
if(OrderSelect(h_1,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(OrderCloseTime()>=iTime(NULL,TF,0)) {orders++; }
if(OrderCloseTime()<iTime(NULL,TF,0)) {break;}
}
//--------------èñòîðèÿ îðäåðîâ--------------
int loss=0; // êîë-âî îðäåðîâ, çàêðûòûõ â ïîäðÿä ñ óáûòêîì
double loss_profit=0;
for(int h_2=accTotal1-1;h_2>=0;h_2--)
if(OrderSelect(h_2,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderProfit()<0) {loss++;loss_profit+=OrderProfit()+OrderSwap()+OrderCommission(); }
if(OrderProfit()>0) {break;}
}
int OP_TYPE=-1;
double h_Lot=0; // ëîò ïîñëåäíåãî îðäåðà
double last_profit=0; // ïðîôèò ïîñëåäíåãî çàêðûòîãî îðäåðà
for(int h_3=accTotal1-1;h_3>=0;h_3--)
if(OrderSelect(h_3,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL) {h_Lot=OrderLots(); last_profit=OrderProfit()+OrderSwap()+OrderCommission();OP_TYPE=OrderType(); break;}
}
double last_limit_price=0; // öåíà îòêðûòèÿ ïîñëåäíåãî óäàëåííîãî ëèìèòíîãî îðäåðà
int OP_TYPE_LIMIT=-1; // òèï ïîñëåäíåãî óäàëåííîãî ëèìèòíîãî îðäåðà
for(int h_4=accTotal1-1;h_4>=0;h_4--)
if(OrderSelect(h_4,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT) {last_limit_price=OrderOpenPrice(); OP_TYPE_LIMIT=OrderType(); break;}
}
double last_stop_price=0; // öåíà îòêðûòèÿ ïîñëåäíåãî óäàëåííîãî ëèìèòíîãî îðäåðà
int OP_TYPE_STOPS=-1; // òèï ïîñëåäíåãî óäàëåííîãî ëèìèòíîãî îðäåðà
for(int h_5=accTotal1-1;h_5>=0;h_5--)
if(OrderSelect(h_5,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {last_stop_price=OrderOpenPrice(); OP_TYPE_STOPS=OrderType(); break;}
}
//-------------------ëîò------------------
double sl = NormalizeDouble(SL*Point,Digits);
double tp = NormalizeDouble(TP*Point,Digits);
double lots_step=MarketInfo(Symbol(),MODE_LOTSTEP);
int lots_digits = 0;
if(lots_step==0.01) {lots_digits=2;}
if(lots_step==0.1) {lots_digits=1;}
if(lots_step==1.0) {lots_digits=0;}
double Lot=0;
if((last_profit>=0) || (loss>=Limit)) {Lot=Lots;}
if(MegaLot==true && last_profit<0 && tp/Point*h_Lot *MarketInfo(Symbol(),MODE_TICKVALUE)<=MathAbs(loss_profit) && loss<Limit) {Lot=NormalizeDouble(((MathAbs(loss_profit)+TP*Lots*MarketInfo(Symbol(),MODE_TICKVALUE))/tp*Point/MarketInfo(Symbol(),MODE_TICKVALUE)),2); }
if(MegaLot==false && last_profit<0 && tp/Point*h_Lot *MarketInfo(Symbol(),MODE_TICKVALUE)<=MathAbs(loss_profit) && loss<Limit) {Lot=NormalizeDouble(((MathAbs(loss_profit))/tp*Point/MarketInfo(Symbol(),MODE_TICKVALUE)),2); }
if(last_profit<0 && tp/Point*h_Lot *MarketInfo(Symbol(),MODE_TICKVALUE)>MathAbs(loss_profit) && loss<Limit) {Lot=h_Lot; }
double lots_test=Lot;
lots_test=NormalizeDouble(MathCeil((lots_test)/lots_step)*lots_step,lots_digits);
if(lots_test<Lot) {Lot=Lots;}
if(Martin==false) {Lot=Lots;}
if(Lot<MarketInfo(Symbol(),MODE_MINLOT)) {Lot=MarketInfo(Symbol(),MODE_MINLOT);}
if(Lot>MarketInfo(Symbol(),MODE_MAXLOT)) {Lot=MarketInfo(Symbol(),MODE_MAXLOT);}
bool open_buy=true,open_sell=true;
if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lot)<=0) {Lot=Lots;}
if(AccountFreeMarginCheck(Symbol(),OP_SELL,Lot)<=0) {Lot=Lots;}
if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lot)<=0) {open_buy=false;}
if(AccountFreeMarginCheck(Symbol(),OP_SELL,Lot)<=0) {open_sell=false;}
if(open_buy==false || open_sell==false) {Comment("Not enough money to open a lot buy=",DoubleToStr(Lot,2)," or lot sell=",DoubleToStr(Lot,2));}
//--------------
double step=NormalizeDouble(Step*Point,Digits);
double step_interval=NormalizeDouble(Step_Interval*Point,Digits);
double stops=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
double TS=NormalizeDouble(TrailingStop*Point,Digits);
double shag=NormalizeDouble(TrailingStep*Point,Digits);
double sl_Plus=NormalizeDouble(SL_Plus*Point,Digits);
double profit_level=NormalizeDouble(Profit_Level*Point,Digits);
double profit_level_tr=NormalizeDouble(Profit_Level_Trailing*Point,Digits);
int b=0,s=0,n=0,blimit=0,slimit=0,bs=0,ss=0,total=OrdersTotal();
for(int i1=total-1; i1>=0; i1--)
if(OrderSelect(i1,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
b++;n++;
if(SL>0 && TP>0 && OrderStopLoss()==0 && Bid>NormalizeDouble(OrderOpenPrice()-sl+stops,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl,Digits)
&& OrderTakeProfit()==0 && Ask<NormalizeDouble(OrderOpenPrice()+tp-stops,Digits) && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits),NormalizeDouble(OrderOpenPrice()+tp,Digits),0,0);if(!mod) Print("Error modification block 1=",GetLastError());}
if(SL>0 && OrderStopLoss()==0 && Bid>NormalizeDouble(OrderOpenPrice()-sl+stops,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 2=",GetLastError());}
if(SL>0 && OrderStopLoss()==0 && Bid<NormalizeDouble(OrderOpenPrice()-sl+stops,Digits) && OrderStopLoss()!=NormalizeDouble(Bid-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 3=",GetLastError());}
if(TP>0 && OrderTakeProfit()==0 && Ask<NormalizeDouble(OrderOpenPrice()+tp-stops,Digits) && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+tp,Digits),0,0);if(!mod) Print("Error modification block 4=",GetLastError());}
if(TP>0 && OrderTakeProfit()==0 && Ask>NormalizeDouble(OrderOpenPrice()+tp-stops,Digits) && OrderTakeProfit()!=NormalizeDouble(Ask+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(Ask+stops,Digits),0,0);if(!mod) Print("Error modification block 5=",GetLastError());}
//---
if(last_profit>=0 && Trailing_Use==true && Bid>NormalizeDouble(Ask-TS+stops,Digits) && Ask-OrderStopLoss()>=TS && Bid-OrderOpenPrice()>=profit_level_tr &&
(Ask-TS)-OrderStopLoss()>=shag && OrderStopLoss()!=NormalizeDouble(Ask-TS,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask-TS,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 6=",GetLastError());}
if(last_profit>=0 && Breakeven_Use==true && Bid>=NormalizeDouble(OrderOpenPrice()+profit_level,Digits) && Bid>NormalizeDouble(OrderOpenPrice()+sl_Plus+stops,Digits)
&& NormalizeDouble(OrderOpenPrice()+sl_Plus,Digits)>OrderStopLoss()
&& OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl_Plus,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl_Plus,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 7=",GetLastError());}
}
if(OrderType()==OP_SELL)
{
s++;n++;
if(SL>0 && TP>0 && OrderStopLoss()==0 && Ask<NormalizeDouble(OrderOpenPrice()+sl-stops,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl,Digits)
&& OrderTakeProfit()==0 && Bid>NormalizeDouble(OrderOpenPrice()-tp+stops,Digits) && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits),NormalizeDouble(OrderOpenPrice()-tp,Digits),0,0);if(!mod) Print("Error modification block 6=",GetLastError());}
if(SL>0 && OrderStopLoss()==0 && Ask<NormalizeDouble(OrderOpenPrice()+sl-stops,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 7=",GetLastError());}
if(SL>0 && OrderStopLoss()==0 && Ask>NormalizeDouble(OrderOpenPrice()+sl-stops,Digits) && OrderStopLoss()!=NormalizeDouble(Ask+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 8=",GetLastError());}
if(TP>0 && OrderTakeProfit()==0 && Bid>NormalizeDouble(OrderOpenPrice()-tp+stops,Digits) && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-tp,Digits),0,0);if(!mod) Print("Error modification block 9=",GetLastError());}
if(TP>0 && OrderTakeProfit()==0 && Bid<NormalizeDouble(OrderOpenPrice()-tp+stops,Digits) && OrderTakeProfit()!=NormalizeDouble(Bid-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(Bid-stops,Digits),0,0);if(!mod) Print("Error modification block 10=",GetLastError());}
//----
if(last_profit>=0 && Trailing_Use==true && OrderStopLoss()>0 && Bid<NormalizeDouble(Bid+TS-stops,Digits) && OrderStopLoss()-Bid>=TS && OrderOpenPrice()-Ask>=profit_level_tr &&
OrderStopLoss()-(Bid+TS)>=shag && OrderStopLoss()!=NormalizeDouble(Bid+TS,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid+TS,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 13=",GetLastError());}
if(last_profit>=0 && Trailing_Use==true && OrderStopLoss()==0 && Bid<NormalizeDouble(Bid+TS-stops,Digits) && OrderOpenPrice()-Ask>=profit_level_tr && OrderStopLoss()!=NormalizeDouble(Bid+TS,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid+TS,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 14=",GetLastError());}
if(last_profit>=0 && Breakeven_Use==true && OrderStopLoss()>0 && Ask<=NormalizeDouble(OrderOpenPrice()-profit_level,Digits) && Ask<NormalizeDouble(OrderOpenPrice()-sl_Plus-stops,Digits)
&& NormalizeDouble(OrderOpenPrice()-sl_Plus,Digits)<OrderStopLoss()
&& OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl_Plus,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl_Plus,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 15=",GetLastError());}
if(last_profit>=0 && Breakeven_Use==true && OrderStopLoss()==0 && Ask<=NormalizeDouble(OrderOpenPrice()-profit_level,Digits) && Ask<NormalizeDouble(OrderOpenPrice()-sl_Plus-stops,Digits)
&& OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl_Plus,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl_Plus,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 16=",GetLastError());}
}
if(OrderType()==OP_BUYLIMIT)
{
blimit++;
if(SL>0 && TP>0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),NormalizeDouble(Bid-step-sl,Digits),NormalizeDouble(Bid-step+tp,Digits),0,0);if(!mod) Print("Error modification block 11=",GetLastError());}
if(SL>0 && TP==0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),NormalizeDouble(Bid-step-sl,Digits),0,0,0);if(!mod) Print("Error modification block 12=",GetLastError());}
if(SL==0 && TP>0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),0,NormalizeDouble(Bid-step+tp,Digits),0,0);if(!mod) Print("Error modification block 13=",GetLastError());}
if(SL==0 && TP==0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),0,0,0,0);if(!mod) Print("Error modification=",GetLastError());}
if(SL>0 && sl>stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 14=",GetLastError());}
if(SL>0 && sl<=stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 15=",GetLastError());}
if(TP>0 && tp>stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+tp,Digits),0,0);if(!mod) Print("Error modification block 16=",GetLastError());}
if(TP>0 && tp<=stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+stops,Digits),0,0);if(!mod) Print("Error modification block 17=",GetLastError());}
}
if(OrderType()==OP_SELLLIMIT)
{
slimit++;
if(SL>0 && TP>0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),NormalizeDouble(Ask+step+sl,Digits),NormalizeDouble(Ask+step-tp,Digits),0,0);if(!mod) Print("Error modification 18",GetLastError());}
if(SL>0 && TP==0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),NormalizeDouble(Ask+step+sl,Digits),0,0,0);if(!mod) Print("Error modification block 19=",GetLastError());}
if(SL==0 && TP>0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),0,NormalizeDouble(Ask+step-tp,Digits),0,0);if(!mod) Print("Error modification block 20=",GetLastError());}
if(SL==0 && TP==0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),0,0,0,0);if(!mod) Print("Error modification block 27=",GetLastError());}
if(SL>0 && sl>stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 21=",GetLastError());}
if(SL>0 && sl<=stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 22=",GetLastError());}
if(TP>0 && tp>stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-tp,Digits),0,0);if(!mod) Print("Error modification block 23=",GetLastError());}
if(TP>0 && tp<=stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-stops,Digits),0,0);if(!mod) Print("Error modification block 24=",GetLastError());}
}
if(OrderType()==OP_BUYSTOP)
{
bs++;
if(SL>0 && TP>0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),NormalizeDouble(Ask+step-sl,Digits),NormalizeDouble(Ask+step+tp,Digits),0,0);if(!mod) Print("Error modification block 11=",GetLastError());}
if(SL>0 && TP==0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),NormalizeDouble(Ask+step-sl,Digits),0,0,0);if(!mod) Print("Error modification block 12=",GetLastError());}
if(SL==0 && TP>0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),0,NormalizeDouble(Ask+step+tp,Digits),0,0);if(!mod) Print("Error modification block 13=",GetLastError());}
if(SL==0 && TP==0 && OrderOpenPrice()-Ask>step && OrderOpenPrice()-(Ask+step)>step_interval && OrderOpenPrice()!=NormalizeDouble(Ask+step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Ask+step,Digits),0,0,0,0);if(!mod) Print("Error modification=",GetLastError());}
if(SL>0 && sl>stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 14=",GetLastError());}
if(SL>0 && sl<=stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 15=",GetLastError());}
if(TP>0 && tp>stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+tp,Digits),0,0);if(!mod) Print("Error modification block 16=",GetLastError());}
if(TP>0 && tp<=stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+stops,Digits),0,0);if(!mod) Print("Error modification block 17=",GetLastError());}
}
if(OrderType()==OP_SELLSTOP)
{
ss++;
if(SL>0 && TP>0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),NormalizeDouble(Bid-step+sl,Digits),NormalizeDouble(Bid-step-tp,Digits),0,0);if(!mod) Print("Error modification 18",GetLastError());}
if(SL>0 && TP==0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),NormalizeDouble(Bid-step+sl,Digits),0,0,0);if(!mod) Print("Error modification block 19=",GetLastError());}
if(SL==0 && TP>0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),0,NormalizeDouble(Bid-step-tp,Digits),0,0);if(!mod) Print("Error modification block 20=",GetLastError());}
if(SL==0 && TP==0 && Bid-OrderOpenPrice()>step && (Bid-step)-OrderOpenPrice()>step_interval && OrderOpenPrice()!=NormalizeDouble(Bid-step,Digits))
{bool mod=OrderModify(OrderTicket(),NormalizeDouble(Bid-step,Digits),0,0,0,0);if(!mod) Print("Error modification block 27=",GetLastError());}
if(SL>0 && sl>stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 21=",GetLastError());}
if(SL>0 && sl<=stops && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+stops,Digits),OrderTakeProfit(),0,0);if(!mod) Print("Error modification block 22=",GetLastError());}
if(TP>0 && tp>stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-tp,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-tp,Digits),0,0);if(!mod) Print("Error modification block 23=",GetLastError());}
if(TP>0 && tp<=stops && OrderTakeProfit()!=NormalizeDouble(OrderOpenPrice()-stops,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-stops,Digits),0,0);if(!mod) Print("Error modification block 24=",GetLastError());}
}
}
double buylimit_open=0,selllimit_open=0;
int sig_slimit=0,sig_blimit=0;
if(n==0&&blimit==0&&step>stops&&Last_Price_Limit_Use==false) {buylimit_open=NormalizeDouble(Bid-step,Digits);sig_blimit=1; }
if(n==0&&slimit==0&&step>stops&&Last_Price_Limit_Use==false) {selllimit_open=NormalizeDouble(Ask+step,Digits);sig_slimit=1;}
if(n==0&&blimit==0&&step<=stops&&Last_Price_Limit_Use==false) {buylimit_open=NormalizeDouble(Bid-stops,Digits);sig_blimit=1; }
if(n==0&&slimit==0&&step<=stops&&Last_Price_Limit_Use==false) {selllimit_open=NormalizeDouble(Ask+stops,Digits);sig_slimit=1;}
if(n==0 && blimit==0 && OP_TYPE_LIMIT==OP_BUYLIMIT && Bid>=last_limit_price+stops && Last_Price_Limit_Use==true) {buylimit_open=NormalizeDouble(last_limit_price,Digits);sig_blimit=1; }
if(n==0 && blimit==0 && OP_TYPE_LIMIT!=OP_BUYLIMIT && Bid>=Bid-step+stops && Last_Price_Limit_Use==true) {buylimit_open=NormalizeDouble(Bid-step,Digits);sig_blimit=1; }
if(n==0&&blimit==0&&OP_TYPE_LIMIT==OP_BUYLIMIT&&Bid<=last_limit_price+stops&&Last_Price_Limit_Use==true) {buylimit_open=NormalizeDouble(Bid-stops,Digits);sig_blimit=1; }
if(n==0 && blimit==0 && OP_TYPE_LIMIT!=OP_BUYLIMIT && Bid<=Bid-step+stops && Last_Price_Limit_Use==true) {buylimit_open=NormalizeDouble(Bid-stops,Digits);sig_blimit=1; }
if(n==0 && slimit==0 && OP_TYPE_LIMIT==OP_SELLLIMIT && Ask<=last_limit_price-stops && Last_Price_Limit_Use==true) {selllimit_open=NormalizeDouble(last_limit_price,Digits);sig_slimit=1; }
if(n==0 && slimit==0 && OP_TYPE_LIMIT!=OP_SELLLIMIT && Ask<=Ask+step-stops && Last_Price_Limit_Use==true) {selllimit_open=NormalizeDouble(Ask+step,Digits);sig_slimit=1; }
if(n==0&&slimit==0&&OP_TYPE_LIMIT==OP_SELLLIMIT&&Ask>=last_limit_price-stops&&Last_Price_Limit_Use==true) {selllimit_open=NormalizeDouble(Ask+stops,Digits);sig_slimit=1; }
if(n==0 && slimit==0 && OP_TYPE_LIMIT!=OP_SELLLIMIT && Ask>=Ask+step-stops && Last_Price_Limit_Use==true) {selllimit_open=NormalizeDouble(Ask+stops,Digits);sig_slimit=1; }
if(sig_slimit==1 && open_sell==true && Limits0_or_Stops1==0) {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lot,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
if(sig_blimit==1 && open_buy==true && Limits0_or_Stops1==0) {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lot,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
double buystop_open=0,sellstop_open=0;
int sig_bstop=0,sig_sstop=0;
if(n==0&&bs==0&&step>stops&&Last_Price_Stops_Use==false) {buystop_open=NormalizeDouble(Ask+step,Digits);sig_bstop=1; }
if(n==0&&ss==0&&step>stops&&Last_Price_Stops_Use==false) {sellstop_open=NormalizeDouble(Bid-step,Digits);sig_sstop=1;}
if(n==0&&bs==0&&step<=stops&&Last_Price_Stops_Use==false) {buystop_open=NormalizeDouble(Ask+stops,Digits);sig_bstop=1; }
if(n==0&&ss==0&&step<=stops&&Last_Price_Stops_Use==false) {sellstop_open=NormalizeDouble(Bid-stops,Digits);sig_sstop=1;}
if(n==0 && bs==0 && OP_TYPE_STOPS==OP_BUYSTOP && Ask<=last_stop_price-stops && Last_Price_Stops_Use==true) {buystop_open=NormalizeDouble(last_stop_price,Digits);sig_bstop=1; }
if(n==0 && bs==0 && OP_TYPE_STOPS!=OP_BUYSTOP && Ask<=Ask+step-stops && Last_Price_Stops_Use==true) {buystop_open=NormalizeDouble(Ask+step,Digits);sig_bstop=1; }
if(n==0 && bs==0 && OP_TYPE_STOPS==OP_BUYSTOP && Ask>=last_stop_price+stops && Last_Price_Stops_Use==true) {buystop_open=NormalizeDouble(Ask+stops,Digits);sig_bstop=1; }
if(n==0 && bs==0 && OP_TYPE_STOPS!=OP_BUYSTOP && Ask>=Ask+step-stops && Last_Price_Stops_Use==true) {buystop_open=NormalizeDouble(Ask+stops,Digits);sig_bstop=1; }
if(n==0 && ss==0 && OP_TYPE_STOPS==OP_SELLSTOP && Bid>=last_stop_price+stops && Last_Price_Stops_Use==true) {sellstop_open=NormalizeDouble(last_stop_price,Digits);sig_sstop=1; }
if(n==0 && ss==0 && OP_TYPE_STOPS!=OP_SELLSTOP && Bid>=Bid-step+stops && Last_Price_Stops_Use==true) {sellstop_open=NormalizeDouble(Bid-step,Digits);sig_sstop=1; }
if(n==0 && ss==0 && OP_TYPE_STOPS==OP_SELLSTOP && Bid<=last_stop_price+stops && Last_Price_Stops_Use==true) {sellstop_open=NormalizeDouble(Bid-stops,Digits);sig_sstop=1; }
if(n==0 && ss==0 && OP_TYPE_STOPS!=OP_SELLSTOP && Bid<=Bid-step+stops && Last_Price_Stops_Use==true) {sellstop_open=NormalizeDouble(Bid-stops,Digits);sig_sstop=1; }
if(sig_sstop==1 && open_sell==true && Limits0_or_Stops1==1) {int open=OrderSend(Symbol(),OP_SELLSTOP,Lot,sellstop_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
if(sig_bstop==1 && open_buy==true && Limits0_or_Stops1==1) {int open=OrderSend(Symbol(),OP_BUYSTOP,Lot,buystop_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
for(int lim_del=total-1; lim_del>=0; lim_del--)
if(OrderSelect(lim_del,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
if(OrderType()>1)
{
if(n>0) {int cl=OrderDelete(OrderTicket());} // óäàëÿåì îòëîæêó ïðè ïîÿâëåíèè ðûíî÷íîãî îðäåðà
}
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---