N7S_AO_772012_mod_v01

Author: Copyright � 2007, Shooter777
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
Bill Williams Awesome oscillator
0 Views
0 Downloads
0 Favorites
N7S_AO_772012_mod_v01
#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;
//------------------------------------------------------------------//
double       lots = 0.1;
       int          mn;
       int          mnx1 = 772012055;
       int          mny1 = 772012155;
       int          mnX1 = 772012011;
       int          mnY1 = 772012111;
static int          prvtm = 0;
static double       sl = 10;
static double       tp = 10;

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 ;
//+------------------------------------------------------------------+
//| expert init function                                             |
//+------------------------------------------------------------------+
int init(){MMH1 = Hour( );LFB  = iTime(Symbol(), 0, 0);}
//+------------------------------------------------------------------+
//| 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);}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
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;
  double x1=iAO(Symbol(), tmfr, pr);
  if(x1==0) x1=0.00000001;   
 return(x1);
}

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 (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, lots, 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, lots, 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());
} 

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 ---