外汇EA
拉盖尔指标加上箭头指示
回复:0  浏览:780
  • 楼主admin 圈主
  • 2020-01-01 13:32
初学MT4编程,一直想在图上显示某指标的上穿和下穿箭头,今天终于成功了!
源码如下:
//+------------------------------------------------------------------+
#property copyright Emerald King
#property link     
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Red
#property indicator_color3 Aqua
#property indicator_level2 0.75
#property indicator_level3 0.45
#property indicator_level4 0.15
//---- input parameters
extern double gamma=0.66;
extern int CountBars=9999;
double L0 = 0;
double L1 = 0;
double L2 = 0;
double L3 = 0;
double L0A = 0;
double L1A = 0;
double L2A = 0;
double L3A = 0;
double LRSI = 0;
double CU = 0;
double CD = 0;
double val1[];
double ExtMapBuffer1[];    //Fleche Haut
double ExtMapBuffer2[];    //Fleche Bas
//+------------------------------------------------------------------+
//| Custom indicator initialization function                  |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
//----
   SetIndexBuffer(0,val1);
   //---- Styles et couleur des Fleches     
   SetIndexStyle(1, DRAW_ARROW, 0, 1);    // LAGURRE 上0.15画红箭头233
   SetIndexArrow(1, 233);
   SetIndexBuffer(1, ExtMapBuffer1);
   SetIndexStyle(2, DRAW_ARROW, 0, 1);    // LAGURRE 下0.75画兰箭头234
   SetIndexArrow(2, 234);
   SetIndexBuffer(2, ExtMapBuffer2);
//----
   return(0);
 }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function               |
//+------------------------------------------------------------------+
int deinit()
 {
//---- TODO: add your code here
//----
   return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                     |
//+------------------------------------------------------------------+
int start()
 {
   if (CountBars Bars) CountBars=Bars;//已赋值的柱数等于图表中的柱数
   SetIndexDrawBegin(0,Bars-CountBars);
   int    i,j,limit;
   int    counted_bars=IndicatorCounted();//已计算过的柱数
//----     
   limit=Bars-counted_bars;
   //if(CountBars =Lookback) return(0);
   //---- initial zero
   //if(counted_bars 1)
   //{
   //   for(i=1;i =Lookback;i++) val1[CountBars-i]=0.0;
   //}
   i=CountBars-1;
   while(i =0)
   {
     L0A = L0;
     L1A = L1;
     L2A = L2;
     L3A = L3;
     L0 = (1 - gamma)*Close[i] + gamma*L0A;
     L1 = - gamma *L0 + L0A + gamma *L1A;
     L2 = - gamma *L1 + L1A + gamma *L2A;
     L3 = - gamma *L2 + L2A + gamma *L3A;
     CU = 0;
     CD = 0;
     if (L0 = L1) CU = L0 - L1; else CD = L1 - L0;
     if (L1 = L2) CU = CU + L1 - L2; else CD = CD + L2 - L1;
     if (L2 = L3) CU = CU + L2 - L3; else CD = CD + L3 - L2;
     if (CU + CD != 0) LRSI = CU / (CU + CD);
     val1[i] = LRSI;
     if(val1[i] 0.15 val1[i+1] 0.15) // LAGURRE 上0.15
     {
       ExtMapBuffer1[i]=val1[i];
     }
     if(val1[i] 0.75 val1[i+1] 0.75) // LAGURRE 下0.75
     {
       ExtMapBuffer2[i]=val1[i];
     }
         i--;
        }
               
   return(0);
}
//+------------------------------------------------------------------+