GMI外汇平台MT4编程:一条指标线实例教程

GMI 分析团队
资深外汇分析师
阅读 收藏
专业分析

现在,我们通过一个简单的实例,来演示如何在GMI外汇平台的MT4环境下进行指标线开发。要绘制一条指标线,只需在程序中明确以下几个步骤即可:

第一、确定指标线所在的窗口,是主图还是副图。

第二、创建数组,用于存储指标线在各个位置上的数值。

第三、建立指标线与数组的对应关系(函数关系、运算关系),明确哪个数组中的数据显示哪条指标线。

第四、定义指标线的线型,是曲线、柱线还是箭头。

第五、如果指标线是箭头,还需要指定具体的箭头类型。

第六、通过运算,为数组赋值。

其中:

第一、二条写在文件头部;

第三、四、五条写在init()初始化函数中(init函数仅在指标加载时运行一次);

第六条写在start()函数中(start函数在数据发生变动时运行,每变动一次便刷新执行一次);

下面我们以MACD为例进行说明。MACD指标由两条曲线(快线和慢线)以及一组红绿柱线组成(下图一)。

其中:

白线是两根均线的差值;

紫线是白线的移动平均线;

红绿柱线则是白线与紫线的差值,白线上穿紫线出现红柱,下穿则出现绿柱。

GMI外汇平台MT4编程:一条指标线实例教程(图1)

我们从简单入手,先去掉紫线和红绿柱线,仅保留其中的白线,来看白线是如何绘制的。

下面是源代码的全部语句:

#property indicator_separate_window

#property indicator_color1 White

#property indicator_level1 0

extern int FMA=12;

extern int SMA=26;

double buf[];

int init()

{

SetIndexBuffer(0,buf);

SetIndexStyle(0,DRAW_LINE);

return(0);

}

int start()

{

int limit=Bars-IndicatorCounted();

for(int i=0; i

{

buf=

iMA(NULL,0,FMA,0,1,0,i)

-iMA(NULL,0,SMA,0,1,0,i);

}

return(0);

}

说明如下:

GMI外汇平台MT4编程:一条指标线实例教程(图2)

==============================================

==============================================

以下为上述语句的简要说明:

#property indicator_separate_window

指标放置在副图;

#property indicator_color1 White

第一条指标线为白色;

#property indicator_level1 0

在副图中零值位置绘制一条水平横线;

extern int FMA=12;

extern int SMA=26;

定义两个整数型变量,默认值分别为12和26,允许外部修改

double buf[];

创建一个数组

int init()

初始化函数。该函数仅在指标加载时运行一次。init是系统默认的函数名,但使用时仍需进行声明,因此要加上定义符int;

{

SetIndexBuffer(0,buf);

设置数组buf为第一条指标线

SetIndexStyle(0,DRAW_LINE);

设置第一条指标线的线型为连续曲线

return(0);

函数结束语句

}

int start()

指标触发函数。与init函数不同,该函数在行情数据发生变化时被触发,若数据不断更新,则函数会不断执行。start也是系统默认的函数名,使用时仍需声明,所以同样要加定义符int。

{

int limit=Bars-IndicatorCounted();

自定义变量limit,并为其赋值

Bars表示图表中的柱数(K线数量)

IndicatorCounted()函数调用的是缓存中已经计算过的柱数。

这样limit的值就是尚未计算的柱数,从而起到优化程序的作用。

for(int i=0; i

该句为循环语句。

循环从i=0开始,每循环一次i增加1,直到i

由于循环变量i是一个新变量,因此在此处声明,并加上整型变量声明符int

下面大括号中为循环体,本例中只包含一条语句

{

buf=

iMA(NULL,0,FMA,0,1,0,i)

-iMA(NULL,0,SMA,0,1,0,i);

}

给数组buf赋值,其值为对应位置上两条均线计算出的差值

i是水平位置索引值,即烛柱从右到左的序号,最右侧第一根烛柱序号为0

return(0);

start函数结束

}

GMI 分析团队

资深外汇分析师

由多名资深外汇分析师组成的专业团队,拥有平均15年以上的市场分析经验,擅长技术分析和基本面分析相结合的交易策略。

相关分析

立即开启您的外汇交易之旅

加入我们的交易社区,享受专业的交易服务和优惠活动