Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
MACD_Bastada
extern int SL=88, TP=10;
int K;
extern double LOT=0.03;
bool flag=false;
bool New_Bar=false;
//---------------------------------------------------------------------------------------------------------------------------------------------
int init()
{ return(0); }
int deinit()
{ return(0); }
//---------------------------------------------------------------------------------------------------------------------------------------------
int start()
{K=(SL/10)+1;
bool plus_signal=false, minus_signal=false;
double Cur_Bar_0, Cur_Bar_1, Cur_Bar_2,N,N_minus,Price,Price_minus;
int Min_Dist,Delta,Delta_minus;
Comment ("Áàëàíñ äåïîçèòà ", AccountBalance(),
"\n쑌֔ ", AccountLeverage());
//----------------------------------------------------ÁËÎÊ ÑÐÀÁÀÒÛÂÀÍÈß ÊÎÍÒÐÎÐÄÅÐÀ-----------------------------------------------------------
if ( OrderSelect(0, SELECT_BY_POS, MODE_TRADES)==true) // Áëîê âûñòàâëåíèÿ è ñðàáàòûâàíèÿ êîíòðîðäåðà
{ if (OrdersTotal()==1 && OrderType()==OP_BUY)
{OrderSend(Symbol(),OP_SELLSTOP,OrderLots()*K, OrderStopLoss(),2, OrderStopLoss()+SL*Point, OrderStopLoss()-TP*Point); flag=true; return;} //åñëè ñðàáîòàë îòëîæåííûé îðäåð, çäåñü âûñòàâëÿåì êîíòðîðäåð íà ïðîäàæó
if (OrdersTotal()==1 && OrderType()==OP_SELL) // åñëè ñðàáîòàë ðàíåå îòëîæåííûé îðäåð íà ïîêóïêó, âûñòàâëÿåì îòëîæåííûé íà ïðîäàæó
{OrderSend(Symbol(),OP_BUYSTOP,OrderLots()*K, OrderStopLoss(),2, OrderStopLoss()-SL*Point, OrderStopLoss()+TP*Point); flag=true; return;}
if (OrdersTotal()==1 && (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP) && flag==true)
{ OrderDelete(OrderTicket()); flag=false; }
if (OrdersTotal()==2) return;
}
//--------------------------------------------------------------------------------------------------------------------------------------------
Fun_New_Bar(); // Îáðàùåíèå ê ô-èè ðåãèñòðàöèè ïîÿâëåíèÿ íîâîãî áàðà
if (New_Bar==false) return; // Åñëè áàð íå íîâûé..
Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL);
Cur_Bar_0=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
Cur_Bar_1=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
Cur_Bar_2=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
plus_signal=(Cur_Bar_0>=Cur_Bar_1 && Cur_Bar_1>Cur_Bar_2 && Cur_Bar_2<=0 && Cur_Bar_0>=0 && Cur_Bar_1>=0);
minus_signal=(Cur_Bar_0<=Cur_Bar_1 && Cur_Bar_1<Cur_Bar_2 && Cur_Bar_2>=0 && Cur_Bar_0<=0 && Cur_Bar_1<=0);
N=NormalizeDouble(High[1]+2*Point,Digits);
N_minus=NormalizeDouble(Low[1]-2*Point,Digits);
Price=NormalizeDouble(Ask,Digits);
Price_minus=NormalizeDouble(Bid,Digits);
Delta=MathAbs((N-Price)/Point);
Delta_minus=MathAbs((N_minus-Price_minus)/Point);
if ((plus_signal==true || minus_signal==true) && (OrdersTotal()==0 || (OrdersTotal()==1 && (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP))) )
{ if (OrdersTotal()==1)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES); OrderDelete(OrderTicket());}
if (plus_signal==true) fun_open_plus_1 (Price, N, Delta, Min_Dist);
if (minus_signal==true)fun_open_minus_1(Price_minus, N_minus, Delta_minus, Min_Dist);
return; }
//---------------------------------------------------------------------------------------------------------------------------------------------
// áëîê ìîäèôèêàöèè îòëîæåííûõ îðäåðîâ
if (OrderSelect(0, SELECT_BY_POS, MODE_TRADES)==true && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
{
if (OrderType()==OP_BUYSTOP) modif_plus(Price, N, Delta, Min_Dist);
if (OrderType()==OP_SELLSTOP) modif_min(Price_minus,N_minus,Delta_minus,Min_Dist);
}
return;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
void Fun_New_Bar() // Ô-èÿ îáíàðóæåíèÿ íîâîãî áàðà
{ // íîâîãî áàðà
static datetime New_Time=0; // Âðåìÿ òåêóùåãî áàðà
if ( OrderSelect(0, SELECT_BY_POS, MODE_TRADES)==true && (OrderType()==OP_BUY || OrderType()==OP_SELL)) return; // âûõîä èç ôóíêöèè, åñëè ñðàáîòàë îòëîæåííûé îðäåð
New_Bar=false;
// Íîâîãî áàðà íåò
if(New_Time!=Time[0]) // Ñðàâíèâàåì âðåìÿ
{ New_Time=Time[0]; // Òåïåðü âðåìÿ òàêîå
New_Bar=true; // Ïîéìàëñÿ íîâûé áàð
}
}
//---------------------------------------------------------------------------------------------------------------------------------------------
void fun_open_plus_1 (double Price, double N, int Delta, int Min_Dist) // ô-ÿ, îòêðûâàåò îòëîæåííûé îðäåð íà ïîêóïêó
{ double STOP,Profit,Enter;
if (Price>N) { OrderSend(Symbol(),OP_BUYSTOP,LOT,Price+Min_Dist*Point,2,Price+Min_Dist*Point-SL*Point,Price+Min_Dist*Point+TP*Point); return;}
if (Delta<=Min_Dist)
{
Enter=NormalizeDouble(Price+Point+Min_Dist*Point,Digits);
STOP=NormalizeDouble(Enter-SL*Point,Digits);
Profit=NormalizeDouble(Enter+TP*Point,Digits);
OrderSend(Symbol(),OP_BUYSTOP,LOT,Enter,2,STOP,Profit); // Âûñòàâëÿåì îðäåð ñ ïîïðàâêîé íà äèàïîçîí çàìîðîçêè
}
else
{
OrderSend(Symbol(),OP_BUYSTOP,LOT,N,2,N-SL*Point,N+TP*Point); // Åñëè öåíà âûøå äèàïîçîíà çàìîðîçêè, âûñòàâëÿåì îáû÷íûé îòëîæåííûé îðäåð
}
return;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
void fun_open_minus_1 (double Price_minus, double N_minus, int Delta_minus, int Min_Dist) // ô-ÿ, îòêðûâàåò îòëîæåííûé îðäåð íà ïðîäàæó
{ double STOP,Profit,Enter;
if (Price_minus<N_minus)
{ OrderSend(Symbol(),OP_SELLSTOP,LOT,Price_minus-Min_Dist*Point,2,Price_minus-Min_Dist*Point+SL*Point,Price_minus-Min_Dist*Point-TP*Point); return;}
if (Delta_minus<=Min_Dist)
{
Enter=NormalizeDouble(Price_minus-Point-Min_Dist*Point,Digits);
STOP=NormalizeDouble(Enter+SL*Point,Digits);
Profit=NormalizeDouble(Enter-TP*Point,Digits);
OrderSend(Symbol(),OP_SELLSTOP,LOT,Enter,2,STOP,Profit); // Âûñòàâëÿåì îðäåð ñ ïîïðàâêîé íà äèàïîçîí çàìîðîçêè
}
else
{
OrderSend(Symbol(),OP_SELLSTOP,LOT,N_minus,2,N_minus+SL*Point,N_minus-TP*Point); // Åñëè öåíà âûøå äèàïîçîíà çàìîðîçêè, âûñòàâëÿåì îáû÷íûé îòëîæåííûé îðäåð
}
return;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
// ôóíêöèÿ ìîäèôèêàöèè îòëîæåííîãî îðäåðà BUY_STOP
void modif_plus(double Price, double N, int Delta, int Min_Dist)
{ bool a=0,d=0;
double Price_NEW,SL_NEW,TP_NEW;
a=NormalizeDouble(Ask+Point+Min_Dist*Point,Digits)==NormalizeDouble(OrderOpenPrice(),Digits);
d=NormalizeDouble(N,Digits)==NormalizeDouble(OrderOpenPrice(),Digits);
if (a==true || d==true) Alert ("Îðäåð OP_BUYSTOP íå íóæäàåòñÿ â ìîäèôèêàöèè");
else
{ if (Delta<=Min_Dist || Ask>N)
{
Price_NEW=NormalizeDouble(Ask+Point+Min_Dist*Point,Digits);
SL_NEW=NormalizeDouble(Price_NEW-SL*Point,Digits);
TP_NEW=NormalizeDouble(Price_NEW+TP*Point,Digits);
OrderModify (OrderTicket (), Price_NEW, SL_NEW, TP_NEW , 0); // Ìîäèôèöèðóåì îðäåð ñ ïîïðàâêîé íà äèàïîçîí çàìîðîçêè
}
else
{
SL_NEW=NormalizeDouble(N-SL*Point,Digits);
TP_NEW=NormalizeDouble(N+TP*Point,Digits);
OrderModify (OrderTicket(), N, SL_NEW, TP_NEW,0);
}
}
return;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
// ôóíêöèÿ ìîäèôèêàöèè îòëîæåííîãî îðäåðà OP_SELLSTOP
void modif_min (double Price_minus, double N_minus, int Delta_minus, int Min_Dist)
{ bool a=0,d=0;
double Price_NEW,SL_NEW,TP_NEW;
a=NormalizeDouble(Bid-Point-Min_Dist*Point,Digits)==NormalizeDouble(OrderOpenPrice(),Digits);
d=NormalizeDouble(N_minus,Digits)==NormalizeDouble(OrderOpenPrice(),Digits);
if (a==true || d==true) Alert ("Îðäåð OP_SELLSTOP íå íóæäàåòñÿ â ìîäèôèêàöèè");
else
{ if (Delta_minus<=Min_Dist || Bid<N_minus)
{
Price_NEW=NormalizeDouble(Bid-Point-Min_Dist*Point,Digits);
SL_NEW=NormalizeDouble(Price_NEW+SL*Point,Digits);
TP_NEW=NormalizeDouble(Price_NEW-TP*Point,Digits);
OrderModify (OrderTicket (), Price_NEW, SL_NEW, TP_NEW , 0); // Ìîäèôèöèðóåì îðäåð ñ ïîïðàâêîé íà äèàïîçîí çàìîðîçêè
}
else
{
SL_NEW=NormalizeDouble(N_minus+SL*Point,Digits);
TP_NEW=NormalizeDouble(N_minus-TP*Point,Digits);
OrderModify (OrderTicket(), N_minus, SL_NEW, TP_NEW,0);
}
}
return;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
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
---