第一部分:指标
为了能赚钱并非是亏损,无论是专业的平台商依旧个体,都在研究各和归纳各种种的规律,并做成指标,我们经常会发现一部分指标图线看上去很完美,于是全将想到要依据指标的改变执行交易。
但如此做会赚钱吗?
是否赚钱,我们就要看这些指标有没有作弊。即确定指标能否有将来函数的计算,也就是说指标会否依据当下的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文件)。
参数:
ymbol - 计算指标报告上的货币对名称. 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线数值做条件则有“错过最佳入场点”的困难。这是需要程序设计者权衡的困难。)
此外的一个困难,就是怎末去分析指标输出的数值与我们肉眼目睹的讯号统一起来的困难。
假使参考的指标是一种变色线,则一定是一种颜色一个数组的方式再加上起来表明的。我们在取其数值的时机只需要看看不同颜色的数组的数值比较一下就知道其结果是哪种颜色,并作为EA的条件执行动作就行了。
假使是箭头的方式,则一样是去取其数值,无箭头的K线上指标对应的数值是“空”,有箭头的地方数组对应的数值肯定不是空。用这个来分析能否发生了讯号就行了。
比如双色线,就一定是两个数组分别表明不同颜色,当指标觉得应当表明其中一种颜色的时机就将这个颜色对应的数组在目前K线中的数值设成目前价。反之则设为“空”。如此循环一遍后,你肉眼目睹的就是变色线了。
当下我们可以轻松得到指标的目前讯号状态了!
下一步就是结合进EA中,就是把指标中的数组值拿过来。
第三部分:EA编程逻辑
EA就是一个循环往复的过程。每来一个价格就运行一次。
EA是电脑,并没有知道你当下的仓位情形也不晓得指标的情形,除了计算什么都不晓得,一切均为编程者赋予的。所以,编程者脑子里一定要建立一种综合状态的概念。
EA的一开始一定要先执行仓位的情形检查。大差不差的逻辑如下:
1.先查出持仓情形和持仓单的方向。
2.然后得到指标的数值。
3.分析并操作。
持仓状态下:依据持仓单的方向执行对应来分析反向讯号能否发生。假使发生则平仓并反向入场。假使没发生则直接返回,等候下一次价格的而来临。
空仓状态下:则两个方向的讯号都做分析,哪边发生了就按那边的方向入场。
4.其余的的细节
不论入场依旧出场都要在发出动作后即将分析能否正确实施的分析。假使没有实施成功则一定要立刻放弃后面的操作直接返回。等候下一个价格来的时机在此发出同样的动作。
此外表明的是报告是自动更新的。