商和园 发表于 2014-11-15 19:40:28

求帮助,修改一下指标

这个指标报警不断,很烦,求高手帮忙修改一下
//+------------------------------------------------------------------+
//|                                              GoldenFilter_v1.mq4 |
//|                                       Copyright ?2007, madro|
//|                                             madrofx@yahoo.com|
//+------------------------------------------------------------------+
#propertycopyright "Copyright ?2007, madro"
#propertylink      "madrofx@yahoo.com"
//----
#property indicator_separate_window   
#property indicator_buffers8
#property indicator_minimum0
#property indicator_maximum1
#property indicator_color1 RoyalBlue
#property indicator_color2 OrangeRed
#property indicator_color3 Goldenrod
#property indicator_color4 DarkGray
#property indicator_color5 Goldenrod
#property indicator_color6 DarkGray
#property indicator_color7 Goldenrod
#property indicator_color8 Gray
//----
extern int FasterMA = 5;
extern int SlowerMA = 15;
extern int MA1_Type = 1;
extern int MA2_Type = 1;
extern int MACD_Fast = 8;
extern int MACD_Slow = 17;
extern int MACD_Signal = 9;
extern int RSI = 21;
extern int Momentum = 14;
extern int DeMarker = 14;
extern int ADX = 14;
extern int ForceIndex = 14;
extern bool SoundAlert = true;
//---- indicator buffers
double Up[];
double Down[];
double CrossUp[];
double CrossDown[];
double TrendUp[];
double TrendDown[];
double MAUp[];
double MADown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicator line
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0,120);
   SetIndexBuffer(0, Up);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1,120);
   SetIndexBuffer(1, Down);
   SetIndexStyle(2, DRAW_ARROW);
   SetIndexArrow(2, 251);
   SetIndexBuffer(2, CrossUp);
   SetIndexStyle(3, DRAW_ARROW);
   SetIndexArrow(3, 251);
   SetIndexBuffer(3, CrossDown);
   SetIndexStyle(4, DRAW_ARROW);
   SetIndexArrow(4, 110);
   SetIndexBuffer(4, TrendUp);
   SetIndexStyle(5, DRAW_ARROW);
   SetIndexArrow(5, 110);
   SetIndexBuffer(5, TrendDown);
   SetIndexStyle(6, DRAW_ARROW,0,1);
   SetIndexArrow(6, 241);
   SetIndexBuffer(6, MAUp);
   SetIndexStyle(7, DRAW_ARROW,0,1);
   SetIndexArrow(7, 242);
   SetIndexBuffer(7, MADown);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("madro-9");
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
{
//----
   return(0);
}
//+------------------------------------------------------------------+
//|GoldenFilter_v1                                                 |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars = IndicatorCounted();
   int i;
   int limit;
//---- check for possible errors
   if(counted_bars < 0)
       return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0)
       counted_bars--;
   limit = Bars - counted_bars;
//----   
   for(i = limit - 1; i >= 0; i--)
   {       
              doublefasterMAnow = iMA(NULL, 0, FasterMA, 0, MA1_Type,
                                        PRICE_CLOSE, i);
       doublefasterMAprevious = iMA(NULL, 0, FasterMA, 0, MA1_Type,
                                    PRICE_CLOSE, i + 1);
       doublefasterMAafter = iMA(NULL, 0, FasterMA, 0, MA1_Type,
                                 PRICE_CLOSE, i - 1);
       doubleslowerMAnow = iMA(NULL, 0, SlowerMA, 0, MA2_Type,
                                 PRICE_CLOSE, i);
       doubleslowerMAprevious = iMA(NULL, 0, SlowerMA, 0,
                                    MA2_Type, PRICE_CLOSE, i + 1);
       doubleslowerMAafter = iMA(NULL, 0, SlowerMA, 0, MA2_Type,
                                 PRICE_CLOSE, i - 1);
       //----
       doubleMACD = iMACD(Symbol(), Period(), MACD_Fast, MACD_Slow,
                            MACD_Signal, PRICE_CLOSE, MODE_MAIN, i);
       doubleMACD_Sig = iMACD(Symbol(), Period(), MACD_Fast, MACD_Slow,
                              MACD_Signal, PRICE_CLOSE, MODE_SIGNAL, i);
       //----
       doubleADX1 = iADX(NULL, 0, ADX, PRICE_CLOSE, MODE_PLUSDI, i);
       doubleADX2 = iADX(NULL, 0, ADX, PRICE_CLOSE, MODE_MINUSDI, i);
       //----
       doubleRSIV = iRSI(NULL, 0, RSI, 0, i);
       doubleDEM = iDeMarker(NULL, 0, DeMarker, i);
       doubleMOM = iMomentum( NULL,0, Momentum, PRICE_CLOSE, i);
       doubleFI = iForce(NULL, 0, ForceIndex, 1, PRICE_CLOSE, i);
                 if(MOM > 100)
         Up = 0.05;
       if(MOM <= 100)
         Down = 0.05;
       if(DEM > 0.5 && FI >0)
         TrendUp = 0.22;
       if(DEM < 0.5 < 50 && FI < 0)
         TrendDown = 0.22;         
       if(RSIV > 50 && MACD > MACD_Sig && ADX1 > ADX2)
         CrossUp = 0.47;
       if(RSIV < 50 && MACD < MACD_Sig && ADX1 < ADX2)
         CrossDown = 0.47;
       if((fasterMAnow > slowerMAnow) &&
          (fasterMAprevious < slowerMAprevious) &&
          (fasterMAafter > slowerMAafter))
         {
         MAUp = 0.8;
         if(SoundAlert == true)
             {
               Alert("GoldenMadro Up " + Symbol() + " on the " +
                     Period() + " minute chart.");
             }
         }
       if((fasterMAnow < (slowerMAnow)) &&
          (fasterMAprevious > (slowerMAprevious)) &&
          (fasterMAafter < slowerMAafter))
         {
         MADown = 0.8;
         if(SoundAlert == true)
               Alert("GoldenMadro Up " + Symbol() + " on the " +
                     Period() + " minute chart.");
         }
      
   }
   return(0);       
}
//+------------------------------------------------------------------+



页: [1]
查看完整版本: 求帮助,修改一下指标