请教一下,MACD金叉后怎样回调加仓

楼主  收藏   举报   帖子创建时间:  2019-05-05 15:18 回复:0 关注量:808
请教一下,MACD金叉后怎样回调加仓?
  每回调10点加一次仓,最多加10次
  请教一下下面的程序怎样修改才能实现这个功能,谢谢
  
  
  extern double TakeProfit = 50;
  extern double Lots = 0.1;
  extern double TrailingStop = 30;
  extern double MACDOpenLevel=3;
  extern double MACDCloseLevel=2;
  extern double MATrendPeriod=26;
  
  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  int start()
    {
     double MacdCurrent, MacdPrevious, SignalCurrent;
     double SignalPrevious, MaCurrent, MaPrevious;
     int cnt, ticket, total;
  // initial data checks
  // it is important to make sure that the expert works with a normal
  // chart and the user did not make any mistakes setting external
  // variables (Lots, StopLoss, TakeProfit,
  // TrailingStop) in our case, we check TakeProfit
  // on a chart of less than 100 bars
     if(Bars(MACDOpenLevel*Point) && MaCurrent0)
             {
              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
             }
           else Print("Error opening SELL order : ",GetLastError());
           return(0);
          }
        return(0);
       }
     // it is important to enter the market correctly,
     // but it is more important to exit it correctly...   
     for(cnt=0;cnt(MACDCloseLevel*Point))
                  {
                   OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                   return(0); // exit
                  }
              // check for trailing stop
              if(TrailingStop>0)  
                {                 
                 if(Bid-OrderOpenPrice()>Point*TrailingStop)
                   {
                    if(OrderStopLoss()0)  
                {                 
                 if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                   {
                    if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                      {
                       OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                       return(0);
                      }
                   }
                }
             }
          }
       }
     return(0);
    }
  // the end.
打赏