عرض مشاركة واحدة
قديم 06-04-2014, 12:21 AM   المشاركة رقم: 292
الكاتب
حندوسه
عضو جديد

البيانات
تاريخ التسجيل: Jan 2014
رقم العضوية: 18276
المشاركات: 41
بمعدل : 0.01 يوميا

الإتصالات
الحالة:
حندوسه غير متواجد حالياً
وسائل الإتصال:

كاتب الموضوع : البدوي المنتدى : منتدى المؤشرات و الاكسبيرتات
افتراضي رد: اكسبيرت تقاطع 3 متوسطات

أخي العزيز شكراً جزيلاً علي تفاعلكم وأيضاً علي الشرح الرائع والبسيط وبناءاً علي هذا الشرح قمت بعمل اكسبيرت لتقاطع تلات متوسطات و قطع موفنج 26 ولم أحصل علي نتائج جيدة لذلك أرجو المساعدةوتوضيح السبب

كود:
//+------------------------------------------------------------------+
//|                                                       sherif.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern string M26 = "Moving Average 26";       
extern int period26 = 26;     
extern int shift26 = 0;      
extern int appliedto26 =0;      
extern int method26 = 0; 
extern string M156 = "Moving Average 156";       
extern int period156 = 26;     
extern int shift156 = 0;      
extern int appliedto156 =0;      
extern int method156 = 0;  
extern string M01 = "Moving Average 1";       
extern int period1 = 1;     
extern int shift1 = 0;      
extern int appliedto1=0;      
extern int method1 = 0; 
extern string M8 = "Moving Average 8";       
extern int period8 = 8;     
extern int shift8 = 0;      
extern int appliedto8 =0;      
extern int method8 = 0;
extern string M0 = "Money Management";       
extern int takeprofit = 40;     
extern int stoploss = 10;      
extern double lot = 1;
double t;
extern int Magic = 12345;
 int time0;
extern int breakeven = 1;
extern int trailingstop = 1 ;
extern int risk = 1 ;
extern bool ESMM = False ;
extern int Multi = 2 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  double ticksize = MarketInfo(Symbol(),MODE_TICKSIZE);
  if(ticksize == 0.00001 ||0.001)
  t = ticksize*10;
  else
  t = ticksize;
  
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double LMA26 = iMA(Symbol(),PERIOD_H4,period26,shift26,method26,appliedto26,2);
  double NMA26 = iMA(Symbol(),PERIOD_H4,period26,shift26,method26,appliedto26,1);
  double LMA156 = iMA(Symbol(),PERIOD_D1,period156,shift156,method156,appliedto156,2);
  double NMA156 = iMA(Symbol(),PERIOD_D1,period156,shift156,method156,appliedto156,1);
  double LMA8 = iMA(Symbol(),PERIOD_H4,period8,shift8,method8,appliedto8,1);
  double NMA8 = iMA(Symbol(),PERIOD_H4,period8,shift8,method8,appliedto8,1);
  double LMA1 = iMA(Symbol(),PERIOD_H4,period1,shift1,method1,appliedto1,1);
  double NMA1 = iMA(Symbol(),PERIOD_H4,period1,shift1,method1,appliedto1,0);
  double crosspip = 2 ;
  double Newlot = lot ;
  
  
  Print("time0="+time0);
  if(ESMM == TRUE )lot = Lots();
  if(Profitorloss()==false)Newlot =lastlot()*Multi;
  if(Profitorloss()==true)Newlot =lot ;
 
//----BUY CASE+
   if(((NMA1-NMA26>crosspip*t) && LMA1 < NMA26 ) ||( LMA8>LMA1 && NMA1-LMA8>crosspip*t && LMA8>LMA26 && NMA8>NMA26  ))
   if(LMA26>LMA156 && NMA26>NMA156)
   if(time0 != Time[0]) 
   if( OrdersTotal()==0)
     {
  OrderSend(Symbol(),OP_BUY,Newlot,Ask,3,Ask-(stoploss*t),Ask+(takeprofit*t),"NEW BUY ORDER",Magic,0,clrBlue);
  time0=( Time[0]);
  }
  
//----SELL CASE+
  if(time0 != Time[0] )
  if((NMA26-NMA1 > crosspip*t && NMA26 < LMA1)  ||(LMA8<LMA26 && NMA8<NMA26 && LMA1>LMA8 && LMA8-NMA1 > crosspip*t)) 
  if(LMA26<LMA156 && NMA26<NMA156 ) 
   if( OrdersTotal()==0)
     { 
  OrderSend(Symbol(),OP_SELL,Newlot,Bid,3,Bid+(stoploss*t),Bid-(takeprofit*t),"NEW SELL ORDER",Magic,0,clrBlue);
  time0=( Time[0]);
  }
  if(breakeven>0)BreakEven();
  if(trailingstop>0)TrailingStop();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+-------------BREAKEVEN CODE --------------------------------------+
//+------------------------------------------------------------------+

 void BreakEven()
 {
  for(int i =0 ; i<=OrdersTotal() ; i++)
  {
  if(OrderSelect(i,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()==OP_BUY)
  if((Bid-OrderOpenPrice())>(breakeven*t))
  if(OrderOpenPrice()>OrderStopLoss())
  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE);
  }
  for(int ii =0 ; ii<=OrdersTotal() ; ii++)
  {
  if(OrderSelect(ii,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()== OP_SELL)
  if((OrderOpenPrice()-Ask)>breakeven*t)
  if(OrderOpenPrice()< OrderStopLoss())
  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrCyan);
  } 
 } 
//+------------------------------------------------------------------+
 //+--------------TRAILING STOP CODE---------------------------------+
 //+-----------------------------------------------------------------+
 
 void TrailingStop()
 {
  for(int i =0 ; i<=OrdersTotal() ; i++)
  {
  if(OrderSelect(i,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()==OP_BUY)
  if((Bid-OrderOpenPrice())>(trailingstop*t))
  if(OrderStopLoss()<Bid-trailingstop*t)
  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(trailingstop*t),OrderTakeProfit(),0,CLR_NONE);
  }
  for(int ii =0 ; ii<=OrdersTotal() ; ii++)
  {
  if(OrderSelect(ii,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()== OP_SELL)
  if((OrderOpenPrice()-Ask)>trailingstop*t)
  if(OrderStopLoss()> Ask+trailingstop*t)
  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(trailingstop*t),OrderTakeProfit(),0,clrCyan);
  }
 }  
   
 
//+-----ESMM------------------------------------------------------------+
//+-----ESMM------------------------------------------------------------+
//+-----ESMM------------------------------------------------------------+
 double Lots()
 {
 double lots = MathCeil(AccountFreeMargin()*risk/1000)/100 ;
 if(lots<MarketInfo(Symbol(),MODE_MINLOT))
 lots = MarketInfo(Symbol(),MODE_MINLOT) ;
 if(lots>MarketInfo(Symbol(),MODE_MAXLOT))
 lots = MarketInfo(Symbol(),MODE_MAXLOT) ;
 return(lots);
 }
 
 //+--------MULTI-MULTI----------------------------------------------------------+
 //+--------MULTI-MULTI----------------------------------------------------------+
 
 bool Profitorloss()
 {
 bool Y = true;
 for(int i =0 ; i<=OrdersHistoryTotal() ;i++) 
 {
 OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
 if(Symbol()==OrderSymbol()&& OrderMagicNumber() == Magic)
 {
 if(OrderProfit()>0)
 {
 Y=True;
 }
 else
 {
 Y=false;
 }
 }
 }
 return(Y);
 }
 //+------------------------------------------------------------------+
  double lastlot()
  {
  for(int ii =0 ; ii<=OrdersHistoryTotal() ;ii++) 
  {
  OrderSelect(ii,SELECT_BY_POS,MODE_HISTORY);
  if(OrderSymbol()== Symbol()&& OrderMagicNumber() == Magic)
   double z = OrderLots();
   }
 return(z);
 }
 //+------------------------------------------------------------------+



عرض البوم صور حندوسه  
رد مع اقتباس
  #292  
قديم 06-04-2014, 12:21 AM
حندوسه حندوسه غير متواجد حالياً
عضو جديد
افتراضي رد: اكسبيرت تقاطع 3 متوسطات

أخي العزيز شكراً جزيلاً علي تفاعلكم وأيضاً علي الشرح الرائع والبسيط وبناءاً علي هذا الشرح قمت بعمل اكسبيرت لتقاطع تلات متوسطات و قطع موفنج 26 ولم أحصل علي نتائج جيدة لذلك أرجو المساعدةوتوضيح السبب
كود:
//+------------------------------------------------------------------+
//|                                                       sherif.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern string M26 = "Moving Average 26";       
extern int period26 = 26;     
extern int shift26 = 0;      
extern int appliedto26 =0;      
extern int method26 = 0; 
extern string M156 = "Moving Average 156";       
extern int period156 = 26;     
extern int shift156 = 0;      
extern int appliedto156 =0;      
extern int method156 = 0;  
extern string M01 = "Moving Average 1";       
extern int period1 = 1;     
extern int shift1 = 0;      
extern int appliedto1=0;      
extern int method1 = 0; 
extern string M8 = "Moving Average 8";       
extern int period8 = 8;     
extern int shift8 = 0;      
extern int appliedto8 =0;      
extern int method8 = 0;
extern string M0 = "Money Management";       
extern int takeprofit = 40;     
extern int stoploss = 10;      
extern double lot = 1;
double t;
extern int Magic = 12345;
 int time0;
extern int breakeven = 1;
extern int trailingstop = 1 ;
extern int risk = 1 ;
extern bool ESMM = False ;
extern int Multi = 2 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  double ticksize = MarketInfo(Symbol(),MODE_TICKSIZE);
  if(ticksize == 0.00001 ||0.001)
  t = ticksize*10;
  else
  t = ticksize;
  
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double LMA26 = iMA(Symbol(),PERIOD_H4,period26,shift26,method26,appliedto26,2);
  double NMA26 = iMA(Symbol(),PERIOD_H4,period26,shift26,method26,appliedto26,1);
  double LMA156 = iMA(Symbol(),PERIOD_D1,period156,shift156,method156,appliedto156,2);
  double NMA156 = iMA(Symbol(),PERIOD_D1,period156,shift156,method156,appliedto156,1);
  double LMA8 = iMA(Symbol(),PERIOD_H4,period8,shift8,method8,appliedto8,1);
  double NMA8 = iMA(Symbol(),PERIOD_H4,period8,shift8,method8,appliedto8,1);
  double LMA1 = iMA(Symbol(),PERIOD_H4,period1,shift1,method1,appliedto1,1);
  double NMA1 = iMA(Symbol(),PERIOD_H4,period1,shift1,method1,appliedto1,0);
  double crosspip = 2 ;
  double Newlot = lot ;
  
  
  Print("time0="+time0);
  if(ESMM == TRUE )lot = Lots();
  if(Profitorloss()==false)Newlot =lastlot()*Multi;
  if(Profitorloss()==true)Newlot =lot ;
 
//----BUY CASE+
   if(((NMA1-NMA26>crosspip*t) && LMA1 < NMA26 ) ||( LMA8>LMA1 && NMA1-LMA8>crosspip*t && LMA8>LMA26 && NMA8>NMA26  ))
   if(LMA26>LMA156 && NMA26>NMA156)
   if(time0 != Time[0]) 
   if( OrdersTotal()==0)
     {
  OrderSend(Symbol(),OP_BUY,Newlot,Ask,3,Ask-(stoploss*t),Ask+(takeprofit*t),"NEW BUY ORDER",Magic,0,clrBlue);
  time0=( Time[0]);
  }
  
//----SELL CASE+
  if(time0 != Time[0] )
  if((NMA26-NMA1 > crosspip*t && NMA26 < LMA1)  ||(LMA8<LMA26 && NMA8<NMA26 && LMA1>LMA8 && LMA8-NMA1 > crosspip*t)) 
  if(LMA26<LMA156 && NMA26<NMA156 ) 
   if( OrdersTotal()==0)
     { 
  OrderSend(Symbol(),OP_SELL,Newlot,Bid,3,Bid+(stoploss*t),Bid-(takeprofit*t),"NEW SELL ORDER",Magic,0,clrBlue);
  time0=( Time[0]);
  }
  if(breakeven>0)BreakEven();
  if(trailingstop>0)TrailingStop();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+-------------BREAKEVEN CODE --------------------------------------+
//+------------------------------------------------------------------+

 void BreakEven()
 {
  for(int i =0 ; i<=OrdersTotal() ; i++)
  {
  if(OrderSelect(i,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()==OP_BUY)
  if((Bid-OrderOpenPrice())>(breakeven*t))
  if(OrderOpenPrice()>OrderStopLoss())
  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE);
  }
  for(int ii =0 ; ii<=OrdersTotal() ; ii++)
  {
  if(OrderSelect(ii,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()== OP_SELL)
  if((OrderOpenPrice()-Ask)>breakeven*t)
  if(OrderOpenPrice()< OrderStopLoss())
  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrCyan);
  } 
 } 
//+------------------------------------------------------------------+
 //+--------------TRAILING STOP CODE---------------------------------+
 //+-----------------------------------------------------------------+
 
 void TrailingStop()
 {
  for(int i =0 ; i<=OrdersTotal() ; i++)
  {
  if(OrderSelect(i,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()==OP_BUY)
  if((Bid-OrderOpenPrice())>(trailingstop*t))
  if(OrderStopLoss()<Bid-trailingstop*t)
  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(trailingstop*t),OrderTakeProfit(),0,CLR_NONE);
  }
  for(int ii =0 ; ii<=OrdersTotal() ; ii++)
  {
  if(OrderSelect(ii,SELECT_BY_POS ,MODE_TRADES))
  if(OrderSymbol()==Symbol())
  if(OrderMagicNumber()==Magic)
  if(OrderType()== OP_SELL)
  if((OrderOpenPrice()-Ask)>trailingstop*t)
  if(OrderStopLoss()> Ask+trailingstop*t)
  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(trailingstop*t),OrderTakeProfit(),0,clrCyan);
  }
 }  
   
 
//+-----ESMM------------------------------------------------------------+
//+-----ESMM------------------------------------------------------------+
//+-----ESMM------------------------------------------------------------+
 double Lots()
 {
 double lots = MathCeil(AccountFreeMargin()*risk/1000)/100 ;
 if(lots<MarketInfo(Symbol(),MODE_MINLOT))
 lots = MarketInfo(Symbol(),MODE_MINLOT) ;
 if(lots>MarketInfo(Symbol(),MODE_MAXLOT))
 lots = MarketInfo(Symbol(),MODE_MAXLOT) ;
 return(lots);
 }
 
 //+--------MULTI-MULTI----------------------------------------------------------+
 //+--------MULTI-MULTI----------------------------------------------------------+
 
 bool Profitorloss()
 {
 bool Y = true;
 for(int i =0 ; i<=OrdersHistoryTotal() ;i++) 
 {
 OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
 if(Symbol()==OrderSymbol()&& OrderMagicNumber() == Magic)
 {
 if(OrderProfit()>0)
 {
 Y=True;
 }
 else
 {
 Y=false;
 }
 }
 }
 return(Y);
 }
 //+------------------------------------------------------------------+
  double lastlot()
  {
  for(int ii =0 ; ii<=OrdersHistoryTotal() ;ii++) 
  {
  OrderSelect(ii,SELECT_BY_POS,MODE_HISTORY);
  if(OrderSymbol()== Symbol()&& OrderMagicNumber() == Magic)
   double z = OrderLots();
   }
 return(z);
 }
 //+------------------------------------------------------------------+




رد مع اقتباس