Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
5s8t_Alligatorgg4_vol_1_1
//+------------------------------------------------------------------+
//| Íà Alligator'å vol.1.1.mq4|
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Äåì¸õèí Âèòàëèé Åâãåíüåâè÷."
#property link "Vitalya_1983@list.ru"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern double MaxLot = 0.5, //îãðàíè÷èâàåì ðàçìåð ñòàðòîâîãî ëîòà
koeff = 1.3, //êîýôôèöèåíò óâåëè÷åíèÿ ëîòîâ ïðè ìàðòèíãåéëå
risk = 0.04, //ðèñê, âëèÿåò íà ðàçìåð ñòàðòîâîãî ëîòà
shirina1 = 0.0005, //øèðèíà "çåâà" Alligator'à íà îòêðûòèå îðäåðà
shirina2 = 0.0001; //øèðèíà "çåâà" Alligator'à íà çàêðûòèå îðäåðà
extern bool Ruchnik = false, //"Ïëàâíî" çàâåðøàåò ñåññèþ. Åñëè íàäî îòêëþÿèòü ñîâåòíèê
Vhod_Alligator= true, //Ðàçðåøàåò îòêðûâàòü îðäåðà Àëëèãàòîðó
Vhod_Fractals = false, //Ïðîâåðêà Àëëèãàòîðà Ôðàêòàëîì
Vyhod_Alligator = false, //Ðàçðåøàåò çàêðûâàòü îðäåðà Àëëèãàòîðó
OnlyOneOrder = true, //Åñëè False, âêëþ÷àåòñÿ äîêóïêà ïðè ïîâòîðå ñèãíàëà
EnableMartingail = true, //Ìàðòèíãåéë
Trailing = true; //ÒðåéëèíãÑòîï
extern int TP = 80, //TP
SL = 80, //SL :)
TrailingStop = 30, //òîæå ïîíÿòíî
profit = 20, //Ãàðàíòèðóåò ïðèáûëü ïðè ñðàáàòûâàíèè òðåéëèíãà
blue = -8, //íàñòðîéêè Àëëèãàòîðà
red = -3,
green = 8,
Fractal_bars = 10, //Êîëè÷åñòâî áàðîâ...
visota_fractal = 30, //ñðåäè êîòîðûõ èùåòñÿ ñîîòâåòñòâóþùèé ïî âûñîòå è íàïðàâëåíèþ ôðàêòàë
spred = 10, //ß íå ñòàâèë ñïðåä èç ÄÖ. Ðó÷êàìè. À ëó÷øå ñðàçå 10
Koleno = 10, //Êîëè÷åñòâî "Êîëåí" Ìàðòèíãåéëà
Zaderzhka = 2000; //Ïàóçà ìåæäó ñäåëêàìè
bool Proverka_buy,Proverka_sell,Prodazha,Pokupka,Trailing_buy,Trailing_sell,Vihod_Alligator_sell,Vihod_Alligator_buy, Fractal;
int seychas_buy=1,seychas_sell=1, bylo_buy,bylo_sell,i;
string text ;
double Lot, Magic_number, up, down;
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int init () //îáúÿñíÿåì êàê áóäåì òîðãîâàòü
{
text = "Íà Alligatorå: ";
if (Period() == 1) string per = "M1 ";
if (Period() == 5) per = "M5 ";
if (Period() == 15) per = "M15 ";
if (Period() == 30) per = "M30 ";
if (Period() == 60) per = "H1 ";
if (Period() == 240) per = "H4 ";
if (Period() == 1440) per = "D1 ";
text = text + Symbol()+" "+per;
if (Vhod_Alligator)
{
text = text + "Àëëèãàòîð âêë ";
}
if (Vhod_Fractals)
{
text = text + "Fraktals âêë ";
}
if (!OnlyOneOrder)
{
text = text + "äîêóïêà âêë ";
}
if (EnableMartingail)
{
text = text + "Ìàðòèíãåéë âêë ";
}
if (Trailing)
{
text = text + "Trailing âêë ";
}
Alert (text);
return (0);
}
int deinit()
{
text="";
}
return (0);
int start()
{
RefreshRates();
bool order_est_buy = false; //ñáðàñûâàåì ñ÷åò÷èê îòêðûòûõ îðäåðîâ
int Magic_number = Period(); //Äàåì Ìàãè÷åñêîå ÷èñëî äëÿ òîðãîâëè íà ðàçíûõ ÒÔ
int Orders = OrdersTotal(); //ñ÷åò÷èê ïðîâåðêè îðäåðîâ
if (Trailing==true)
{
Trailing_start (); //Çàïóñêàåì òðåéëèíã ñòîï
}
if (Vhod_Alligator== true) // Èñïîëüçóÿ íàñòðîéêè Àëëèãàòîðà îïðåäåëÿåì ìîìåíò âõîäà â ðûíîê....
{
bylo_buy = seychas_buy; //"Ñåãîäíÿ òàêæå êàê â÷åðà" :)
bylo_sell = seychas_sell;
double blue_line=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_WEIGHTED, MODE_GATORJAW, blue);
double red_line=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_WEIGHTED, MODE_GATORTEETH , red);
double green_line=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_WEIGHTED, MODE_GATORLIPS , green);
double PriceHigh= High[0];
if (green_line>blue_line+shirina1) // ñèãíàëû âõîäà
seychas_buy=1;
if (blue_line>green_line+shirina1)
seychas_sell=1;
if (green_line+shirina2<red_line) // ñèãíàëû âûõîäà
seychas_buy=0;
if (blue_line+shirina2<red_line)
seychas_sell=0;
}
if (Vhod_Fractals) //Ïðîâåðÿåì ôðàêòàëîì
{
Fractal();
}
if (!Proverka_buy ()||OnlyOneOrder == false) //Åñëè îòêðûòûõ îðäåðîâ íåò...
{
for (i = OrdersTotal() ; i>=0; i--) //Èíòåðåñóåìñÿ...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES); //Åñòü ëè ó íàñ îòëîæåííûå?
if(OrderType() == OP_BUYLIMIT && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
{
OrderDelete(OrderTicket()); //Çàêðûâàåì èõ
RefreshRates ();
Sleep (Zaderzhka); // Îòäîõíåì
}
}
if (Ruchnik == false && (seychas_buy > bylo_buy||Vhod_Alligator== false))// Åñëè Àëëèãàòîð äàë êîìàíäó èëè íå ìåøàåò...
{
if(up>0||Vhod_Fractals == false) //È ôðàêòàë äàåò äîáðî
{
Pokupka(); //Îòêðûâàåì äëèííóþ
}
}
}
if (!Proverka_sell()||OnlyOneOrder == false) //òîæå ñàìîå, òîëüêî äëÿ êîðîòêèõ
{
for (i = OrdersTotal() ; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_SELLLIMIT && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
{
OrderDelete(OrderTicket());
RefreshRates ();
Sleep (Zaderzhka);
}
}
if (Ruchnik == false && (seychas_sell > bylo_sell||Vhod_Alligator== false))
{
if(down>0||Vhod_Fractals == false)
{
Prodazha();
}
}
}
if (Vyhod_Alligator == true) //Åñëè Àëëèãàòîð äàë êîìàíäó íà çàêðûòèå
{
if (seychas_buy < bylo_buy&&Vihod_Alligator_buy == true)
{
for (i = 0 ; i<=Orders; i++) //èùåì îòêðûòûå îðäåðà
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol() ==Symbol() &&OrderMagicNumber()==Magic_number)
OrderClose(OrderTicket() ,OrderLots(),Bid,3,Blue); //È ñíîñèì èõ
}
}
if (seychas_sell < bylo_sell&&Vihod_Alligator_sell == true)
{
Orders=OrdersTotal();
for (i = 0 ; i<=Orders; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL&& OrderSymbol() ==Symbol() &&OrderMagicNumber() == Magic_number)
OrderClose(OrderTicket() ,OrderLots(),Ask,3,Blue);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
// Ïðîâåðêà íàëè÷èÿ îòêðûòûõ îðäåðîâ
bool Proverka_buy()
{
bool Otkryt_orders_buy = false; //ôëàã "îòêðûòûõ îðäåðîâ íåò"
for (i = OrdersTotal() ; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
int Magic_number= Period();
if(OrderType() == OP_BUY && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
Otkryt_orders_buy = true; //Ïîïàëñÿ!!!
}
if (Otkryt_orders_buy==true)
return(true);
else
{
Vihod_Alligator_buy = true;
return (false);
}
}
//--------------------------
bool Proverka_sell()
{
bool Otkryt_orders_sell = false;
for (i = OrdersTotal() ; i>=0; i--)
{
Magic_number= Period();
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_SELL && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
Otkryt_orders_sell= true;
}
if (Otkryt_orders_sell==true)
return(true);
else
{
Vihod_Alligator_sell = true;
return (false);
}
}
// Âûñòàâëåíèå îðäåðîâ íà ïðîäàæó
bool Prodazha()
{
Lot = AccountFreeMargin()/1000*risk; //Áåðåì ïðîöåíò îò ìàðæè
if (Lot >MaxLot) Lot = MaxLot; //âûðàâíèâàåì åãî
if (Lot <0.01) Lot = 0.01;
if (EnableMartingail == true) TP=SL/koeff; //Åñëè ìàðòèíãåéë âêë, òî ÒÏ íå îïòèìèçèðóåì
Magic_number=Period();
Sleep (Zaderzhka);
RefreshRates ();
if (TP == 0)
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask + SL*Point,0,text,Magic_number);
else
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask + SL*Point,Bid - TP*Point,text,Magic_number);
if (EnableMartingail == true) //Åñëè ìû èñïîëüçóåì ìàðòèíãåéë
{
for (i=1; i<=Koleno; i++)
{
Lot = Lot*2*koeff; //Êîýôôèöèåíò 1.5 äàñò óâåëè÷åíèå ñëåäóþùåãî ëîòà â 3 ðàçà
Sleep (Zaderzhka);
RefreshRates ();
OrderSend(Symbol(),OP_SELLLIMIT,Lot,Ask+(SL*Point*(i)-spred*Point),1,Ask + SL*Point*(i+1),Ask+TP*Point*(i-1),text,Magic_number);
}
}
}
// Âûñòàâëåíèå îðäåðîâ íà ïîêóïêó
bool Pokupka()
{
double Lot = AccountFreeMargin()/1000*risk;
if (Lot >MaxLot) Lot = MaxLot;
if (Lot <0.01) Lot = 0.01;
if (EnableMartingail == true) TP=SL/koeff;
Magic_number=Period();
Sleep (Zaderzhka);
RefreshRates ();
if (TP == 0)
OrderSend(Symbol(),OP_BUY,Lot,Ask,1,Bid - SL*Point,0,text,Magic_number);
else
OrderSend(Symbol(),OP_BUY,Lot,Ask,1,Bid - SL*Point,Ask + TP*Point,text,Magic_number);
if (EnableMartingail == true)
{
for (i=1; i<=Koleno; i++)
{
Lot = Lot*2*koeff;
Sleep (Zaderzhka);
RefreshRates ();
OrderSend(Symbol(),OP_BUYLIMIT,Lot,Bid - (SL*Point*(i)-spred*Point),1,Bid - SL*Point*(i+1),Bid - TP*Point*(i-1),text,Magic_number);
}
}
}
int Trailing_start ()
{
for (i = OrdersTotal() ; i>=0; i--) //èùåì îòêðûòûå îðäåðà
{
RefreshRates();
Magic_number= Period();
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_BUY && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
{
if (TP==0)
double TrailingStopKoeff = TrailingStop;
else
{
//Êîýôôèöèåíò Òðåéëèíãà äàåò ýôôåêò ïðèæèìàíèÿ SL ê TP ïðè ïðèáëèæåíèè öåíû ê TP
TrailingStopKoeff = (OrderTakeProfit() - OrderOpenPrice())/(OrderTakeProfit () - Bid)*TrailingStop;
//Åñëè îí áîëüøå çàëîæåííîãî â ïàðàìåòðàõ, òî îí ñòàíîâèòñÿ åìó ðàâíûì
if (TrailingStopKoeff >TrailingStop) TrailingStopKoeff = TrailingStop;
}
//Åñëè SL äâëüøå òðåéëèíãà, òî SL = òðåéëèíãó
if(Bid-OrderOpenPrice()>profit&&Bid>Point*TrailingStopKoeff +OrderOpenPrice()&&OrderStopLoss()<Bid-Point*TrailingStopKoeff )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStopKoeff,OrderTakeProfit(),text,Blue);
Sleep (Zaderzhka);
Vihod_Alligator_buy = false;
}
}
if(OrderType() == OP_SELL && OrderSymbol () ==Symbol() && OrderMagicNumber() == Magic_number)
{
TrailingStopKoeff = (OrderOpenPrice()-OrderTakeProfit())/(Ask - OrderTakeProfit ())*TrailingStop;
if (TrailingStopKoeff >TrailingStop) TrailingStopKoeff = TrailingStop;
if(OrderOpenPrice()-Ask>profit&&OrderOpenPrice()-Ask>Point*TrailingStopKoeff&&OrderStopLoss()>Ask+Point*TrailingStopKoeff )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStopKoeff,OrderTakeProfit(),text,Blue);
Sleep (Zaderzhka);
Vihod_Alligator_sell = false;
}
}
}
return (0);
}
double Fractal ()
{
up =0; //Ñáðîñ ñèãíàëîâ
down = 0;
for (i=Fractal_bars;i>=3;i--)
{
double up_prov =iFractals(NULL, 0, MODE_UPPER, i); //Â íàøèõ áàðàõ äîëæåí áûòü
if (up_prov >up) //ôðàêòàë
up = up_prov;
double down_prov=iFractals(NULL, 0, MODE_LOWER, i);
if (down_prov>down)
down = down_prov;
}
if (up<Ask+visota_fractal*Point) //È ýòîò ôðàêòàë äîëæåí áûòü çàìåòåí
up = 0;
if (down<Bid-visota_fractal*Point)
down = 0;
}
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
---