黄金交易策略(Nerve Nnife.mql4):趋势做单

黄金交易策略(Nerve Nnife.mql4):趋势做单_第1张图片

 完整EA:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客

当大小趋势相同行情走向也相同,就会开仓做顺势单,并会顺势追单,以达到快速止盈平仓的效果。大趋势追求稳定,小趋势追求敏捷,行情走向比小趋势更敏捷,所以做单原则是以大趋势方向为准,小趋势作为行情判断的预判,行情不对先冷静。代码如下:

大趋势升:M30 heiken ashi smoothed 指标为蓝色、macd 柱位于正区间、macd柱小于信号线

大趋势降:M30 heiken ashi smoothed 指标为红色、macd 柱位于负区间、macd柱大于信号线

小趋势升:M5 heiken ashi smoothed 指标为蓝色、macd柱小于信号线

小趋势降:M5 heiken ashi smoothed 指标为红色、macd柱大于信号线

其它情况为趋势弱。代码如下:

int checkHASDown(int timeFrame, int offset)
{
   int MaPeriod = 6;    
   
   double maOpen1=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_OPEN,0) : iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_OPEN,1);    
   double maClose1=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_CLOSE,0) : iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_CLOSE,1) ;    
   double maLow1=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_LOW,0) : iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_LOW,1);    
   double maHigh1=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_HIGH,0) : iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_HIGH,1);
   
   double maOpen2=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_OPEN,1 + 0) : iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_OPEN,1 + 1);    
   double maClose2=timeFrame != big_timeframe ? iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_CLOSE,1 + 0) :  iMA(NULL,timeFrame,MaPeriod,0,MODE_SMMA,PRICE_CLOSE,1 + 1);
   double haOpen1 = (maOpen2 + maClose2) / 2;
   double haClose1 = (maOpen1 + maClose1 + maLow1 + maHigh1)  / 4; 
   
   double MacdCurrent0=timeFrame != big_timeframe ? iMACD(NULL,timeFrame,12,26,9,PRICE_CLOSE,MODE_MAIN,0) : iMACD(NULL,timeFrame,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   double SignalCurrent0=timeFrame != big_timeframe ? iMACD(NULL,timeFrame,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) :  iMACD(NULL,timeFrame,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   
     
   double haHigh1=MathMax(maHigh1,MathMax(haOpen1,haClose1));    
   double haLow1=MathMin(maLow1,MathMin(haOpen1,haClose1));
   
   
   //6条30分k线内有一条出现8000点差判断为unknown,避免影响指标判断。修正:应该在线区间内才不做单。
   if(timeFrame == big_timeframe)
     {
       for(int i=0;i<6;i++)
        {
         int index = iHighest(Symbol(),big_timeframe,MODE_HIGH,1,i);
         double highPrice = iHigh(Symbol(), big_timeframe, index);
         index = iLowest(Symbol(),big_timeframe,MODE_LOW,1,i);
         double lowPrice = iLow(Symbol(), big_timeframe, index);
         if(highPrice - lowPrice > 8 && ((Ask > lowPrice && Ask < highPrice)  || (Bid < highPrice && Bid > lowPrice)))
         //if(highPrice - lowPrice > 8)
           {
            printfPro("6条30分k线内出现过一条8刀的k线,并且当前行情在此区间内,趋势的指标无法判断" , true);
            return UNKNOWN;
           }
        }
     }
   
   
   //增长无趋势时间,降低转换向前落单风险
   if(haOpen1>haClose1 && MacdCurrent0 > SignalCurrent0)
     {
      //printfPro(timeFrame + ":" + 1, 1);
      return UNKNOWN;
     }
   if(haOpen1haClose1 && ((timeFrame != big_timeframe) ? (MacdCurrent0 < SignalCurrent0) : MacdCurrent0 < 0))
   {
      //printfPro(timeFrame + ":" + 1, 3);
      return DOWN; //下降
   }
   if (haClose1 > haOpen1 &&  ((timeFrame != big_timeframe) ? (MacdCurrent0 > SignalCurrent0) : MacdCurrent0 > 0))
   {
      //printfPro(timeFrame + ":" + 1, 4);
      return UP;//上升
   }
   //printfPro(timeFrame + ":" + 1, 5);
   return UNKNOWN;
    
}

另外,如下图,关注实时价格变动,如反向突破马上叫停开仓

黄金交易策略(Nerve Nnife.mql4):趋势做单_第2张图片

你可能感兴趣的:(量化交易EA,金融)