N7S_AO_772012_v1.0.3[1]





//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
//Ø                                                                                                             Ø//
//Ø                         N7S_AO_194694_0.mq4       v.77.2012                                                 Ø//
//Ø                         Hunter by profit                                                                    Ø//  
//Ø                         Balashiha         S&N@yandex.ru                                                     Ø//  
//Ø                         Version  Desember 20, 2007                                                          Ø// 
//Ø                                                                                                             Ø//  
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ//
#property copyright "Copyright © 2007, Shooter777"
#property link      "S7N@mail.ru"



#include <WinUser32.mqh>
#include <stderror.mqh>
#include <stdlib.mqh>
//------------------------------------------------------------------//
int    HM_ALL     = 2;          //          
int    Trade      = 1;          //
//------------------------------------------------------------------//
extern bool   Trd_Up_X = true;  //
int           HM_Up_X    = 1;   //   
//------------------------------------------------------------------//
extern double       tpx = 50;
extern double       slx = 50;
extern int          px  = 10;
extern int          x1  = 0;
extern int          x2  = 0;
extern int          x3  = 0;
extern int          x4  = 0;
int                 tx  = 0;
//------------------------------------------------------------------//
extern bool   Trd_Dn_Y = true;  //
int           HM_Dn_Y    = 1;   //        
//------------------------------------------------------------------//
extern double       tpy = 50;
extern double       sly = 50;
extern int          py  = 10;
extern int          y1  = 0;
extern int          y2  = 0;
extern int          y3  = 0;
extern int          y4  = 0;
int                 ty  = 0;
//------------------------------------------------------------------//
extern string       Text0="BTS  F=1";
extern int          F   = 1;     //
extern int          pz  = 10;
extern int          z1  = 0;
extern int          z2  = 0;
extern int          z3  = 0;
extern int          z4  = 0;
int                 tz  = 0;
//------------------------------------------------------------------//
//------------------------------------------------------------------//
extern string       Text1="Neyro  G=4";
extern int          G   = 4;     //
extern string       Text2="XXXXXXXXXXXXX";
extern double       tpX = 50;
extern double       slX = 50;
extern int          pX  = 10;
extern int          X1  = 0;
extern int          X2  = 0;
extern int          X3  = 0;
extern int          X4  = 0;
int                 tX  = 0;
//------------------------------------------------------------------//
extern string       Text3="YYYYYYYYYYYYY";
extern double       tpY = 50;
extern double       slY = 50;
extern int          pY  = 10;
extern int          Y1  = 0;
extern int          Y2  = 0;
extern int          Y3  = 0;
extern int          Y4  = 0;
int                 tY  = 0;
//------------------------------------------------------------------//
extern string       Text4="ZZZZZZZZZZZZ";
extern int          pZ  = 10;
extern int          Z1  = 0;
extern int          Z2  = 0;
extern int          Z3  = 0;
extern int          Z4  = 0;
int                 tZ  = 0;
//------------------------------------------------------------------//
//extern double       lots = 5;
       int          mn;
extern int          mnx1 = 772012055;
extern int          mny1 = 772012155;
extern int          mnX1 = 772012011;
extern int          mnY1 = 772012111;
static int          prvtm = 0;
static double       sl = 10;
static double       tp = 10;

#include <registry_v1.0.0.mqh>
#include <lots_v1.0.2.mqh>
#include <filter_v1.0.5.mqh>

bool cm15=false;
bool cmH1=false;
bool cmH4=false;
int MMH1 ;
int MN   ;
static int bu,sll;
int i;
int ticket = -1;
int total;int spread;
datetime LFB;
double prcptx1=0,prcpty1=0,prcptX1=0,prcptY1=0,prcptZ1=0;
static double       Delta_G12 ;

double gdPointFactor = 1;
//QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
//QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
//+------------------------------------------------------------------+
//| expert init function                                             |
//+------------------------------------------------------------------+
int init(){
MMH1 = Hour( );LFB  = iTime(Symbol(), 0, 0);
   lots_init();
   
   gdPointFactor = 1;
   if (MarketInfo(Symbol(), MODE_DIGITS) == 2 || MarketInfo(Symbol(), MODE_DIGITS) == 4){
      gdPointFactor = 10;
   }
   
   init_filter(gdPointFactor);
}

string stringBoolean(bool bMode){
   
   string lsText = "TRUE";
   if (bMode == FALSE) {
      lsText = "FALSE";
   }
   return(lsText);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{ //---- 
   if (! IsTradeAllowed()) {again();return(0);}
  //----
   total = OrdersTotal();spread = MarketInfo(Symbol(), MODE_SPREAD);
  //---- 
   int iTm = iTime(Symbol(), 0, 0);if(LFB == iTm) return(0); LFB  = iTime(Symbol(), 0, 0); 
      // iTest ();    ôóíêöèÿ ïðè ðàáîòå ñ àâòîîïòèìèçàòîðîì
      int MMM15 = MathMod(Minute( ) , 15);
      if(cm15) {if(MMM15 == 0 ) {cm15 =false; trl();}} if(MMM15 !=0){cm15=true;}
    
      if(Hour() != MMH1)  {MMH1 = Hour( ); //Print ("H1");
      prcptx1   = prcptrnAC(x1,x2,x3,x4,px,tx) ;
      prcpty1   = prcptrnAC(y1,y2,y3,y4,py,ty) ;
      prcptX1 = prcptrnAC(X1,X2,X3,X4,pX,tX) ;
      prcptY1 = prcptrnAC(Y1,Y2,Y3,Y4,pY,tY) ;
      prcptZ1 = prcptrnAC(Z1,Z2,Z3,Z4,pZ,tZ) ;
      }
   
      int MMH4 = MathMod(Hour( ) , 4);
      if(cmH4) {if(MMH4 == 0 ) {cmH4 =false; //Print ("H4");
      
        double       iCusAO_1     =  iAO(NULL, 240, 1);
        double       iCusAO_2     =  iAO(NULL, 240, 2);
                     Delta_G12    =  iCusAO_1 -iCusAO_2;
       }}
      if(MMH4 !=0){cmH4=true;}
startM1();
}


double BTS()    {
       if (prcptrnz1() > 0 || F==0) 
            {if (prcptx1 > 0 && Delta_G12>0) {sl = slx; tp = tpx*slx; mn= mnx1; return (1);}} 
       if (prcptrnz1() < 0 || F==0) 
            {if (prcpty1 > 0 && Delta_G12<0) {sl = sly; tp = tpy*sly; mn= mny1 ;return (-1);}}
      return (0);}
//+ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ+
//|    function  PERCEPTRON - AC                                                         |
//+--------------------------------------------------------------------------------------+
double prcptrnAC(int q1,int q2,int q3,int q4,int pr,int at) 
  {double qw = ((q1-50)+((q2-50)*iA_C(pr)+(q3-50)*iA_C(2*pr)+(q4-50)*iA_C(3*pr))/iA_C(0));
   if (MathAbs(qw)>at) return(qw);else return(0);}
//+--------------------------------------------------------------------------------------+
double iA_C (int pr)
   {int tmfr=60; return(iAO(Symbol(), tmfr, pr));}


void again() {
   prvtm = Time[1];
   Sleep(30000);}
   
//+------------------------------------------------------------------+
//| Ñ÷èòàåì îðäåðà                                                   |
//| Ïàðàìåòðû:                                                       |
//|                                                                  |
//+------------------------------------------------------------------+
 void BuSll ( int pl, int OrdTp, int mgnmb) // pl-èñòî÷íèê 0-äåéñòâóþùèå 1- çàêðûòûå  //  OrdTp=òèï îðäåðà 1-ðûíî÷íûå(0è1)  3-LIMIT(2è3)  5-STOP(4è5)
      { switch(pl)
            {case 0: bu=0; sll=0; int ChTpBu,ChTpSll; // Print (" OrdTp  ",OrdTp);            // âûáðàí ïîäñ÷åò B&S  ðûíî÷íûõ îðäåðîâ 
               switch(OrdTp)
                  {case 1:  ChTpBu=OP_BUY;     ChTpSll =OP_SELL;      break;
                   case 3:  ChTpBu=OP_BUYSTOP; ChTpSll =OP_SELLSTOP;  break;
                   case 5:  ChTpBu=OP_BUYLIMIT;ChTpSll =OP_SELLLIMIT; break;}
               for(int  i=0;i<OrdersTotal();i++)
                  {OrderSelect(i, SELECT_BY_POS, MODE_TRADES); int OMN=OrderMagicNumber();
                   if(OrderType()==ChTpBu  &&(OMN>=mgnmb && OMN<=mgnmb+99)){ bu++;}
                   if(OrderType()==ChTpSll &&(OMN>=mgnmb+100 && OMN<=mgnmb+199)){sll++;}
                   }break; 
              case 1:  int pstv=0, ngtv=0;                              // âûáðàí àíàëèç èñòîðèè 
                  Print ("Ïîäñ÷åò îðäåðîâ â èñòîðèè"); break;
                  }
                  }


double prcptrnz1()   {double qz =(z1-50)*(Close[0]-Open[pz])+(z2-50)*(Open[pz]-Open[pz*2])
                     +(z3-50)*(Open[pz*2]-Open[pz*3])+(z4-50)*(Open[pz*3]-Open[pz*4]);return(qz);}

void trl(){
      total= OrdersTotal(); spread = MarketInfo(Symbol(), MODE_SPREAD);
  for(  i = total - 1; i >= 0; i--) 
     { 
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES); MN=OrderMagicNumber();
       // check for symbol & magic number
       if(OrderSymbol() == Symbol() && MN>= 772012000 && MN<=772012199) 
         {  if (MN==772012055) {sl = slx; tp = tpx*slx; mn= mnx1;}
            if (MN==772012155) {sl = sly; tp = tpy*sly; mn= mny1;}
         
         
           int prevticket = OrderTicket();
           // long position is opened
           if(OrderType() == OP_BUY) 
             {if(DayOfWeek( ) == 5 && Hour( ) >=22)  { OrderClose(prevticket,OrderLots( ) ,Bid,3,Red);} 
              if(Bid > (OrderStopLoss() + (sl * 2  + spread) * Point)) 
                 { if(BTS()< 0) 
                     { OrderClose(prevticket,OrderLots( ) ,Bid,3,Red);} 
                   else 
                    { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - sl * Point,0, 0, Blue);}
                 }  
             } 
           else 
             {if(DayOfWeek( ) == 5 && Hour( ) >=22) { OrderClose(prevticket,OrderLots( ) ,Ask,3,Blue);} 
              if(Ask < (OrderStopLoss() - (sl * 2 + spread) * Point)) 
                 {if(BTS() > 0) 
                     { OrderClose(prevticket,OrderLots( ) ,Ask,3,Blue);} 
                  else 
                     { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + sl * Point, 0, 0, Blue);}
                 }  
             }
           // exit
           return(0);
         }
     }
}


void startM1() {
   ticket = -1;
   RefreshRates();
   
   if (start_filter() == FALSE){      
      return(0);
   }
   
   double ldLots = lots_start(AccountFreeMargin(), AccountEquity(), sl, HM_ALL, mn);
   if (total < HM_ALL) { 
      BuSll (0,1,772012000); 
     // if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18)){   
         if (Trd_Up_X && VSR() > 0 && bu<HM_Up_X)  {  
            Print ("bu ",bu);
            OrderSend(Symbol(), OP_BUY, ldLots, Ask, 1, Bid - sl * Point, Bid + tp * Point, WindowExpertName(), mn, 0, Blue); 
         }
         //OrderSend(Symbol(), OP_BUY, lots, Ask, 1, Bid - sl * Point, 0, WindowExpertName(), mn, 0, Green); }
         if (Trd_Dn_Y && VSR() < 0  && sll<HM_Dn_Y) { 
            OrderSend(Symbol(), OP_SELL, ldLots, Bid, 1, Ask + sl * Point, Ask - tp * Point, WindowExpertName(), mn, 0, Red); 
         }
         //OrderSend(Symbol(), OP_SELL, lots, Bid, 1, Ask + sl * Point, 0, WindowExpertName(), mn, 0, Red); }
         //-- Exit --
         // return(0);
    //  }
   }
}

double VSR() { if(G==4){ if(prcptZ1>0){if(prcptX1>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}}
                               else   {if(prcptY1>0){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);}} 
                         return (BTS());}
               if(G==3){ if(prcptY1>0){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);}           
               else   {return (BTS());}}
               
               if(G==2){ if(prcptX1>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}           
               else   {return (BTS());}}
 return (BTS());
} 





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains close prices for each bar
Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:

Bill Williams Awesome oscillator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached

Other Features: