Error 130 Help ;(

Para añadir comentario, por favor Autorícese o regístrese
sam.tanliu
6
sam.tanliu  
//+------------------------------------------------------------------+
//|                                            Moving averege EA.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


extern double TakeProfit=900;
extern double StopLoss=300;
extern bool Usemovetobreakeven=false;
extern double Whentomovetobe=1000;
extern double Pipstolockin=50;
extern bool Usetrailingstop=true;
extern double Whentotrail=300;
extern double Trailamount=300;

extern int FastMA=5;
extern int FastMaShift=0;
extern int FastMaMethod=0;
extern int FastMaApplieTo=0;

extern int SlowMA=9;
extern int SlowMaShift=0;
extern int SlowMaMethod=0;
extern int SlowMaApplieTo=0;

extern int Magicnumber=1234;
extern double LotSize=0.01;
double pips;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+


int OnInit()
  {
//---
   double ticksize=MarketInfo(Symbol(),MODE_TICKSIZE);

   if(Point==0.00001 || Point==0.001)
     {
      pips=Point*10;
        }else{
      pips=ticksize;
     }

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(OpenOrdersThisPair(Symbol())>=1){
      if(Usetrailingstop)Adjusttrail();
      if(Usemovetobreakeven)Movetobreakeven();
   }
   
   if(Isnewcandle())CheckForMaTrade();
   

  }
//+------------------------------------------------------------------+

bool Isnewcandle(){
   static int BarsonChart=0;
   if(Bars==BarsonChart)return false;
   BarsonChart=Bars;
   return true;
}
int OpenOrdersThisPair(string pair){
   int total=0;bool lol;
   for(int i=0;i<OrdersTotal();i++){
      lol=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair)total++;
   }
   return total;
}
void CheckForMaTrade()
  {
   double PreviousFast=iMA(NULL,0,FastMA,FastMaShift,FastMaMethod,FastMaApplieTo,2);
   double CurrentFast=iMA(NULL,0,FastMA,FastMaShift,FastMaMethod,FastMaApplieTo,1);
   double PreviousSlow=iMA(NULL,0,SlowMA,SlowMaShift,SlowMaMethod,SlowMaApplieTo,2);
   double CurrentSlow = iMA(NULL,0,SlowMA,SlowMaShift,SlowMaMethod,SlowMaApplieTo,1);
   
   if(PreviousFast<PreviousSlow && CurrentFast>CurrentSlow)OrderEntry(0);
   if(PreviousFast>PreviousSlow && CurrentFast<CurrentSlow)OrderEntry(1);
  }
void OrderEntry(int direction)
  {
  bool modok=false;
   if(direction==0){
      double bsl=0,btp=0;
      if(StopLoss!=0)bsl=Ask-(StopLoss*Point);
      if(TakeProfit!=0)btp=Ask+(TakeProfit*Point);
      if(OpenOrdersThisPair(Symbol())==0){
         int buyticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,0,0,NULL,Magicnumber,0,Green);
         if(buyticket>0){
            modok=OrderModify(buyticket,OrderOpenPrice(),bsl,btp,0,CLR_NONE);
            if(modok){
               Print("Order modified successfully OrderEntry buy.");
            }else{
               Print("Error in OrderModify OrderEntry buy. Error code=",GetLastError()); 
            }
         }
         
      }
   }
   if(direction==1){
      double ssl=0,stp=0;
      if(StopLoss!=0)ssl=Bid+(StopLoss*Point);
      if(TakeProfit!=0)stp=Bid-(TakeProfit*Point);
      if(OpenOrdersThisPair(Symbol())==0){
         int sellticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,0,0,NULL,Magicnumber,0,Red);
         if(sellticket>0){
            modok=OrderModify(sellticket,OrderOpenPrice(),ssl,stp,0,CLR_NONE);
            if(modok){
               Print("Order modified successfully OrderEntry Sell.");
            }else{
               Print("Error in OrderModify OrderEntry Sell. Error code=",GetLastError()); 
            }
         }
      }
   }
  }
    
void Movetobreakeven(){
   bool com;
   for(int b=OrdersTotal()-1;b>=0;b--){
      if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES)){
          if(OrderMagicNumber()==Magicnumber){
            if(OrderType()==OP_BUY){
               if(Bid-OrderOpenPrice()>Whentomovetobe*Point){
                  if(OrderOpenPrice()>OrderStopLoss()){
                     com=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+(Pipstolockin*Point),OrderTakeProfit(),0,CLR_NONE);
                     if(com){
                        Print("Order modified successfully on Breakeven buy.");
                     }else{
                        Print("Error in OrderModify Breakeven buy. Error code=",GetLastError()); 
                     }
                  }
               }
            }
            if(OrderType()==OP_SELL){
               if(OrderOpenPrice()-Ask>Whentomovetobe*Point){
                  if(OrderOpenPrice()<OrderStopLoss()){
                     com=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-(Pipstolockin*Point),OrderTakeProfit(),0,CLR_NONE);
                     if(com){
                        Print("Order modified successfully on Breakeven Sell.");
                     }else{
                        Print("Error in OrderModify Breakeven Sell. Error code=",GetLastError()); 
                     }
                  }
               }
            }
          }
      }
   }
}

void Adjusttrail(){
   bool che;
   for(int b=OrdersTotal()-1;b>=0;b--){
      if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES)){
         if(OrderMagicNumber()==Magicnumber){
            if(OrderSymbol()==Symbol()){
               if(OrderType()==OP_BUY){
                  if(Bid-OrderOpenPrice()>Whentotrail*Point){
                     if(OrderStopLoss()<Bid-(Point*Trailamount)){
                     double bsl=Bid-(Point*Trailamount);
                        che=OrderModify(OrderTicket(),OrderOpenPrice(),bsl,OrderProfit(),0,CLR_NONE);
                        if(che){
                           Print("Order modified successfully on Adjusttrail buy.");
                        }else{
                           Print("Error in OrderModify Adjusttrail buy. Error code=",GetLastError()); 
                        }
                     }
                  }
               }
               if(OrderType()==OP_SELL){
                  if(OrderOpenPrice()-Ask>Whentotrail*Point){
                     if(OrderStopLoss()>Ask+(Point*Trailamount)||OrderStopLoss()==0){
                     double ssl=Ask+(Point*Trailamount);
                        che=OrderModify(OrderTicket(),OrderOpenPrice(),ssl,OrderProfit(),0,CLR_NONE);
                        if(che){
                           Print("Order modified successfully on Adjusttrail Sell.");
                        }else{
                           Print("Error in OrderModify Adjusttrail Sell. Error code=",GetLastError()); 
                        }
                     }
                  }
               }
            }         
         }
      }
   }

}
//+------------------------------------------------------------------+

Para añadir comentario, por favor Autorícese o regístrese