黄金
DUR Indicator
回复:0  浏览:76
  • 楼主admin 圈主
  • 2019-05-05 05:01
dur.png

  1. //+------------------------------------------------------------------+
  2. //|                                                            PIVOT |
  3. //|                                                            Darma |
  4. //|                                              http://darmasdt.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Darma"
  7. #property link      "http://groups.yahoo.com/group/indotraders"

  8. #property indicator_chart_window
  9. #property indicator_buffers 8
  10. #property indicator_color1 Red
  11. #property indicator_color2 Goldenrod
  12. #property indicator_color3 Blue
  13. #property indicator_color4 Black
  14. #property indicator_color5 Green
  15. #property indicator_color6 Green
  16. #property indicator_color7 Green
  17. #property indicator_color8 Green
  18. //---- input parameters
  19. extern int change_day_hour=0;
  20. extern bool HLCCper4=false;
  21. extern bool HLCper3=false;
  22. extern bool HLper2=false;
  23. extern bool DailyOpen=true;
  24. extern bool Sup_Res4=false;
  25. extern bool Sup_Res3=false;
  26. //---- buffers
  27. double Pivot4[];
  28. double Pivot3[];
  29. double Pivot2[];
  30. double Pivot1[];
  31. double Res4[];
  32. double Sup4[];
  33. double Res3[];
  34. double Sup3[];
  35. //---- variables
  36. int limit, cur_day, prev_day, barChangeDay;
  37. double y_c,t_o,y_h,y_l,P4,P3,P2,R4,S4,R3,S3;
  38. double day_high, day_low, dayHprev, dayLprev;

  39. //+------------------------------------------------------------------+
  40. //| Custom indicator initialization function                         |
  41. //+------------------------------------------------------------------+
  42. int init()
  43.   {
  44. //---- indicators
  45.    SetIndexStyle(0,DRAW_LINE,STYLE_DASHDOTDOT,1);
  46.    SetIndexBuffer(0,Pivot4);
  47.    SetIndexStyle(1,DRAW_LINE,STYLE_DASHDOTDOT,1);
  48.    SetIndexBuffer(1,Pivot3);
  49.    SetIndexStyle(2,DRAW_LINE,STYLE_DASHDOTDOT,1);
  50.    SetIndexBuffer(2,Pivot2);
  51.    SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
  52.    SetIndexBuffer(3,Pivot1);
  53.    SetIndexStyle(4,DRAW_LINE,STYLE_DASHDOTDOT,1);
  54.    SetIndexBuffer(4,Res4);
  55.    SetIndexStyle(5,DRAW_LINE,STYLE_DASHDOTDOT,1);
  56.    SetIndexBuffer(5,Sup4);
  57.    SetIndexStyle(6,DRAW_LINE,STYLE_DASHDOTDOT,1);
  58.    SetIndexBuffer(6,Res3);
  59.    SetIndexStyle(7,DRAW_LINE,STYLE_DASHDOTDOT,1);
  60.    SetIndexBuffer(7,Sup3);
  61. //----
  62.    return(0);
  63.   }
  64. //+------------------------------------------------------------------+
  65. //| Custom indicator deinitialization function                       |
  66. //+------------------------------------------------------------------+
  67. int deinit()
  68.   {
  69. //---- TODO: add your code here
  70.    ObjectsRedraw();
  71. //----
  72.    return(0);
  73.   }
  74. //+------------------------------------------------------------------+
  75. //| Custom indicator iteration function                              |
  76. //+------------------------------------------------------------------+
  77. int start()
  78.   {
  79.    int counted_bars=IndicatorCounted();
  80.    if (counted_bars<0) return(-1);
  81.    if (counted_bars>0) counted_bars--;

  82.    limit=Bars-counted_bars;
  83. //----
  84.    for(int i=limit; i>=0; i--)
  85.      {
  86.       cur_day=TimeDay(Time[i]);
  87.       if  (
  88.           TimeHour(Time[i])==change_day_hour &&
  89.           TimeMinute(Time[i])==0
  90.           )
  91.         {
  92.          barChangeDay=i;
  93.          y_c=Close[i+1];
  94.          t_o=Open[i];
  95.          y_h=day_high;
  96.          y_l=day_low;
  97.          P4=(y_h + y_l + y_c + t_o)/4;
  98.          P3=(y_h + y_l + y_c)/3;
  99.          P2=(y_h + y_l)/2;
  100.          R4=P4 + (P4 - y_l);
  101.          R3=P3 + (P3 - y_l);
  102.          S4=P4 + (P4 - y_h);
  103.          S3=P3 + (P3 - y_h);
  104.          day_high=High[i];
  105.          day_low =Low[i];
  106.         } // if
  107.       dayHprev=day_high;
  108.       dayLprev=day_low;
  109.       day_high=MathMax(day_high, High[i]);
  110.       day_low=MathMin(day_low, Low[i]);
  111.       if (HLCCper4)
  112.         {
  113.          Pivot4[i]=P4;
  114.         }
  115.       if (HLCper3)
  116.         {
  117.          Pivot3[i]=P3;
  118.         }
  119.       if (HLper2)
  120.         {
  121.          Pivot2[i]=P2;
  122.         }
  123.       if (DailyOpen)
  124.         {
  125.          Pivot1[i]=t_o;
  126.         }
  127.       if (Sup_Res4)
  128.         {
  129.          Res4[i]=R4;
  130.          Sup4[i]=S4;
  131.         }
  132.       if (Sup_Res3)
  133.         {
  134.          Res3[i]=R3;
  135.          Sup3[i]=S3;
  136.         }
  137.      } // for
  138. //---- done
  139.    return(0);
  140.   }
  141. //+------------------------------------------------------------------+