程序化自动交易 - 编写你的第一支自动交易策略

Gary Hsieh - 市场分析师 | 技术分析传奇名师

2023-04-28 16:19:23

上一篇文章(请点连结),我们完整介绍了Capitalise.ai的8大功能区。

本文我们会进入交易者最关心的环节 : 如何创建自己的交易策略。

为了撰写自己的全自动化交易策略,请先透过ACY专属的Capitalise.ai的网站入口注册

登入Capitalise.ai之后,将鼠标移动至左上角"+"的符号,点选"CREATE NEW STRATEGY"后会看到以下画面:

按下CREATE NEW STRATEGY后的画面

一个完整的交易策略是由进场与出场所构成,从上图可以发现有三个区块让交易者进行更改。

一、进场规则(ENTRY STRATEGY)

此处可让使用者编写进场规则,用户可先试着天马行空的撰写,把脑中的写法或交易经验直接转成英文,不用考虑文法,就算写错,Capitalise.ai也会用红字提醒。

在进场规则中,需要思考3个问题:

  1. 交易什麽商品?
  2. 在什麽样的条件下会触发进场?
  3. 进场时要交易多少单位?

笔者以最常被用来当成是基础的趋势突破策略,也就是价格向上突破均线或向下跌破均线的进场方式进行说明。

透过图形走势或过往的交易经验观察到,EURUSD这个商品的1小时K线走势中,只要收盘价站上100根K线的指数移动平均线(100 EMA),后续价格好像比较容易上涨,如果这种情况发生,买10,000 EURUSD。

因此可以写出以下进场规则:

If the EURUSD previous hour close crosses above the EMA(100,1h,Close) then buy 10,000 EURUSD

这里有3个知识点需要特别留意:

首先,当前K线的价格能否确实站上100 EMA,只有等这根K线跑完的时后才有办法知道,因此我们必须使用previous hour close这样的逻辑得到一个已经结束的K线的收盘价,可参考下图理解这样的关系。

再者,Capitalise.ai当中的指标值(例如移动平均线、RSI、MACD…等)都是代表前一根已经收线的K线所処位置的指标数值,可参考下图加深印象。

第三,进场规则中的crosses above字面上来看是穿越向上,请把它理解成K线的前前一根K线收盘价低于100 EMA,接着前一根K线收盘价高于100 EMA,同样的可从下图来掌握这样的关系。

出场规则(EXIT STRATEGY)

有进场就得搭配相应的出场,这是形成一个策略的基本原则,否则容易形成漂单的现象,意思是指进场之后,仓位一直没有出场。如果使用自行搭建的策略进行历史资料回溯测试的话,出场规则是必须要有的

在Capitalise.ai中,撰写出场规则大致有以下几种方式:

  1. 固定的止盈止损
  2. 追踪止损
  3. 追踪止盈
  4. 条件式出场 - 价格或指标发生变化
  5. 定时出场,又分为固定某个时间点出场与进场后过多久时间就出场,适合当日冲销及短线交易者。

这里先以最简单有效的固定止盈止损方式进行编写,其他不同的出场方式之后会再以专文探讨。

因此我们可以写出以下出场规则:

Close position at profit of 1.5% or at loss of 0.75%

出场规则撰写的起手式是"Close position",代表平掉原本进场的部位。

接着是at profit of 1.5%,表示当仓位浮动盈利达到下单金额的1.5%时出场,相当于进行止盈;而at loss of 0.75%则是当仓位浮动损失达到下单金额的0.75%时出场,这相当于进行止损。

从上述出场规则可以看到我们的盈亏比为2倍,而出场语法就是这么简单。

历史资料回溯测试与进行实盘模拟或实盘交易(TEST & AUTOMATE)

当进出场规则都已经设定好之后,会来到以下画面:

  1. 策略设定(Strategy Settings)
    • 循环执行(Run In-loop): 代表若交易者选择Run In-loop,会在实盘模拟或实盘交易中反复执行进场-出场,简言之,出场之后,会循环检查进场条件是否又再度符合,如果是,就会再度进场;若交易者交易者不选择Run In-loop,那么策略完成一次进出场之后便会停止。
    • 执行次数(Hits Limit):若选择Run In-loop,可以选择想要执行的总次数,举例来说,如果选5,代表策略完成了5次进出场之后会停止运行;若选择不填写任何数字,代表策略可以无限执行下去。不过这个部份在使用历史数据回测时,不需填写!
    • 策略累积损失达到多少后停止运行(Strategy Stop-Loss):这里如果打上数字,比如说是1000,Capitalise.ai会自动帮忙补上负号,也就是-1000,代表当本策略运行期间,累积的亏损来到1000时,策略便会停止运行。

      这其实是一个保险丝的概念,如果一个策略过去运行良好,从来没有绩效回落超过1000的情况,这时候透过这个机制,除了可以有效避免一直使用一个已经变无效的策略,还能够让交易者停下脚步去思考是否应该微调策略的参数或逻辑。不过这个部份在使用历史数据回测时,不需填写!
    • 策略名称(Strategy Name): 帮策略取名字,笔者建议用户透过一致性的命名规则方便管理以后日渐增加的策略群,中英文不拘。例如:买进_EURUSD_价格站上均线_固定止盈止损_20230428,透过这个命名方式能够知道这个策略是专门进场做多、商品是EURUSD、策略背后的逻辑、出场的方式以及建立的日期。
  2. 进场条件(ENTRY CONDITION)
    最后确认进场条件是否正确。
  3. 出场条件(EXIT CONDITION)
    最后确认出场条件是否正确。
  4. 回溯测试、实盘模拟、实盘交易(BACKTEST、SIMULATE、RUN)
    回溯测试是让交易者用过去的资料验证当前策略跑出来的效果;实盘模拟是让交易者以未来的资料直接测试策略效果好不好,但不会实际把交易送出,而是在Capitalise.ai内部服务器计算运行效果;实盘交易也是让交易者以未来的资料直接测试策略效果好不好,并实际把讯号送到MT4服务器直接进行买卖。

这里我们简单呈现按下回测(BACKTEST)之后所跑出来的结果。
 

从回测结果各位就能知道过去3个月运行此策略是有获利的,后续有进一步调试或实盘模拟的可能性。

下一篇文章我们会来讲解回测相关数据如何解读,以及策略在进行实盘模拟或实盘交易的注意事项。


本文内容由第三方提供。ACY证券对文中内容的准确性和完整性,不做任何声明或保证;由第三方的建议,预测或其他信息导致了投资损失,ACY证券不承担任何责任。本文内容不构成任何投资建议,与个人投资目标,财务状况或需求无关。如有任何疑问,请您咨询独立专业的财务或税务的意见。
 

ผู้เขียน

Gary曾任职于大型寿险公司、商业银行及私募基金进行外汇、固定收益商品与加密货币交易,拥有超过10年以上外汇、股指、债券、贵金属交易及分析经验。擅长运用技术分析结合市场心理进行中短线交易、并能运用程序编写脚本验证策略可行性。Gary善于分析交易纪录,协助客户找出交易问题。

加入ACY证券之后,所撰写的早市分析,有着高达7成以上的制胜率,另于网络讲座上透过自行编写的ACY独家指标教导客户如何玩转市场,成为长期制胜的交易者。

ราคาเป็นตัวบ่งชี้เท่านั้น