上周,有一个朋友说他沽了黄金,定了止损位,但没有定下只赚位,过了一段时间帐面上已经有浮动的利润,因为工作太忙的关系,没有留心多细看。再过了一天,他的仓位全部去到止损位平仓了,心裏非常不爽。并且说如果是程式买卖,结果可能截然不同。其实程式买卖不一定是一个会赚钱的黑盒,一个买卖程式,可能只有十数行的指令,最多的可能会超过数千行的指令,前者和后者的精密程度当然不一样,而且用的概念和所用的技术指标也可能有差异。
其实制造一个外匯买卖程式,大致上可以分为三个阶段:
(1)形成期(Formation Stage):透过观察或者通过某一些科学理论,并且利用自己认为合理或者有胜出机会的逻辑,再选定可以演绎自己概念的技术指标和时间框架,去做一个雏形。有一个毕业于剑桥大学的物理学博士,并且在对沖基金工作的首席程式设计师曾经说过,程式设计的基本方法就是模式识别(Pattern Recognition),简单来说就是去捕捉到经常出现的图形。大 部分程式背后所用的概念和方法都不外乎以下:Trend Following(顺势操作)、Trend Reversal(逆势操作)、Multi Timeframe Sychronisation(多时间框架同步)、Multi Instrument Sychronisation(多工具同步策略)、Martingale(马丁策略)、 Mean Reversal(平均值回归)等等。一般会使用的技术指标会有一个 Momentum Indicator(动能指标),MACD,Stochastics和KDJ都是常用的动能指标,各有利弊,有经验的编程技术人员还会选用自己研发的动能指标。除了以上,大 部分成功的程式必须要有一个Volatility Indicator(波幅指标),经常使用的波幅指标有ADX、DMI+/- 、ATR、Vortex等等。以上两种技术指标几乎是必须有的项目,其余的技术指标就是按程式背后的逻辑和方法去选定。
(2)测试及确定阶段(Testing and Confirmation Stage):当编写了基本的程式以后,就可以进行测试,一般会有一个基本版,和几个不同的变种,可能有着不同的设定和过滤方法,例如选用不同的时间框架、不同的金融工具及技术指标的设定等等。有部分编程者会选择歷史数据回溯测试(Backtesting)去测试程式的可用性。个人认为这方法是绝对行不通,就好像打开答案去答问题一样。建议用模拟帐户的实际动态数据去测试才行。如果开仓比较频密的高频买卖,当存取了数百个或上千个买卖纪录之后,样本数据可能已经勉强足够,但如果开仓比较稀疏的策略,就可能需要较长的时间去确认。建议把买埋数据上载到MQL4或Myfxbook平台,然后再去阅读相关的统计数据,就会了解到自己系统的利润因子、胜出率、槓桿负荷率、资金回彻率、平均胜出和亏损的点数和利润等等的有用数据,就会推算到自己设计系统的优点和缺点及需要改进的地方。基本上系统在测试的时间段内能够提供利润,简单来说就是利润因子必须要大于一,就是最低的要求,才可以晋升到下一个阶段。
(3)最终确定期(Finalisation Stage):第二阶段完成后,并且利用系统的统计数据作出适当的改动和选择之后,就可以开设真正的现金帐号,开始时可以存入少量的资金去去测试实战的表现,最低资金要求会因外匯商而异,一般都会在500美金左右。与此同时可以将买卖数据上载到社交买卖平台,例如MQL4或MQL5,甚至乎可以设定为可以付费订阅的讯号,这样如果长期下去获利的情况理想,再加上适当的宣传,就可以吸纳付费的跟单买卖。在MQL4平台上有一个累积了四年不败纪录的俄罗斯讯号提供者,他的跟单人数有383人,每月付费在67美元,跟单总额有1,000万美元,光是月费的收入已经超过20万港元一个月,算是一个不错的被动收入。另外有部分的外匯商还会和一些可靠的买卖讯号提供者合作,并提供基金经理人帐号(MAM Account)跟单服务,也是一个另类的选择,但是收费会比较高一些,好处就是可以直接和讯号提供者联络和提出问题。
|