29评论

2收藏

如何将技术指标转化为智能交易系统

avatar forex | 6810 人阅读 | 29 人评论 | 2012-11-11

使用EA交易的几种思路

使用EA交易的朋友,有以下几种思路可以去尝试一下:

(1)小止赢(比如10点),大止损(比如1000点),超短线。这样的话能提高成功率,通过大量的小赢来获取胜利,但是要克服偶尔的大亏。

(2)利用5%的交易赚取95%的利润。这就是趋势交易法,在趋势的初期下单,趋势的结尾平仓。我这里所说的趋势是指你所认为的趋势,当然它的成功率是不可能大于50%的。这样的结果是大部分交易都是小赢小亏的,小亏占大多数,但是有少量情况下趋势真的倾向于你,那你就可以大赚,赚1000点一点也不稀奇。你要能忍受大部分时间盘整所带来的无尽的小亏损,甚至是上下打耳光,但是一定要坚持,否则当你放弃的时候,下一个交易机会也许就是真正的大行情。

(3)突破交易法:如海龟法则,突破是个很好的方法,简单的说就是追涨杀跌,所谓没有最高只有更高,没有最低只有更低。但问题是:什么样的突破是有效的突破?不能解决这个问题,你会死的很惨,因为大部分突破都是假的。

(4)大多数人不知道的极少的交易机会。这种交易机会出现的机会很少,这就需要你去努力的寻找。比如类似抄底打顶的时机。它出现的机会很少,但是成功率很高。

总结一下,好的EA长什么样?

(1)在历史数据复盘测试时能取得好的成绩。虽然历史成绩并不代表将来的成绩,我们能做到的只有这样了。

(2)可供调整的参数很少,条件不复杂,EA能自动的适应所有的变化。

(3)适用于尽可能多的货币对与时间周期。


  为了能赚钱而不是亏损,无论是专业的交易商还是个体,都在研究各和总结各种种的规律,并做成指标,我们经常会发现一些指标图线看起来很完美,于是都会想到要根据指标的变化进行交易。

  但这样做会赚钱吗?

  能否赚钱,我们就要看这些指标有没有作弊。即确定指标是否有未来函数的计算,也就是说指标会不会根据现在的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线数值做条件则有“错过最佳入场点”的问题。这是需要程序设计者权衡的问题。)

  另外的一个问题,就是怎末去判断指标输出的数值与我们肉眼看到的讯号一致起来的问题。

  如果参考的指标是一种变色线,则一定是一种颜色一个数组的方式叠加起来显示的。我们在取其数值的时候只需要看看不同颜色的数组的数值比较一下就知道其结果是哪种颜色,并作为EA的条件进行动作就行了。

  如果是箭头的方式,则一样是去取其数值,无箭头的K线上指标对应的数值是“空”,有箭头的地方数组对应的数值肯定不是空。用这个来判断是否发生了讯号就行了。

  比如双色线,就一定是两个数组分别显示不同颜色,当指标认为应该显示其中一种颜色的时候就将这个颜色对应的数组在当前K线中的数值设成当前价。反之则设为“空”。这样循环一遍后,你肉眼看到的就是变色线了。

  现在我们可以轻松获得指标的当前讯号状态了!

  下一步就是结合进EA中,就是把指标中的数组值拿过来。

  第三部分 EA 编程逻辑

  EA就是一个循环往复的过程。每来一个价格就运行一次。

  EA是电脑,并不知道你现在的仓位情况也不知道指标的情况,除了计算什么都不知道,一切都是编程者赋予的。因此,编程者脑子里一定要建立一种综合状态的概念。

  EA的一开始一定要先进行仓位的情况检查。大致的逻辑如下:

  1. 先查出持仓情况和持仓单的方向。

  2. 然后获得指标的数值。

  3. 判断并操作。

  持仓状态下:根据持仓单的方向进行对应来判断反向讯号是否发生。如果发生则平仓并反向入场。如果没发生则直接返回,等待下一次价格的而到来。

  空仓状态下:则两个方向的讯号都做判断,哪边发生了就按那边的方向入场。

  4. 其他的的细节

  不论入场还是出场都要在发出动作后马上判断是否正确执行的判断。如果没有执行成功则一定要立刻放弃后面的操作直接返回。等待下一个价格来的时候在此发出同样的动作。

  另外说明的是数据是自动更新的。


""
还没有人打赏,支持一下

评论|共 29 个

云淡天高

发表于 2012-11-11 13:29:40 | 显示全部楼层

天啊.  

云淡天高

发表于 2012-11-11 13:29:40 | 显示全部楼层

顶也~  

我爱sqq

发表于 2012-11-11 13:29:40 | 显示全部楼层

怎么就没人拜我为偶像那?? ~  

机器人

发表于 2012-11-11 13:42:06 | 显示全部楼层

有的平台要资金量达到了才给用EA,无奈  

心魔

发表于 2012-11-11 13:42:06 | 显示全部楼层

好人一个  

机器人

发表于 2012-11-11 13:42:06 | 显示全部楼层

楼主福如东海,万寿无疆!  

小飞鱼常春

发表于 2012-11-11 13:42:06 | 显示全部楼层

原来这样也可以  

翘楚以待

发表于 2013-2-8 23:47:27 | 显示全部楼层

感谢分享~~

旌城浪子

发表于 2013-5-3 10:46:03 | 显示全部楼层

感谢分享~~

123下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则