wajdyss_MA_expert_v3

Author: Idea by wajdyss
Profit factor:
0.00
11 Views
0 Downloads
0 Favorites
wajdyss_MA_expert_v3
// expert

#property copyright "Idea by wajdyss"
#property link      "wajdyss@yahoo.com"
 
//ÎÕÇÆÕ ÇáÇßÓÈíÑÊ
extern string ModeNote = "0 = sma, 1 = ema, 2 = smma, 3 = lwma";
extern string PriceNote = "0=Close, 1=Open, 2=High, 3=Low, 4=Median, 5=Typical,6=Weighted Close ";
extern int FastMA = 10;
extern int FastMode  = 1; // 0 = sma, 1 = ema, 2 = smma, 3 = lwma
extern int FastShift  = 0;
extern int FastPrice  = 0;
extern int SlowMA = 20;
extern int SlowMode  = 1; // 0 = sma, 1 = ema, 2 = smma, 3 = lwma
extern int SlowShift  = 0;
extern int SlowPrice  = 0;
extern int TakeProfit=100;
extern int StopLoss=50;
extern int TrailingStop = 0;
extern bool AutoClose=true;
extern double  FirstLots=0.1;
extern bool    Management=true;
//extern double  Risk=0.5;
extern int     Balance=1000;
extern int     MagicNumber = 2009;
 int Open_Hour=0;
 int Close_Hour=231;
 int Close_Minute=45;
 int Friday=51;
 int Friday_Hour=221;
 int Friday_Minute=45;
extern int TextSize=14;
extern color TextColor1=Black;
extern color TextColor2=Blue;
extern color TextColor3=Red;
extern color TextColor4=Black;


int    Ticket1,Ticket2;
int    t1,t2,gT1,gT2;
int handle;
int eyear=9999;
int emonth=9;
int eday=9;
string last_sell_time="LastOrderTimeSell";//***************************************
string last_buy_time ="LastOrderTimeBuy";//***************************************
double Lots;

int init()
{
 last_sell_time=last_sell_time+AccountNumber()+Symbol();//***************************************
 last_buy_time=last_buy_time+AccountNumber()+Symbol();//***************************************
 if(IsTesting())//***************************************
    {//***************************************
     GlobalVariableSet(last_sell_time,0);//***************************************
     GlobalVariableSet(last_buy_time,0);//***************************************
    }//***************************************

  return(0);
}
int deinit()
{
  Comment("");
   ObjectDelete("a label");
 ObjectDelete("b label");
 ObjectDelete("c label");
 ObjectDelete("d label");

  return(0);
}
int start()
{
  //a
          if(ObjectFind("a label") != 0)
   {
      ObjectCreate("a label", OBJ_LABEL, 0,0,0);
      ObjectSetText("a label","ÈÓã Çááå ÇáÑÍãä ÇáÑÍíã" , TextSize, "Arial", TextColor1);
      ObjectSet("a label", OBJPROP_XDISTANCE,350);
     ObjectSet("a label", OBJPROP_YDISTANCE,0);
   }
   
   //b
      if(ObjectFind("b label") != 0)
   {
      ObjectCreate("b label", OBJ_LABEL, 0,0,0);
      ObjectSetText("b label","wajdyss MA expert"  , TextSize, "Arial", TextColor2);
      ObjectSet("b label", OBJPROP_XDISTANCE,340);
     ObjectSet("b label", OBJPROP_YDISTANCE,25);
   }
   
   // c

   
      if(ObjectFind("c label") != 0)
   {
      ObjectCreate("c label", OBJ_LABEL, 0,0,0);
      ObjectSetText("c label","wajdyss@yahoo.com"  , TextSize, "Arial", TextColor3);
      ObjectSet("c label", OBJPROP_XDISTANCE,335);
     ObjectSet("c label", OBJPROP_YDISTANCE,50);
   }

    if ((Year()>eyear) || (Year()==eyear && Month()>emonth) || (Year()==eyear && Month()==emonth && Day()>eday))
    {
       //d
   if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert has expired , contact us by E-mail" ,TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,255);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
      return(0);
    } 
   else 
       if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","http://forum.m-e-c.biz",TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,336);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
      
double lTrailingStop  = TrailingStop;
double sTrailingStop  = TrailingStop;
  if(lTrailingStop>0||sTrailingStop>0){//3  
  TrailingPositionsBuy(lTrailingStop);
  TrailingPositionsSell(sTrailingStop);
  }

    if ((Year()>eyear) || (Year()==eyear && Month()>emonth) || (Year()==eyear && Month()==emonth && Day()>eday))
    {
       //d
   if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert has expired , contact us by E-mail" ,TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,255);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
      return(0);
    } 
   else 
       if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert well expire after ( " + eday+"-"+emonth+"-"+eyear+" )",TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,270);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }

  if ((DayOfWeek()==Friday && Hour()>=Friday_Hour && Minute()>=Friday_Minute) || (DayOfWeek()==Friday && Hour()>Friday_Hour))
    {
    DeleteBuyPendingOrders(MagicNumber);
    DeleteSellPendingOrders(MagicNumber);
    CloseBuyOrders(MagicNumber);
    CloseSellOrders(MagicNumber);
  }
  if((Hour()==Close_Hour && Minute()>=Close_Minute) || (Hour()>Close_Hour))
  {
    DeleteBuyPendingOrders(MagicNumber);
    DeleteSellPendingOrders(MagicNumber);
    CloseBuyOrders(MagicNumber);
    CloseSellOrders(MagicNumber);
  }

  if (MyBuyRealOrdersTotal(MagicNumber)==0 && MySellRealOrdersTotal(MagicNumber)==0)
{
   if(Management==false)
   {
     Lots=FirstLots;
   }
   else
   {
     Lots=NormalizeDouble((((AccountBalance())/Balance*FirstLots)),2);
     if(Lots>MarketInfo(Symbol(),MODE_MAXLOT)) Lots=MarketInfo(Symbol(),MODE_MAXLOT);
     if(Lots<MarketInfo(Symbol(),MODE_MINLOT)) Lots=MarketInfo(Symbol(),MODE_MINLOT);
   }
}

  {Procces_1();}
 
  return(0);
}
//****************************************************************************************************************  

// ÇáæÙíÝÉ ÇáÑÆíÓíÉ
int Procces_1()
{
  double b,s,bsl,ssl,bt,st,b_l,s_l,bsl_l,ssl_l,bt_l,st_l;
  {
    int total=0;//***************************************

	  for (int cnt=0; cnt<OrdersTotal(); cnt++)//***************************************
      {//***************************************
          OrderSelect(cnt,SELECT_BY_POS) ;  //***************************************
      	if(OrderSymbol()!=Symbol())                                  continue;//***************************************
      	if (OrderMagicNumber()!= MagicNumber)                              continue;//***************************************
         
      	if(OrderType()<=OP_SELL)  //***************************************
      	{//***************************************
      		total++ ;//***************************************
      		if (OrderType()==OP_SELL)//***************************************
      		    { //***************************************
      		     GlobalVariableSet(last_sell_time,OrderOpenTime());//***************************************
      		    }//***************************************
      		if (OrderType()==OP_BUY)//***************************************
      		    {//***************************************
      		     GlobalVariableSet(last_buy_time,OrderOpenTime());//***************************************
      		    }//***************************************
      	}//***************************************
      }//***************************************

int last_sell=GlobalVariableGet(last_sell_time);     //***************************************
int last_buy=GlobalVariableGet(last_buy_time);   //***************************************
bool time_b=(TimeCurrent()-last_buy>=Period()*60);//***************************************
bool time_s=(TimeCurrent()-last_sell>=Period()*60);//***************************************

    double h,h1,l,l1,t,FMA1,SMA1,FMA2,SMA2;
    int h2,l2;
    
    FMA1=iMA(Symbol(), 0, FastMA, FastShift, FastMode, FastPrice, 1);
    FMA2=iMA(Symbol(), 0, FastMA, FastShift, FastMode, FastPrice, 2);

    SMA1=iMA(Symbol(), 0, SlowMA, SlowShift, SlowMode, SlowPrice, 1);
    SMA2=iMA(Symbol(), 0, SlowMA, SlowShift, SlowMode, SlowPrice, 2);
    
     b=Ask;
     
     s=Bid;    

    if (StopLoss>0)
    {
    bsl=b-StopLoss*Point;
    ssl=s+StopLoss*Point;
    }
    else
    {
    bsl=0;
    ssl=0;
    }

    if (TakeProfit>0) 
    {
    bt=b+TakeProfit*Point;
    st=s-TakeProfit*Point;
    }
     else 
     {
     bt=0;
     st=0;
     }

   if (FMA1>SMA1 && FMA2<SMA2 &&  MyBuyRealOrdersTotal(MagicNumber)==0 && time_b)
  
    {
    if (AutoClose) CloseSellOrders(MagicNumber);
    if ((Year()>eyear) || (Year()==eyear && Month()>emonth) || (Year()==eyear && Month()==emonth && Day()>eday))
    {
       //d
   if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert has expired , contact us by E-mail" ,TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,255);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
      return(0);
    } 
   else 
       if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert well expire after ( " + eday+"-"+emonth+"-"+eyear+" )",TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,270);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }

     OrderSend(Symbol(),OP_BUY     ,Lots,b,3,bsl,bt,"wajdyss MA expert",MagicNumber,0,Green);
    }

   if (FMA1<SMA1 && FMA2>SMA2 &&  MySellRealOrdersTotal(MagicNumber)==0 && time_s)
    {
    if (AutoClose)     CloseBuyOrders(MagicNumber);

    if ((Year()>eyear) || (Year()==eyear && Month()>emonth) || (Year()==eyear && Month()==emonth && Day()>eday))
    {
       //d
   if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert has expired , contact us by E-mail" ,TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,255);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
       return(0);
    } 
   else 
       if(ObjectFind("d label") != 0)
   {
      ObjectCreate("d label", OBJ_LABEL, 0,0,0);
      ObjectSetText("d label","the expert well expire after ( " + eday+"-"+emonth+"-"+eyear+" )",TextSize, "Arial", TextColor4);
      ObjectSet("d label", OBJPROP_XDISTANCE,270);
     ObjectSet("d label", OBJPROP_YDISTANCE,75);
   }
     OrderSend(Symbol(),OP_SELL     ,Lots,s,3,ssl,st,"wajdyss MA expert",MagicNumber,0,Red);
    }
    return(0);
  }

}
// æÙíÝÉ áÍÓÇÈ ÚÏÏ ÇáÕÝÞÇÊ ÇáÍÇáíÉ
int MyBuyRealOrdersTotal(int Magic)
{
  int c=0;
  int total  = OrdersTotal();
  t1=-1;
  t2=-1;
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
    {
      if (t1==-1)
      {
        t1=OrderTicket();
      }
      else
      {
        if (t2==-1)
        {
          t2=OrderTicket();
        }
      }
      c++;
    }
  }
  return(c);
}


int MySellRealOrdersTotal(int Magic)
{
  int c=0;
  int total  = OrdersTotal();
  t1=-1;
  t2=-1;
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_SELL))
    {
      if (t1==-1)
      {
        t1=OrderTicket();
      }
      else
      {
        if (t2==-1)
        {
          t2=OrderTicket();
        }
      }
      c++;
    }
  }
  return(c);
}


// æÙíÝÉ áÍÐÝ ÇáÕÝÞÇÊ ÇáãÚáÞÉ
int DeleteBuyPendingOrders(int Magic)
{
int total  = OrdersTotal();
 
for (int cnt = total - 1; cnt >= 0; cnt--)
{
 OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
 if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT))
 {
   OrderDelete(OrderTicket());
 }
}
return(0);
}

int DeleteSellPendingOrders(int Magic)
{
int total  = OrdersTotal();
 
for (int cnt = total - 1; cnt >= 0; cnt--)
{
 OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
 if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT))
 {
   OrderDelete(OrderTicket());
 }
}
return(0);
}

// ÇÛáÇÞ ÌãíÚ ÇáÕÝÞÇÊ ÇáãÝÊæÍÉ
//+------------------------------------------------------------------+
int CloseBuyOrders(int Magic)
{
  int total  = OrdersTotal();
  
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      if (OrderType()==OP_BUY)
      {
        if(OrderClose(OrderTicket(),OrderLots(),Bid,3)==false)
         {
           RefreshRates();
         }
         else
         {
           cnt=0;
           total=OrdersTotal();
         }
      }
      
    }
  }
  return(0);
}  

int CloseSellOrders(int Magic)
{
  int total  = OrdersTotal();
  
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      if (OrderType()==OP_SELL)
      {
        if(OrderClose(OrderTicket(),OrderLots(),Ask,3)==false)
         {
           RefreshRates();
         }
         else
         {
           cnt=0;
           total=OrdersTotal();
         }
      }
      
    }
  }
  return(0);
}  



void TrailingPositionsBuy(int trailingStop) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { 
            if (OrderType()==OP_BUY) { 
               if (Bid-OrderOpenPrice()>trailingStop*Point) { 
                  if (OrderStopLoss()<Bid-trailingStop*Point) 
                     ModifyStopLoss(Bid-trailingStop*Point); 
               } 
            } 
         } 
      } 
   } 
} 
void TrailingPositionsSell(int trailingStop) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { 
            if (OrderType()==OP_SELL) { 
               if (OrderOpenPrice()-Ask>trailingStop*Point) { 
                  if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)  
                     ModifyStopLoss(Ask+trailingStop*Point); 
               } 
            } 
         } 
      } 
   } 
} 

void ModifyStopLoss(double ldStopLoss) { 
   bool fm;
   fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE); 
} 

Comments