如何将技术指标转化为智能交易系统(EA)
小明学外汇EA指标 2019-08-06 00:20:41 交流微信号:FX263cn 智能交易系统 EA智能交易 EA技术指标
FX263.com - 全球外汇中文网
第一部分:指标
为了能赚钱而不是亏损,无论是专业的交易商还是个体,都在研究各和总结各种种的规律,并做成指标,我们经常会发现一些指标图线看起来很完美,于是都会想到要根据指标的变化进行交易。
但这样做会赚钱吗?
能否赚钱,我们就要看这些指标有没有作弊。即确定指标是否有未来函数的计算,也就是说指标会不会根据现在的K线,计算后将指标在历史K线上标示做更改。比如原来是卖的提示,改为买(恐怖吧)。(当然还有一些EA特有的环节也会影响盈利问题,在这里不讲)
确定是否有未来函数的方法有两种:
1.白盒校验(即查看源码)
直接看源码中的循环部分,如果有修改历史曲线数组的行为,则可以立刻断定有未来函数。
2.黑盒观察
当没有源码的时候,可以将指标加载到1分钟的图线上,连续不断观察其标示的变化,尤其注意与当前K线状态最接近的历史K线标示的变化。如果随着当前K线的变化出现过历史变化更改,则也可以确定有未来函数。
指标EA化之前必须要确认的事情:
如果一个指标含有未来函数,那么这个指标是没有多大意义的。也就是说,我们要将指标改为EA前,必须确认这个指标是不含未来函数的,这样指标EA化才有意义。
第二部分 指标EA化
接下来将指标EA化大致的做法是:
在EA中通过函数iCustom读取这个指标的当前K线输出值,得出当前的状态,来决定是否入场或者平仓并反向入场。
iCustom的具体用法:
指标一般都是曲线或者箭头两种。在这里我们要把曲线和箭头都看成是数组就容易理解了。
对于指标来说每一条曲线或者箭头都是写在与每个K线对应的数组中的,也就是说一条曲线对应一个数组,一个方向的箭头也是对应一个数组(有箭头的数组值是当时的价格,没箭头地方的数组值是“空”)
iCustom MT4的帮助里说的是:“计算指定的客户指标并且退回它的值”,即这个函数可以让你获取指定指标的第几个数组对应第几根K线上的计算数值。
具体如下:
double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift)
计算指定的客户指标并且退回它的值。必须在terminal_directory\experts\indicators目录内编写客户指标(*.EX4文件)。
参量:
symbol - 计算指标数据上的货币对名称。NULL表示当前货币对。
timeframe - 时间周期。可以时间周期列举任意值。0表示当前图表的时间周期。
name - 客户指标完整的程序名称。
... - 参量设置(如果需要)。通过的参量和他们的顺序必须与desclaration命令和客户指标的外部可变物的种类对应。
mode - 索引行。从0到7并且必须对应以其中一个使用的索引的 SetIndexBuffer 函数。
shift - 从显示缓冲采取的值的索引(转移相对当前柱特定相当数量期间前)。
示例:
double val=iCustom(NULL, 0, "示例Ind",13,1,0);
double va2=iCustom(NULL, 0, "示例Ind",13,0,1);
例如:一个指标,画了两条曲线,则可以用iCustom取得这个指标在第4根K线上对应的第一条曲线的数值。
我们现在已经可以根据自己的想法去获得一个指定指标的任何K线上的状态数值了。那么下一步我们就要开始EA的概念。
因为EA只针对当前价格状态下的动作进行控制。所以一般而言我们就取指定指标在当前K线下的计算数值用于EA的条件判断。
如果你认为当前K线没有结束,其数值始终在变化,有可能一会有讯号一会没讯号,那么你可以采用取前一K线的指标数值的方式作为基础。(如果用当前K线指标数值作为条件会有不确定的结果,但如果用前一K线数值做条件则有“错过最佳入场点”的问题。这是需要程序设计者权衡的问题。)
另外的一个问题,就是怎末去判断指标输出的数值与我们肉眼看到的讯号一致起来的问题。FX263.com - 全球外汇中文网
如果参考的指标是一种变色线,则一定是一种颜色一个数组的方式叠加起来显示的。我们在取其数值的时候只需要看看不同颜色的数组的数值比较一下就知道其结果是哪种颜色,并作为EA的条件进行动作就行了。
第一部分:指标
为了能赚钱而不是亏损,无论是专业的交易商还是个体,都在研究各和总结各种种的规律,并做成指标,我们经常会发现一些指标图线看起来很完美,于是都会想到要根据指标的变化进行交易。
但这样做会赚钱吗?
能否赚钱,我们就要看这些指标有没有作弊。即确定指标是否有未来函数的计算,也就是说指标会不会根据现在的K线,计算后将指标在历史K线上标示做更改。比如原来是卖的提示,改为买(恐怖吧)。(当然还有一些EA特有的环节也会影响盈利问题,在这里不讲)
确定是否有未来函数的方法有两种:
1.白盒校验(即查看源码)
直接看源码中的循环部分,如果有修改历史曲线数组的行为,则可以立刻断定有未来函数。
2.黑盒观察
当没有源码的时候,可以将指标加载到1分钟的图线上,连续不断观察其标示的变化,尤其注意与当前K线状态最接近的历史K线标示的变化。如果随着当前K线的变化出现过历史变化更改,则也可以确定有未来函数。
指标EA化之前必须要确认的事情:
如果一个指标含有未来函数,那么这个指标是没有多大意义的。也就是说,我们要将指标改为EA前,必须确认这个指标是不含未来函数的,这样指标EA化才有意义。
第二部分 指标EA化
接下来将指标EA化大致的做法是:
在EA中通过函数iCustom读取这个指标的当前K线输出值,得出当前的状态,来决定是否入场或者平仓并反向入场。
iCustom的具体用法:
指标一般都是曲线或者箭头两种。在这里我们要把曲线和箭头都看成是数组就容易理解了。
对于指标来说每一条曲线或者箭头都是写在与每个K线对应的数组中的,也就是说一条曲线对应一个数组,一个方向的箭头也是对应一个数组(有箭头的数组值是当时的价格,没箭头地方的数组值是“空”)
iCustom MT4的帮助里说的是:“计算指定的客户指标并且退回它的值”,即这个函数可以让你获取指定指标的第几个数组对应第几根K线上的计算数值。
具体如下:
double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift)
计算指定的客户指标并且退回它的值。必须在terminal_directory\experts\indicators目录内编写客户指标(*.EX4文件)。
参量:
symbol - 计算指标数据上的货币对名称。NULL表示当前货币对。
timeframe - 时间周期。可以时间周期列举任意值。0表示当前图表的时间周期。
name - 客户指标完整的程序名称。
... - 参量设置(如果需要)。通过的参量和他们的顺序必须与desclaration命令和客户指标的外部可变物的种类对应。
mode - 索引行。从0到7并且必须对应以其中一个使用的索引的 SetIndexBuffer 函数。
shift - 从显示缓冲采取的值的索引(转移相对当前柱特定相当数量期间前)。
示例:
double val=iCustom(NULL, 0, "示例Ind",13,1,0);
double va2=iCustom(NULL, 0, "示例Ind",13,0,1);
例如:一个指标,画了两条曲线,则可以用iCustom取得这个指标在第4根K线上对应的第一条曲线的数值。
我们现在已经可以根据自己的想法去获得一个指定指标的任何K线上的状态数值了。那么下一步我们就要开始EA的概念。
因为EA只针对当前价格状态下的动作进行控制。所以一般而言我们就取指定指标在当前K线下的计算数值用于EA的条件判断。
如果你认为当前K线没有结束,其数值始终在变化,有可能一会有讯号一会没讯号,那么你可以采用取前一K线的指标数值的方式作为基础。(如果用当前K线指标数值作为条件会有不确定的结果,但如果用前一K线数值做条件则有“错过最佳入场点”的问题。这是需要程序设计者权衡的问题。)
另外的一个问题,就是怎末去判断指标输出的数值与我们肉眼看到的讯号一致起来的问题。FX263.com - 全球外汇中文网
如果参考的指标是一种变色线,则一定是一种颜色一个数组的方式叠加起来显示的。我们在取其数值的时候只需要看看不同颜色的数组的数值比较一下就知道其结果是哪种颜色,并作为EA的条件进行动作就行了。
【版权声明】
本文仅代表作者观点,不代表本站立场。Fx263.com对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证,且不构成任何投资建议,请读者仅作参考,并自行承担全部风险与责任。Fx263.com作为信息内容发布平台,页面展示内容的目的在于传播更多信息,不代表Fx263.com立场;本站会员及自媒体人所发的稿件所载明的信息与本网无关,如文章涉及版权,请联系本站处理。
【风险提示】
请通过正规渠道参与外汇保证金交易。目前通过网络平台提供、参与外汇保证金交易均属非法。请提高意识,谨防损失!外汇、贵金属和差价合约(OTC场外交易)是杠杆产品,存在较高的风险,可能会导致亏损您的投资本金,请理性投资。