申请版主写个dtosc指标

楼主  收藏   举报   帖子创建时间:  2019-05-05 05:44 回复:0 关注量:183
下面是Dynamic Trader里面DTosc的源码:
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
  #property copyright ""
  
  #property indicator_separate_window
  #property indicator_buffers 2
  #property indicator_minimum 0
  #property indicator_maximum 100
  #property indicator_color1 Red
  #property indicator_color2 LimeGreen
  #property indicator_width1 1
  #property indicator_style1 0
  #property indicator_width2 1
  #property indicator_style2 2
  #property indicator_level1 20
  #property indicator_level2 50
  #property indicator_level3 80
  //
  //
  //
  //
  //
  
     extern int PeriodRSI  =13;
     extern int PeriodStoch= 8;
     extern int PeriodSK   = 5;
     extern int PeriodSD   = 3;
           //    0 = SMA
           //    1 - EMA
           //    2 - SMMA
           //    3 - LWMA
     extern int MAMode=1;
  
  //
  //
  //
  //
  //
  
  double SK[];
  double SD[];
  double StoRSI[];
  double RSI[];
  
  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  int init()
  {
     IndicatorBuffers(4);
        SetIndexBuffer(0,SK);
        SetIndexBuffer(1,SD);
        SetIndexBuffer(2,StoRSI);
        SetIndexBuffer(3,RSI);
     IndicatorShortName("DTOSC ("+PeriodRSI+","+PeriodStoch+","+PeriodSK+","+PeriodSD+")");
  return(0);
  }
  int deinit() { return(0); }
  
  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  int start()
  {
     int i,limit;
     int counted_bars = IndicatorCounted();
  
     if(counted_bars < 0) return(-1);
     if(counted_bars > 0) counted_bars--;
               limit=Bars-counted_bars;
  
     //
     //
     //
     //
     //
               
     for(i=limit; i>=0; i--)
     {
        RSI = iRSI(NULL,0,PeriodRSI,PRICE_WEIGHTED,i);
        double LLV = RSI[ArrayMinimum(RSI,PeriodStoch,i)];
        double HHV = RSI[ArrayMaximum(RSI,PeriodStoch,i)];
        if ((HHV-LLV)!=0)
              StoRSI = 100.0*((RSI - LLV)/(HHV - LLV));
        else  StoRSI = 0;
     }   
     for(i=limit; i>=0; i--) SK=iMAonArray(StoRSI,0,PeriodSK,0,MAMode,i);
     for(i=limit; i>=0; i--) SD=iMAonArray(    SK,0,PeriodSD,0,MAMode,i);
     return(0);
  }
打赏