顾比均线长线(JMA)

    xiaoxiao2021-04-16  247

    #property copyright "Copyright ?2006, 520FX.com" #property link       "http://www.520fx.com/"   #property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 Red #property indicator_width1 2 #property indicator_color2 Red #property indicator_color3 Red #property indicator_color4 Red #property indicator_color5 Red #property indicator_color6 Red #property indicator_color7 Red #property indicator_width7 2   extern int MA1 = 30; extern int MA2 = 35; extern int MA3 = 40; extern int MA4 = 45; extern int MA5 = 50; extern int MA6 = 55; extern int MA7 = 60; extern string web = "www.520fx.com"; double G_ibuf_112[]; double G_ibuf_116[]; double G_ibuf_120[]; double G_ibuf_124[]; double G_ibuf_128[]; double G_ibuf_132[]; double G_ibuf_136[];   int init() { IndicatorBuffers(7); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, G_ibuf_112); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, G_ibuf_116); SetIndexStyle(2, DRAW_LINE); SetIndexBuffer(2, G_ibuf_120); SetIndexStyle(3, DRAW_LINE); SetIndexBuffer(3, G_ibuf_124); SetIndexStyle(4, DRAW_LINE); SetIndexBuffer(4, G_ibuf_128); SetIndexStyle(5, DRAW_LINE); SetIndexBuffer(5, G_ibuf_132); SetIndexStyle(6, DRAW_LINE); SetIndexBuffer(6, G_ibuf_136); return (0); }   int start() { int Li_4 = IndicatorCounted(); if (Li_4 > 0) Li_4--; int Li_0 = Bars - Li_4;   Comment("bars:",Bars,"Li_4:",Li_4,"Li_0:",Li_0); for (int Li_8 = 0; Li_8 < Li_0; Li_8++) { G_ibuf_112[Li_8] = iMA(NULL, 0, MA1, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_116[Li_8] = iMA(NULL, 0, MA2, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_120[Li_8] = iMA(NULL, 0, MA3, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_124[Li_8] = iMA(NULL, 0, MA4, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_128[Li_8] = iMA(NULL, 0, MA5, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_132[Li_8] = iMA(NULL, 0, MA6, 0, MODE_EMA, PRICE_CLOSE, Li_8); G_ibuf_136[Li_8] = iMA(NULL, 0, MA7, 0, MODE_EMA, PRICE_CLOSE, Li_8); } return (0); }   以下为说明,不是程序,不需复制:----------------------------- int start() 指标触发函数。与init函数不同,该函数在有数据变化时被触发,如果数据被不断更新,则该函数将不断执行。start也是系统默认的函数名,但使用时也仍然需要进行创设,所以也要加定义符int   IndicatorCounted();计算的是指标加载到图上后 已经计算过的 K线个数 Bars是 全部历史 K线的个数 原理是: 指标刚加载到图上的时候IndicatorCounted()是0,然后程序会自动计算一遍所有K线对应的指标数值并画线。 然后每来一个新价格的时候(tick,替克), 没有计算过的K线个数Bars-IndicatorCounted();就只是1或者2了(视指标的计算方式决定)。 上面顾比的语句  Comment("bars:",Bars,"Li_4:",Li_4,"Li_0:",Li_0);//可以通过这个语句观察每个变量的即时值! int Li_4 = IndicatorCounted(); //此处Li_4值为,2059 if (Li_4 > 0) Li_4--; //此处Li_4值为,2058 int Li_0 = Bars - Li_4; //Bars值为2060,Li_0值为2 解释:图表中一共2060个Bars,刚开始加载指标, IndicatorCounted()函数是0,随后系统开始计算指标,IndicatorCounted()函数值是2059(该函数约定的就是:最新的当前bar不参与指标计算)!! 这时候for循环只需要计算这些 有变动的K线对应的指标数值就行了,不需要从头到尾重复计算了。 这就是这段程序的目的,找出for循环中仅需当前计算的K线的个数    
    转载请注明原文地址: https://ju.6miu.com/read-672471.html

    最新回复(0)