MQL4编程:计算单位时间内的价格幅度
1、在外汇交易中,我们时常采用这样的交易策略:将建仓点放在突破点的上方或下方,这样可以大概率地顺应趋势,搏取利润;
2、但实际情况呢?这样的突破分为有效突破和假突破:一、假突破,这是诱仓行为,考虑到枥昂龄室突破诱仓的成本,这样的突破往往速度快、幅度大,回撤也快;二、有效突破,往往会出现三种情况:第一种是快速突破,快速回撤试探支撑的有效性。出现这种情况,一方面说明我们的建仓成本高了,另一方面将考验我们对自己判断的自信程度;第二种是突破失败。实际上也是第一种的延续,在回撤试探支撑时,因当初支撑突破的因素不足以持续激发市场信心,造成价格大幅回撤或向相反方向运动;第三种是有效突破是,价格在实质性因素的推动下,稳步突破,并在突破后持续走高;
3、综上所述,我们可以大致发现具弈蚕芗价格在这几种情况中的运动特点;也可以注意到,在这几种突破的情况下,只有最后一种突破是我们找寻的交易机会!换句话说,我们找寻的突破交易建仓点是:价格在突破时阻力位(支撑位)时,没有出现大幅的急速运动。对此,我们可以将之量化为:价格在突破时,单位时间内的价格幅度不应比之前的单位时间价格幅度过高。
4、为了达到量化“单位时间内的价格幅度”,我们需要用到两个参数:一个是时间周期,也就是各行情图表上K线的时间周期;另一个是价格差,也就是K线的最高价与最低价的差;
5、打开电脑上的MQL4语言编辑器(MetaEditor 4);点击工作界面左上角的“新建”按钮,在弹出的向导页面中选择“EA交易(模板”,点击”下一步“;然后给我们的例程起一个名字,我这里起名为“price-len“,点击”下一步“;随后的页面均不做改动,直接点击”下一步“和”完成“;
6、在代码编辑区可以看到,我们的“price-len“模板程序已经建立;现在,我们在主脑栲葱蛸函数OnTick()中输入以下代码://-幻腾寂埒--单位时间内的价格幅度 double price_len_cur=(iHigh(NULL,0,0)-iLow(NULL,0,0))/Period();//当前时间周期内的“单位时间价格幅度” double price_len_pre1=(iHigh(NULL,0,1)-iLow(NULL,0,1))/Period();//前一个时间周期内的“单位时间价格幅度” double price_len_pre2=(iHigh(NULL,0,2)-iLow(NULL,0,2))/Period();//前数第二个时间周期内的“单位时间价格幅度” Comment(DoubleToStr(price_len_cur,8),"\n",DoubleToStr(price_len_pre1,8),"\n",DoubleToStr(price_len_pre2,8));//将相应的数值显示在行情图表窗口的左上角
7、检查代码输入无误后,点击代码编辑区上方的“编译运行”按钮;然后点击“确定”;从运行情况来看:当前时间周期内的“单位时间内价格幅度”远较前数第二个时间周期内的相应值小很多。从而功能已实现……如果要将这段代码用在相应的EA判断中,只需要用相应的语句替换显示语句就可以了。