darma system

楼主  收藏   举报   帖子创建时间:  2019-05-05 05:06 回复:0 关注量:892
XAUUSDH1.png

  1. //+------------------------------------------------------------------+
  2. //|                                Darma System Indicator (beta).mq4 |
  3. //|                                                tonyc2a@yahoo.com |
  4. //|                                                                  |
  5. //+------------------------------------------------------------------+

  6. #property copyright "tonyc2a@yahoo.com"
  7. #property link      ""

  8. #property indicator_chart_window
  9. #property indicator_buffers 4

  10. //---- input parameters
  11. extern int WingDings_Symbol = 108;

  12. //---- buffers
  13. double Buffer1[];
  14. double Buffer2[];
  15. double Buffer3[];
  16. double Buffer4[];
  17. double Buffer5[];
  18. double Buffer6[];

  19. //+------------------------------------------------------------------+
  20. //| Custom indicator initialization function                         |
  21. //+------------------------------------------------------------------+
  22. int init()
  23.   {
  24. //---- indicators
  25.    SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Blue);
  26.    SetIndexBuffer(0,Buffer1);
  27.    SetIndexLabel(0,"Blue Bar");
  28.    SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
  29.    SetIndexBuffer(1,Buffer2);
  30.    SetIndexLabel(1,"Red Bar");
  31.    SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,2,Blue);
  32.    SetIndexBuffer(2,Buffer3);
  33.    SetIndexLabel(2,"Blue Dot");
  34.    SetIndexArrow(2,WingDings_Symbol);
  35.    SetIndexStyle(3,DRAW_ARROW,STYLE_DOT,2,Red);
  36.    SetIndexBuffer(3,Buffer4);
  37.    SetIndexLabel(3,"Red Dot");   
  38.    SetIndexArrow(3,WingDings_Symbol);
  39.    //SetIndexStyle(4,DRAW_SECTION,STYLE_SOLID,1,Blue);
  40.    //SetIndexBuffer(4,Buffer5);
  41.    //SetIndexLabel(4,"Blue");
  42.    //SetIndexStyle(5,DRAW_SECTION,STYLE_SOLID,1,Red);
  43.    //SetIndexBuffer(5,Buffer6);
  44.    //SetIndexLabel(5,"Red");   

  45. //----
  46.    return(0);
  47.   }
  48. //+------------------------------------------------------------------+
  49. //| Custor indicator deinitialization function                       |
  50. //+------------------------------------------------------------------+
  51. int deinit()
  52.   {
  53. //---- TODO: add your code here
  54.    
  55. //----
  56.    return(0);
  57.   }
  58. //+------------------------------------------------------------------+
  59. //| Custom indicator iteration function                              |
  60. //+------------------------------------------------------------------+
  61. int start()
  62.   {
  63.    int    counted_bars=IndicatorCounted();
  64. //---- TODO: add your code here
  65.       int adjustment=0; //change this value to make the indicator behave slightly differently. valid values are 0-4.
  66.       int periods=3;
  67.       int extremes=0;
  68.       double smin, smax, SsMax, SsMin, pivothi, pivotlo, margins;
  69.       bool flag1, flag2;
  70.             
  71.       for(int i=0;i<Bars;i++){
  72.          if(extremes!=0){
  73.             SsMax = High[Highest(NULL,0,MODE_OPEN,periods,i+adjustment)];
  74.             SsMin = Low[Lowest(NULL,0,MODE_OPEN,periods,i+adjustment)];
  75.             }
  76.          else{
  77.             SsMax = Open[Highest(NULL,0,MODE_OPEN,periods,i+adjustment)];
  78.             SsMin = Open[Lowest(NULL,0,MODE_OPEN,periods,i+adjustment)];
  79.             }
  80.          smin = SsMin+(SsMax-SsMin)*margins/100;
  81.               smax = SsMax-(SsMax-SsMin)*margins/100;      
  82.          pivothi=((2*High[i])+Low[i]+(2*Close[i]))/5;
  83.          pivotlo=(High[i]+(2*Low[i])+(2*Close[i]))/5;
  84.          if(pivotlo>smin && pivothi>smax) flag1=true; else flag1=false;
  85.          if(pivothi<smax && pivotlo<smin) flag2=true; else flag2=false;
  86.       
  87.          if(flag1){
  88.             Buffer1[i]=High[i];
  89.             Buffer2[i]=Low[i];
  90.             }
  91.          if(flag2){
  92.             Buffer1[i]=Low[i];
  93.             Buffer2[i]=High[i];
  94.             }
  95.             
  96.          double sig=iSAR(NULL,0,0.5,1,i);
  97.          if(sig<Low[i]) Buffer3[i]=sig;
  98.          if(sig>High[i]) Buffer4[i]=sig;
  99.          
  100.          
  101.          
  102.          }//end for
  103. //----
  104.    return(0);
  105.   }
  106. //+------------------------------------------------------------------+
打赏