NEWEXPERT-NN

Author: Copyright 2013, MetaQuotes Software Corp.
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Moving average indicatorIndicator of the average true range
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
NEWEXPERT-NN
//+------------------------------------------------------------------+
//|                                                    NEWEXPERT.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+sigmoi
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern double p1 = 0.1 ;
extern double p2 = 0.1 ;
extern double p3 = 0.1 ;

extern double q1 = 0.1 ;
extern double q2 = 0.1 ;
extern double q3 = 0.1 ;

extern double k1 = 0.1 ;
extern double k2 = 0.1 ;
extern double k3 = 0.1 ;

extern int  st =  1 ;
extern int  stop =  10 ;


extern int  m1 =  2 ;
extern int  m2 =  5 ;
extern int  m3 =  2 ;
extern int  m4 =  5 ;
extern int  m5 =  2 ;
extern int  m6 =  5 ;





extern bool   AllPositions  =True;         // Óïðàâëÿòü âñåìè ïîçèöèÿìè
extern bool   ProfitTrailing=False;          // Òðàëèòü òîëüêî ïðîôèò
extern int    TrailingStop  =15;            // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep  =2;             // Øàã òðàëà
extern bool   UseSound      =False;          // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound ="expert.wav";  // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
double n1,n2,n3  ;

int hourtrade = 0 ;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

if ( Hour()==hourtrade )
{
   hourtrade =  Hour() ;
   return(0);  

}

  
double    s1=iMA(NULL,PERIOD_H1,m1,m2,MODE_SMMA,PRICE_MEDIAN,1);
double    s2=iMA(NULL,PERIOD_H1,m1,m2,MODE_SMMA,PRICE_MEDIAN,2);
double    s3=iMA(NULL,PERIOD_H1,m1,m2,MODE_SMMA,PRICE_MEDIAN,3);
double    s4=iMA(NULL,PERIOD_H1,m1,m2,MODE_SMMA,PRICE_MEDIAN,4);

double    r1=iMA(NULL,PERIOD_H4,m3,m4,MODE_SMMA,PRICE_MEDIAN,1);
double    r2=iMA(NULL,PERIOD_H4,m3,m4,MODE_SMMA,PRICE_MEDIAN,2);
double    r3=iMA(NULL,PERIOD_H4,m3,m4,MODE_SMMA,PRICE_MEDIAN,3);
double    r4=iMA(NULL,PERIOD_H4,m3,m4,MODE_SMMA,PRICE_MEDIAN,4);


double    t1=iMA(NULL,PERIOD_D1,m5,m6,MODE_SMMA,PRICE_MEDIAN,1);
double    t2=iMA(NULL,PERIOD_D1,m5,m6,MODE_SMMA,PRICE_MEDIAN,2);
double    t3=iMA(NULL,PERIOD_D1,m5,m6,MODE_SMMA,PRICE_MEDIAN,3);
double    t4=iMA(NULL,PERIOD_D1,m5,m6,MODE_SMMA,PRICE_MEDIAN,4);





 n1 = ((s1-s2)/s1)*p1 + ((s2-s3)/s3)*p2 + ((s3-s4)/s4)*p3  ; 
 n1= (MathRound (n1*10000 ));
 
 
 n2 = ((r1-r2)/r2)*q1 + ((r2-r3)/r3)*q2 + ((r3-r4)/r4)*q3  ; 
 n2=  (MathRound (n2*10000 ));

 n3 = ((t1-t2)/t2)*k1 + ((t2-t3)/t3)*k2 + ((t3-t4)/t4)*k3  ; 
 n3=  (MathRound (n3*10000));



Comment(n1 , "  " , n2 , "  " , n3); 
/*
double   s1=iATR(NULL,0,20,i1) ;
double   s2=iATR(NULL,0,20,i2) ;
 */


  // if((n1>0 && n2>0  )   )   {    BUY(10);}
  // if((n1>0 && n2<0  )   )   {   SELL(11);}
   
   
   if((n1>0 && n2>0  && n3>0)   )   {    BUY(10);}
   if((n1>0 && n2<0  && n3<0)   )   {   SELL(11);}
  
  
   
// if ( AllProfit() > 10  ) CloseAll() ;
   
   
  Trall() ;
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void BUY(int mag)
//================
{  int order ;

 int pos;
   int total = OrdersTotal();
   for ( pos = 0; pos<total; pos++ )
     {
       if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
         {
            if (mag == OrderMagicNumber() ) return(0) ;

         }
      }


 //  order=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",mag,0,Green);
   order=OrderSend(Symbol(),OP_BUY, Lots() ,Ask,3,Ask-stop*Point,0,"My order BUY",mag,0,Green);
return(0) ; }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void SELL(int mag)
//================
{  int order ;

int pos;
   int total = OrdersTotal();
   for ( pos = 0; pos<total; pos++ )
     {
       if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
         {
           if (mag == OrderMagicNumber() ) return(0) ;

         }
      }

 //  order=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",mag,0,Green);
   order=OrderSend(Symbol(),OP_SELL, Lots() ,Bid,3,Bid+stop*Point,0,"My order SELL",mag,0,Green);
return(0) ; }




//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
double Profit(int mag)
//====================
{
double prof ;

prof =0; 

if(OrderSelect(mag, SELECT_BY_POS)==true)
    prof = OrderProfit();

return(prof) ;

}


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
double AllProfit()
//====================
{
double prof ;

prof =0; 


 int pos;
   int total = OrdersTotal();
   for ( pos = 0; pos<total; pos++ )
     {
       if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
         {
          // Print("Âûáðàí îðäåð íîìåð ", pos, " â ñïèñêå îòêðûòûõ ïîçèöèé");
           // äåëàåì ÷òî-òî ñ ýòîé ïîçèöèåé
           prof=prof+OrderProfit();
         }
      } 


return(prof) ;

}


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int CloseAll()
{
 
string title="Ñêðèïò";
string msg="Çàêðûòü âñå îðäåðà BUY è SELL? ";

int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol( ),MODE_BID),slippage);
if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol( ),MODE_ASK),slippage);
}
//----
   return(0);
} 


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void  Trall()
//==================
{
    for(int i=0; i<OrdersTotal(); i++) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (AllPositions || OrderSymbol()==Symbol()) 
           {
            TrailingPositions();
           }
        }
     }
     
        return(0);
} 

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
  void TrailingPositions() 
  {
   double pBid, pAsk, pp;
//----
   pp=MarketInfo(OrderSymbol(), MODE_POINT);
     if (OrderType()==OP_BUY) 
     {
      pBid=MarketInfo(OrderSymbol(), MODE_BID);
        if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) 
        {
           if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) 
           {
            ModifyStopLoss(pBid-TrailingStop*pp);
            return;
           }
        }
     }
     if (OrderType()==OP_SELL) 
     {
      pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
        if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) 
        {
           if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) 
           {
            ModifyStopLoss(pAsk+TrailingStop*pp);
            return;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
  void ModifyStopLoss(double ldStopLoss) 
  {
   bool fm;
   fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
   if (fm && UseSound) PlaySound(NameFileSound);
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
double Lots()                                            // Âû÷èñëåíèå ëîòîâ
   {
   double Prots = 10 ;
//============================================================================================
  double  Lot=NormalizeDouble(AccountEquity()*Prots/100/1000,1);// Âû÷èñëÿåì êîëè÷. ëîòîâ  
   double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);   // Ìèíèìàëüíî äîïóñòèìàÿ ñòîèì. ëîòîâ
   if (Lot == 0 ) Lot = Min_Lot;                         // Äëÿ òåñòà íà ïîñòîÿí. ìèíèì. ëîòàõ
//============================================================================================
   //return(Lot);
   return(0.1);

   }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ

//------------------------------------------
// îïðåäåëåíèå ñèãìîèäàëüíîé ôóíêöèè  (òàíãåíñ ãèïðåáîëè÷åñêèé)
//------------------------------------------
double Sigma(double argument)
   {
   double help;
   help=(MathExp(argument)-MathExp(-argument))/(MathExp(argument)+MathExp(-argument));
   return(help);
   }

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