EA编程:新增一个抛物线指标
2022-11-01 09:55:41
more 
1417

  在EA交易中,如何新增一个抛物线指标。给EA设定一个下单条件,也就是抛物线指标转向的时候,下单,去掉之前的挂上就买入一单。

  具体是,抛物线从k线下面转到k线上面去之后,第二根k线开盘价卖出,如图中标记5处。

  反之,抛物线从k线上面转到k线下面去之后,第二根k线开盘价买入,如图中标记1处。

  一、引入抛物线指标函数iSAR函数

  这个函数有5个参数,前面4个看字面意思就知道其意思了,其中最后一个比较难以理解,涉及到MT4平台的K线位移。

  什么是K线位移呢?

  MT4平台,对于k线图上每一个k线,都设置了个位置编号,这个编号就是位移。从右往左,从0开始。

  0号k线的开盘价就是Open[0];

  1号K线的最高价就是High[1]。

  如果要获取3号k线对应的抛物线的值就是iSAR(NULL,0,0.02,0.2,3)。

  二、根据上面的知识,我们现在来写一个函数Signal(),用来定义本EA的信号,返回值为1表示买入信号,返回值为-1表示卖出信号。

  三、现在,我们来开始编程写EA了。

  1.在程序OnTick()函数的开始,我们定义两个变量,用来记录EA的持仓状态。顺便也定义一个变量,从信号函数中返回信号值。

  int buys=0;//多单持仓有几笔

  int sells=0;//空单持仓有几笔

  int signal=signal();

  2.然后通过for循环遍历持仓单,分别找到多单持仓几笔和空单持仓几笔,并分别赋值给变量buys和sells。

  3.然后加入开仓代码,当多单持仓数为0并且买入信号出现的时候,下多单;反之,当空单持仓数为0并且卖出信号出现的时候,下空单。

  4.下单解决了,再就是加入平仓代码。

  平仓代码加入到之前的for循环里面去,这样,整个程序在每次tick里就只有一次遍历订单,让程序运行更加高效。

  为了节省篇幅,顺便把修改订单止损止盈也加入进去。

  这里面需要注意一点的就是,多单的止损价是开盘价-点数*Point,多单止盈价是开盘价+点数*Point;

  反之,空单的止损价是开盘价+点数*Point,空单的止盈价是开盘价-点数*Point。

  四、到此,整个程序就完全修改好了,用历史数据测试下,正常交易。

  完整代码如下:


Statement:
The content of this article does not represent the views of fxgecko website. The content is for reference only and does not constitute investment suggestions. Investment is risky, so you should be careful in your choice! If it involves content, copyright and other issues, please contact us and we will make adjustments at the first time!

Related News

您正在访问的是FxGecko网站。 FxGecko互联网及其移动端产品是中国香港特别行政区成立的Hitorank Co.,LIMITED旗下运营和管理的一款面向全球发行的企业资讯査询工具。

您的IP为 中国大陆地区,抱歉的通知您,不能为您提供查询服务,还请谅解。请遵守当地地法律。