黄金
3D Oscilator
回复:0  浏览:759
  • 楼主admin 圈主
  • 2019-05-05 05:15
1.png

EURUSDM30.png

  1. //+------------------------------------------------------------------+
  2. //|                                                 3D Oscilator.mq4 |
  3. //|                                                                  |
  4. //|                                                                  |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Author - Luis Damiani. Ramdass - Conversion only"

  7. #property indicator_separate_window
  8. #property indicator_buffers 2
  9. #property indicator_color1 Yellow
  10. #property indicator_color2 Red
  11. //---- input parameters

  12. extern int D1RSIPer=13;
  13. extern int D2StochPer=8;
  14. extern int D3tunnelPer=8;
  15. extern double hot=0.4;
  16. extern int sigsmooth=4;


  17. //---- buffers
  18. double sig1n[];
  19. double sig2n[];
  20. //+------------------------------------------------------------------+
  21. //| Custom indicator initialization function                         |
  22. //+------------------------------------------------------------------+
  23. int init()
  24.   {
  25.    string short_name;
  26. //---- indicator line
  27.    SetIndexStyle(0,DRAW_LINE);
  28.    SetIndexStyle(1,DRAW_LINE);
  29.    SetIndexBuffer(0,sig1n);
  30.    SetIndexBuffer(1,sig2n);
  31. //----
  32.    SetIndexDrawBegin(0,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
  33.    SetIndexDrawBegin(1,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
  34. //----
  35.    return(0);
  36.   }
  37. //+------------------------------------------------------------------+
  38. //| CCI_Woodies                                                         |
  39. //+------------------------------------------------------------------+
  40. int start()
  41.   {
  42.    int i,i2,counted_bars=IndicatorCounted();
  43.    double rsi,maxrsi,minrsi,storsi,E3D,
  44.    sig1,sig2,sk,ss,sk2;
  45.    double cs;
  46.    bool init=true;
  47. //----
  48.    cs= D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth;
  49.    if(Bars<=cs) return(0);

  50. //if (init)
  51. //{
  52. ss=sigsmooth;
  53. if (ss<2) ss=2;
  54. sk = 2 / (ss + 1);
  55. sk2=2/(ss*0.8+1);
  56. init=false;
  57. //};


  58. //---- initial zero
  59.    if(counted_bars<1)
  60.    {
  61.       for(i=1;i<=cs;i++) sig1n[Bars-i]=0.0;
  62.       for(i=1;i<=cs;i++) sig2n[Bars-i]=0.0;
  63.    }
  64. //----
  65.    i=Bars-cs-1;
  66.    
  67.    
  68.    
  69.    if(counted_bars>=cs) i=Bars-counted_bars-1;
  70.    while(i>=0)
  71.      {
  72.       
  73.       rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i);
  74. maxrsi=rsi;
  75. minrsi=rsi;

  76. for (i2=i+D2StochPer;i2>=i; i2--)
  77. {
  78. rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i2);
  79. if (rsi>maxrsi) maxrsi=rsi;
  80. if (rsi<minrsi) minrsi=rsi;
  81. //maxrsi=Maximum(rsi,maxrsi);
  82. //minrsi=min(rsi,minrsi);
  83. }

  84. storsi=((rsi-minrsi)/(maxrsi-minrsi)*200-100);
  85. E3D=hot*iCCI(NULL,0,D3tunnelPer,PRICE_TYPICAL,i)+(1-hot)*storsi;
  86. sig1n[i]=sk*E3D+(1-sk)*sig1;
  87. sig2n[i]=sk2*sig1+(1-sk2)*sig2;
  88. sig1=sig1n[i];
  89. sig2=sig2n[i];

  90.       i--;
  91.      }
  92.    return(0);
  93.   }
  94. //+------------------------------------------------------------------+