[MT4指标]AltrTrend_Signal_v2_3版本指标
图简单了点 只有红绿指示
具体要后期测试研究下
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2.mq4 
//| Ramdass - Conversion only
//+------------------------------------------------------------------+
#property  copyright "Author - OlegVS, GOODMAN"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Crimson
//---- input parameters
extern int K=30;
extern double Kstop=0.5;
extern int Kperiod=150;
extern int PerADX=14;
extern int CountBars=350;
//---- buffers
double val1;
double val2;
double AlertTime=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,108);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,108);
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2                                            |
//+------------------------------------------------------------------+
int start()
  {   
   if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+PerADX);
   SetIndexDrawBegin(1,Bars-CountBars+PerADX);
   int i,shift,counted_bars=IndicatorCounted();
   int i1,i2;
   double Range,AvgRange,smin,smax,SsMax,SsMin,SSP,price;
   bool uptrend,old;
//----
   if(Bars<=PerADX+1) return(0);
//---- initial zero
   if(counted_bars=0; shift--) 
{ 
SSP=MathCeil(Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1));
      Range=0;
      AvgRange=0;
      for (i1=shift; i1<=shift+SSP; i1++)
            {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);
            }
      Range=AvgRange/(SSP+1);
SsMax=High[shift]; SsMin=Low[shift]; 
   for (i2=shift;i2<=shift+SSP-1;i2++)
        {
         price=High[i2];
         if(SsMax=price)  SsMin=price;
        }
smin = SsMin+(SsMax-SsMin)*K/100; 
smax = SsMax-(SsMax-SsMin)*K/100; 
      val1[shift]=0;
      val2[shift]=0;
      if (Close[shift]smax)
            {
            uptrend = true;
            }
   if (uptrend!=old && uptrend==true) {val1[shift]=Low[shift]-Range*Kstop;}
   if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*Kstop;}
   old=uptrend;
}
   return(0);
  }
if (CurTime() > AlertTime)
{
if (val1[0] > 0)
{
Alert(Symbol(), ", M", Period(), ": SELL Signal.");
AlertTime = CurTime() + (Period() - MathMod(Minute(), Period()))*60;
}
if (val2[0] > 0)
{
Alert(Symbol(), ", M", Period(), ": BUY Signal.");
AlertTime = CurTime() + (Period() - MathMod(Minute(), Period()))*60;
}
} AltrTrend_Signal_v2_3.jpg
AltrTrend_Signal_v2_3.jpg   
 AltrTrend_Signal_v2_3.jpg
AltrTrend_Signal_v2_3.jpg










