5s8t_Alligatorgg4_vol_1_1

Author: Copyright � 2008, ������ ������� ����������.
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Bill Williams AlligatorFractals
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---