算法交易入门-一-
算法交易入门(一)
原文:
zh.z-lib.gs/book/25056530/abde23
译者:飞龙
引言
星期六早上 6:20 再也等不及了。那时我通常会听到熟悉的“咚”的一声,卷起的《洛杉矶时报》报纸击打我公寓的前门。前提是送报员今天瞄得准。有些日子,附近的灌木丛会热情迎接报纸(树枝?)。而其他日子报纸根本就没有到达。但在这个星期六,我听到了报纸撞门的声音,知道是时候准备星期一的交易了。
我急匆匆地起床,打开门,抓起报纸,撕开它,直到找到商业版块。后面的数据正是我所寻找的信息——在短时间内使我变得富有(或者我认为是这样):前一天的每日商品价格。
正如你所猜测的,这一切发生在电脑统治之前,日常和盘中数据只需几个按键就能获取。这是一种极其传统的方式——所有东西都是纸质的!
无论如何,我扫描了商品价格,找到了当时称为“活猪”的价格(现在是瘦肉猪)。我记录了最近一个月合约的收盘价,并将其复制到一张有 6 列的纸上:日期、收盘价、4 周期均线、9 周期均线、14 周期均线和信号。
我认真地手动计算每一个均线——记住,那时我没有电脑可以帮我——然后将结果与我的规则进行比较:
9 周期均线高于 14 周期均线? 是的!
4 周期均线高于 9 周期均线? 是的!!
收盘价突破 4 周期均线?是的!!!!
就这样——一切都是“是”,我有了一个明确的信号!星期一早上,我会下单购买 1 个活猪合约。我郑重其事地在信号栏中写下“做多”,在我脑海中巩固了这笔交易。
图 1 - 旧派算法交易,手动进行!
图 2 - 算法买入信号,现代技术助力
周末的剩余时间里,我紧张、兴奋,仿佛置身梦中——这是我第一次真正的商品交易!
我之前并不知道,但即使在那段旧时光,我也在进行算法交易,或称为“算法”交易。我是根据一套精确的规则进行交易,归根结底,这就是算法交易的本质。
当时,交易员称之为系统交易、机械交易或基于规则的交易。几年前,很多人提到了机器人或“机器人”交易。但直到最近,很少有人使用算法交易这个术语。然而,所有这些基本上都是同一种东西。
所以,当有人提到这些术语时——机械的、系统化的、基于规则或算法的交易——他们很可能指的是同样的事:一套规则,告诉你何时进出交易。这些规则可以存在于计算机上、你的脑海中,或者像我早期一样,写在老纸上。
这是本书的第一课——算法交易 = 交易规则。
这本书中还有许多其他课程,旨在引导你进入算法交易的世界。这种交易适用于许多不同的工具:股票、ETF、外汇、期货和期权等。不要让“算法”或“算法交易”这些术语吓到你;在这本书中,我将带你了解算法交易的基础:
-
对算法交易到底是什么,以及它不是什么的讨论
-
算法交易的基础,适合初学者到中级交易者
-
了解算法交易是否是你应该考虑的事情
-
算法交易的诸多优点
-
算法交易的缺点
-
如何开始自己的算法交易
-
选择一个交易软件平台
-
学习你平台的基础知识
-
学习在你平台上的编程语言
-
一个简单的算法让你入门
-
成功算法交易的提示
-
阅读完这本书后的步骤
本书的目的是不教你一般交易的基础;在这个主题上有很多其他书籍可供选择。本书旨在让你入门算法交易,假设你了解一些交易基础。我坚信算法交易是小型零售交易者与专业交易者竞争的好方式。
到书的最后,你不会对人们谈论交易算法感到害怕。你将了解基础知识,并为未来的算法交易努力制定计划。
那么,让我们开始这段旅程吧!
第一章 - 不同类型的交易
“算法”和“算法”。这两个词让许多交易员心生畏惧。计算机程序失控,肆意买卖的情景,常常是噩梦。一个交易员平静入睡,却发现一个流氓算法在夜间耗尽了他的账户,因一个简单的编程错误买卖不止。
图 3 - 一个失控的交易机器人?
更糟的是,交易员醒来发现自己空头 100 份 ES(迷你 S&P)合约,而他只想空头一份合约!
也许你的噩梦是对冲基金以闪电般的速度执行“杀手机器人”算法,耗尽所有较慢交易员的账户。
当然,事实是交易算法可以做这些事情,甚至更糟。关于这些毁灭账户的计算机代码的恐怖故事屡见不鲜。这些确切的噩梦情境确实发生过。但设计得当的算法也可以是友好的。
我显然会关注友好的算法!
但在我深入讨论算法的细节之前,重要的是要讨论一些不同类型的交易。这将帮助你理解算法是什么,它能做什么,最重要的是,它不能做什么。
自由裁量交易
大多数零售交易员都是自由裁量交易员。自由裁量意味着交易员在进出交易时使用某种判断。
例如,一位交易员在 CNBC 上听说了一只热门股票,立刻决定买入。这就是自由裁量交易。
另一位交易员有一张她整天盯着的图表。它可能充满了指标、趋势线、移动平均线等,或者可能只有价格数据。 一旦该交易员基于她所看到的做出交易决策,那就是一次自由裁量交易。
我们的第三位交易员只有一个 DOM 梯子,这是一种可视化工具,显示所有挂单买卖订单和价格。他是根据这个工具进行交易的。他很可能也是一位自由裁量交易员。
在一天结束时,如果你问这些交易员为何做出某些交易,或为何避免其他看似完全相同的交易,他们可能会给你一个“呆若木鸡”的表情,或像“我不知道,感觉就是对的!”这样模糊的回答。
事实上,自由裁量交易员可能有或没有规则,他们可能遵循或不遵循这些规则,且在应用这些规则时可能不一致。哎,他们甚至可能无法描述促使他们交易的规则。
我记得前一段时间在一个“价格行为”大师的交易室里。他在实时预测市场,内容大致是这样的:“是的,市场看起来很弱,这里有一个我通常会采取的空头设置,所以我只是等待短期入场……等待……等待……不,这是一个多头交易!我刚刚获利出局!”
啊?
后来当被问起时,导师无法解释他认为的教科书式(短线)入场是如何突然变成一个盈利的长线套利交易的。“感觉就是对的,”他解释道。
我开始想知道他是否在进行真实交易,但这是另一个故事。关键是,他在以自由裁量的方式进行交易(可能是模拟交易)。
因此,自由裁量交易涉及一些人类判断的交易决策。也许是直觉,或者第六感,甚至是随机猜测,但交易选择通常包含一些无法明确界定或测试的内容。
现在,这种交易可能听起来对你不对劲(“谁会根据直觉交易?”)或者可能听起来很吸引人(“太好了,我可以用我的大脑来帮助我决策!”)。但事实是,很多人确实这样做,并且一些人也取得了成功。这是一种合法的交易方式。
然而,自由裁量交易绝对不是算法交易。
我猜,如果你在读这本书,可能已经尝试过自由裁量交易但失败了。别觉得沮丧,我也算是你们中的一员——我从来不是一个好的自由裁量交易者。这就是我深入算法交易的主要原因。
算法交易
算法交易完全是关于规则。事实上,它就是规则。没有自由裁量。没有人类判断。
交易算法可以简单,也可以复杂,随你选择。
有多简单?这里有一个基本的两行策略:
如果收盘价 < 最近 5 根 K 线的平均收盘价,就买入
如果收盘价 > 最近 5 根 K 线的平均收盘价,就卖出
图 4- 简单算法的买卖信号
在过去 13 年里,这个策略在扣除滑点和佣金后,仅仅交易一个合约就赚了超过 92,000 美元!而且在多头和空头方面都能盈利!不过别太兴奋,过去几年对这个策略并不友好……
图 5- 一个简单(但不稳定盈利)的算法收益曲线
图 6- 典型的算法绩效报告
这只是一个非常简单的算法。相比之下,算法策略也可以极其复杂。有些交易者的单一算法运行的代码行数超过 25,000 行——真正的火箭科学!
交易算法有两个关键:
-
它们可以被测试。大多数算法可以进行历史测试,通常称为回测。这被认为是创建算法的主要优势之一,稍后我会描述。对于无法进行历史测试的算法,几乎总是可以在模拟模式下进行实时测试,但需要适当的预防措施和一些注意事项。在这两种情况下,交易者通常可以在用真钱交易之前确定策略的可接受性。
-
算法被严格定义。如果算法今天看到一个看涨的信号,它会告诉你做多。如果明天看到同样的信号,它会再次告诉你做多。算法只关注其编程时设定的内容。它不关心美联储的想法,不关心新闻,也不关心吉姆·克莱默昨晚大喊某只股票是买入 – 除非你将这些类型的规则编入算法中。算法在遵循规则方面是一致的。
许多交易者谈论“黑箱”,这是一种特殊类型的算法。对于黑箱,规则(算法)对交易者是隐藏的。他或她仅仅得到进出场信号,并不知道这些信号是如何产生的。
这种类型的算法可能听起来不吸引人或令人害怕,但许多人喜欢这种方法。干扰你根本看不见的计算机代码是非常困难的!
一些算法交易的示例
那么,算法交易者是什么样的呢?以下是一些典型的示例:
-
一位在家进行交易的零售交易者。他全职工作,因此交易是他的爱好。每晚,他下载最新的价格,要么手动计算信号,要么在计算机上完成,然后根据规则进行交易。他可能在白天检查仓位,也可能不检查,但由于他在非工作时间下单,他知道自己每天都在遵循策略。
-
一位全职的自营交易员。他全天进出交易,同样根据设定的规则。他从不偏离规则,因为他知道他的老板会抽查他的交易以确保遵循规则。
-
一段由众多数学、统计学和物理学博士编写的对冲基金计算机代码。他们运行的计算机代码有 50,000 行,能够完成一切 – 进出交易、计算仓位、自动执行滚仓等。一位初级交易员始终在附近监控交易,以防发生故障,但计算机控制整个过程。他们运行的策略可以是微秒级的(快速进出),也可以是持续几小时的日内交易,或持续几周的波段交易。
-
一位使用标准零售平台 Tradestation 的专业零售交易者。他创建策略,然后让 Tradestation 自动运行这些策略。他通常会密切监控仓位,因为 Tradestation 的工作人员表示“自动交易并不意味着无人值守交易”。他可以进行相当多的自动化策略交易,前提是他有足够的资本,并且他的策略足够多样化。
这些人之所以被称为算法交易者,是因为他们遵循严格的进场和出场规则。这才是关键——他们是 100%的规则遵循者。凭借这些严格的规则,他们可以对自己的方法进行历史回测,尽管“过去的表现并不能预示未来的结果”(正如美国政府免责声明所正确指出的那样),但很高兴地意识到,所交易的策略在过去是有效的。
很多交易者无法做到 100%遵循规则,因此他们落入最后一个主要类别——混合交易。
混合交易
现在我已经讨论了自主交易和算法交易,是时候引入另一种交易类型——我称之为混合交易。
混合交易仅仅是自主交易和算法交易的结合。一些例子:
-
进场是基于技术指标和规则,但退出则留给交易者自行决定。
-
进场是基于交易者的判断,但一旦进入交易,自动退出“机器人”就控制了交易,不需要交易者干预。
-
进场和出场都由规则明确界定,但交易者有权决定是否遵循这些规则。例如,交易者可能会在自然灾害或人为灾难后选择忽视多头信号。或者,交易者可能会在重大世界事件(如英国脱欧投票、特朗普选举之夜)之前选择平仓。
混合交易的优势在于交易者仍然可以对交易有一定的自主影响。这也是一个劣势!我在自己的算法交易中注意到的一点是,我一些最好的算法交易实际上是我“人类判断”绝对不喜欢的交易!如果我把这些交易当作混合交易,我将消除所有算法带来的良好效果。
读到最后一节时,你可能会想,“那些专业交易者在做什么,我该如何与他们竞争?”这是个好问题!专业交易者使用上面详细介绍的所有方法。你可以通过将交易视为一项严肃的事业来竞争。不要幻想“我每天有 15 分钟来进行交易”类型的系统。希望成为最优秀的交易者——那样你就能与专业人士竞争。
在所有这些交易类型中,很难决定哪种交易方式适合你。在整本书中,我将讨论一些优秀算法交易者的特点和特征,但现在我假设你已经知道算法交易是你想追求的道路。如果你仍然不确定,继续阅读,也许在书的最后你会确定!
第二章 - 算法交易基础
“我相信规则是为了被打破的。”——电影制片人罗伯特·埃文斯(可能并不是成功的交易者)
每次交易,无论你是初学者、中级还是专家,你都在使用规则来交易。你可能没有意识到这些规则,规则可能会每天或每小时变化,但确实存在规则。规则是你的决策过程——你如何决定是否进入或退出特定交易。它可能是混乱和支离破碎的,但那里一定有一个规则。也许你的规则是“规则是用来打破的!”
所以,当 CNBC 上那个古怪的评论员大喊“买这只股票!”你会跟随他的建议吗?
规则:某人说买,你就买。
你表哥给你打电话告诉你内幕消息?
规则:疯狂的表哥说他有“内部”信息,你只在他上次的建议获利时才买入。
使用技术指标吗?
规则:如果价格高于 20 期平均值,并且 RSI 值低于 20,则做空。
列表是无止境的——买卖规则是无限的。但当它们被写下来、严格遵循且不受判断或自由裁量的影响时,这些规则就可以转化为算法。
“算法”中包含什么?
让我们来看看典型交易算法的组成部分。我还将用简单的英语和 Tradestation Easy Language 给出一些例子。
多头进场
这是绝对必要的——你打算如何在多头(买入)方面进入市场?你必须有标准,或一组标准,来进入市场。
一个例子可能是一个简单的动量类型进场:
伪代码:如果当前收盘价大于 5 根 K 线前的收盘价,则在下一根 K 线开盘时做多。
Tradestation Easy Language 代码:如果 close>close[5],则在下一根 K 线以市场价买入;
短头进场
如果你在交易股票,你可能不想在市场上做空(www.investopedia.com/terms/s/shortselling.asp
)。但对于期货和外汇,你几乎肯定希望能够做空,以从价格下跌中获利。在这种情况下,你需要一个做空进场规则。
现在,这个规则可能与多头进场规则正好相反,或者可能完全不同。这就是创建自己算法的有趣之处——你可以按自己想要的方式设置。定制算法以符合个人偏好的能力还有一个隐藏的好处——我发现比起遵循别人设定的规则,遵循我自己创建的策略规则要容易得多。请记住,良好的算法交易就是遵循规则。
一个短线进场的例子可能是简单的移动平均线交叉:
伪代码:如果收盘价跌破 7 期移动平均线,则在下一根 K 线做空。
Tradestation Easy Language 代码:如果收盘价跌破平均值(close,7),则在下一根 K 线以市场价做空;
多头出场
显然,如果你有一个多头进场规则,你也需要一个多头退出规则。这个退出可以基于当前头寸的利润或损失(见下一几页的“止损”和“利润目标”),也可以基于技术指标、图表模式等。它只是一个触发器,用来告诉你退出多头头寸。
多头退出的一个例子可以是图表模式——在连续两个下跌收盘后退出:
伪代码:如果此柱的收盘价低于前一柱的收盘价,并且前一柱的收盘价低于两根柱前的收盘价,则退出多头头寸。
Tradestation 易语言代码:如果 close<close[1] 且 close[1]<close[2],则在下一个柱以市价卖出;
空头退出
如果你有一个空头进场,你可能也会想要一个空头退出。
空头退出的一个例子可以是在每个星期四平仓:
伪代码:如果今天是星期四,则退出空头。
Tradestation 易语言代码:如果 dayofweek(Date)=4,则在下一个柱以市价买回;
停止并反转
对于上述多头和空头退出,当前头寸将被平仓,使交易者保持平仓状态。但是如果你想反转头寸呢?假设你是多头,如果满足某些条件,你希望同时退出多头并做空?
一个例子是如果出现新低,则反向做多并做空:
伪代码:如果当前柱的低点是过去 12 根柱的最低低点,则退出多头并做空。
Tradestation 易语言代码:如果 low=lowest(low,12),则在下一个柱以市价卖空;
止损
大多数算法交易者希望保护自己,以防价格逆转。考虑到某个时刻退出市场是合理的,无论技术指标、图表模式或任何使用的进场信号显示什么。这可以通过简单的止损实现。
伪代码:如果当前头寸的损失达到-$500,则退出头寸。
Tradestation 易语言代码:SetStopLoss(500);
利润目标
与止损一样,大多数算法交易者希望在价格朝有利方向移动时退出。当达到某个利润水平时,他们希望退出。
伪代码:如果当前头寸的利润达到+$2500,则退出头寸。
Tradestation 易语言代码:SetProfitTarget(2500);
头寸规模
作为一个可选功能,你可能希望算法决定买入/卖出多少股或合约。这包括头寸规模的概念,这是一个独立的话题!一些常见的头寸规模技术包括固定分数和固定比率,以及简单的“每$y 的股本交易 x 合约”。
伪代码:每$10,000 的当前股本交易 1 个合约(起始股本加上到目前为止的利润)
Tradestation 易语言代码:ncons = int((startingequity+NetProfit)/10000); 在下一个柱以市价买入 ncons 合约;
订单类型
你的算法可以下的订单类型部分取决于交易平台。最常见的三种类型是市价单、止损单和限价单。
Tradestation 易语言代码:
//市场订单
在市场上以市价买入下一根柱子;
//止损单
在 XXXX 停止时在下一根柱子卖出; //其中 XXXX=您希望在当前市场价格以下退出的价格
//限价单
在 XXXX 限价时在下一根柱子卖出; //其中 XXXX=您希望在当前市场价格以上退出的价格
大订单成交算法
我刚提到的所有算法组件都可以被零售交易者使用。大型专业交易者有自己的算法,您可能听说过。这些包括各种类型的“成交”算法——用于大规模交易某种工具的方案。当您交易类似迷你 S&P 期货的 1000 合约时,您不能仅仅提交一个 1000 合约的市场订单——这会扰乱市场,并给您一个糟糕的平均成交价格。该订单需要“处理”,也就是说,需要分解成小块,在特定时间或特定价格附近完成成交。
您可能永远不需要这些类型的算法,但您应该知道它们的存在。
更高级的算法
在刚才给出的示例组件中,假设交易者只交易一个算法。但当交易者有 10 个、20 个或更多算法时,会发生什么呢?那时候事情是如何运作的?
答案是,一旦编码了一个单一算法,这些算法可以独立存在,或者它们可以“相互交流”。也许您会想限制不同算法产生的未平仓头寸数量,或者可能基于所有算法的当前利润来决定头寸大小。可能性令人瞠目结舌,超出了本书的范围。但理解这些“附加功能”对于一个简单的市场算法是存在的,还是很有价值的。
对于许多交易者来说,为了简单起见,他们将每个算法视为独立的小世界。然后,他们使用外部分析(可能在 Excel 中)将算法组合成一个投资组合,以确定适当的风险敞口、适当的头寸大小等。这是初学者算法交易者尚不需要担心的事情,但至少应该知道。
综合应用
这里有一个简单的算法示例,它既能做多又能做空,具有止损和利润目标,可以停止和反转,并且也可以平仓。它还包含一种简单的头寸大小方法。我不推荐它(因为您个人尚未测试并验证该算法是盈利的),但您可以将其放入您的交易平台并开始交易。
Tradestation 易语言代码:
输入:初始资本(10000);
变量:Ncons(1);
//头寸大小计算
Ncons=四舍五入(((初始资本+净利润)/10000),0);
//多头和空头入场,将停止并反转
如果 close>close[5] 则在下一根柱子以市价买入 Ncons 合约;
如果 close<close[5] 则在下一根柱子以市价卖空 Ncons 合约;
//多头和空头的技术性退出
如果 close=最低(close,3) 则在下一根柱子以市价卖出;
如果 close=最高(close,3) 则在下一根柱子以市价买回;
//标准美元止损和利润目标
设置止损合约;
设置止损(500);
SetProfitTarget(2000);
第三章 - 算法交易适合你吗?
“你的经验不足。”
“你并不适合这个职位/我们的组织。”
“你不适合这个职位/我们的组织。”
如果你曾经找过工作,可能听过潜在雇主说出一个或多个这样的借口。问题是,你怎么知道他们说的是否真实,甚至不给你机会证明自己?
算法交易也是如此,最终你会发现算法交易是否适合你。不幸的是,交易者发现的方法是市场从你的账户中提取资金!
我将为你简化这一痛苦的过程。
在后面的章节中,我将帮助解决第一个拒绝——经验。本书将帮助你获得开始进行算法交易所需的经验。你将走在正确的道路上,尽管还有很多事情需要做。
关于另外两种拒绝——知道你是否是适合算法交易的人,以及这种交易方式是否与你的个性“匹配”——在这一章我将讨论一些我认为对成功的算法交易者重要(或不重要)的性格特征。
记住,你是一个小型零售交易者,交易世界里充满了专业的“鲨鱼”。如果你想竞争,首先要知道算法交易是否适合你。本章是一个很好的了解途径。
我的建议是拿一张纸,写下我列出的每个特征,然后在我解释之后,对每一项进行自我评分。你很快就会看到算法交易是否适合你!
分析性思维
科学家说,世界上有两种人,左脑思考者和右脑思考者。左脑的人倾向于更具分析性,注重数字。通常,这些人会在医生、律师、会计师、科学家、工程师、计算机程序员等职位上工作。这类人喜欢规则。
另一方面,右脑的人倾向于更自由的思考者。艺术家、音乐家、销售人员、市场营销人员和其他“软技能”职业通常属于他们的领域。
这两类人对世界都很重要。想象一下没有像莫奈这样的艺术家,没有像贝多芬这样的作曲家,没有像爱因斯坦这样的杰出逻辑思考者的生活。没有多样性的世界将会是一个悲伤的地方。
在交易中,某些领域似乎更适合左撇子和右撇子。右脑交易者可能更擅长视觉图表交易和自主交易。我所接触的算法交易者大多是左脑思考者。多年来,我与许多医生和科学家做过算法工作,但艺术家并不多。
现在我意识到我真的过于简单化了。但一般来说,分析型的左脑思考者更有可能发现算法交易的吸引力,并更有可能在其中获得成功。
如果你主要是左脑的分析型思考者,给自己一分。
控制狂?
不久前,我和一位交易者喝咖啡。他下周将上线他的外汇系统。他有多年有利的回测、明确的规则,而且已经设置好自动化。
一周后,我问他情况如何。他告诉我,他在第一个星期赚了 500 美元,账户为 5000 美元。我告诉他不错。但他摇头害羞地说:“其实不然。我这周把系统开关了几次。如果我让它正常运行,我本可以赚 2500 美元!”
他是一个典型的控制狂。但他并不算特别异常。
很多交易者喜欢“掌握主动权”——随时准备在感觉不对时进入或退出交易。让电脑独自控制进出交易的想法对这些人来说是不可接受的。这些交易者想要,并且确实渴望对交易拥有终极控制。
一个很好的非交易例子就是“直升机”父母。这些父母总是围着孩子,随时准备出手“拯救”他们的后代,无论他们的年龄。我甚至听说这些控制狂父母会代孩子给大学教授和雇主发邮件!控制狂,到了极点。
而算法交易则完全是关于放手。它是关于准备、测试和设置交易策略,但当时机来临时,要放手,让经过回测验证的算法发挥作用。这并不容易,尤其是刚开始时。但这是进行适当算法交易所必需的。
如果你不是控制狂,给自己一点分数。
动手者/完美主义者
你是否有想要正确、完美的需求?这在学校和许多“分析型”职业中是一个很好的特质。但在交易中,这却是个坏事!
图 7- 这应该是你回测时的目标吗?(答案:“不!”)
为什么?作为交易者,我们为什么不应该追求看起来出色的历史回测,追求交易的完美呢?
答案可能让人震惊——不!
追求完美,不断调试交易算法直到产生良好的回测,实际上是你能做的最糟糕的事情。你实际上是在自我欺骗,以为通过不断测试可以改善事物(注意到那点控制狂特质了吗?)。
但最优秀的交易者只会进行他们绝对需要的测试。他们意识到完美是不可能的,因此不会试图追求它。
想想你在交易之外所做的事情——如果你总是努力追求完美,或总是尝试改善事物,这就是算法交易的警告信号。如果你不是完美主义者或动手者,给自己 1 分。
情绪驱动的人
图 8- 这桶炸丨药描述了你典型的情绪状态吗?对于交易者来说可不好!
有些人天生就非常兴奋。他们欢呼声最大,嘘声也最大,情绪总是外露。你几乎总能知道他们对某个问题的立场。
另一方面,有些人在压力下非常冷静,从不慌乱,无论发生什么都不会过于激动或沮丧。
你是哪种人?如果你大多数时候认为自己冷静、沉着,请给自己两分。这是算法交易时的理想状态。
有耐心的人
花一分钟去谷歌搜索“交易系统快速致富”。你会发现超过 2,000,000 个匹配结果。
然后搜索“交易系统慢致富”——你只会看到大约 300,000 个匹配结果。
很明显,大多数人希望快速致富——我指的是,谁真的想等待呢?然而,等待和耐心是成功的关键。你不会在开始算法交易的第一周就创造出十几个算法。而且你的算法可能不会让你一夜暴富。
良好的交易在于耐心,让交易自然发展,让策略发挥作用。你是否尝试过一个新策略,却在亏损一周后就放弃了?也许你的策略确实失败了,但也许它只是经历了一个不幸运的星期。
把交易想象成一次长跑。许多跑者从一开始就开始冲刺。有些人因为没有适当热身而拉伤腿筋。其他人起步领先,但随后他们意识到——自己是在进行 26.2 英里的马拉松,而不是 100 码的短跑!
把交易视为马拉松。慢慢来,保持耐心。正如他们所说:“罗马不是一天建成的。”如果你能慢慢来,请给自己一分。
遵循规则的人
你见过小孩子在涂色书上涂色吗?有些会整齐地保持在边界内,另一些则只把边界当作指南,随心所欲地涂画。不过,两者都能创造出美丽的最终作品!
图 9- 你是如何上色的?
之前,我谈到了左脑和右脑的人。我猜遵循规则的人往往更偏向左脑,但并不总是如此。
优秀的算法交易者往往是遵循规则的人。如果你认为自己是遵循规则的人,请给自己一分。
经常感到沮丧的人
我有三个孩子,基本上都同样有才华。但在体育方面,我的小儿子很多时候表现不佳。问题是什么?他很容易沮丧。一旦路障出现,他就会放弃,或者生气,然后再放弃。
他现在会是一个糟糕的算法交易者。
你有多“无沮丧”?开发算法策略充满了挫折。如果你无法应对挫折、路障和几乎持续的沮丧,你会陷入困境。算法交易系统的开发并不简单——如果简单,大家都会去做!
如果你能够轻松处理和克服挫折,就给自己两分。
过程导向的交易者
你目前如何评估潜在的策略?你是否以相同的方式评估每一个,经过相同的步骤?如果是,给自己一分——遵循明确的流程对算法交易者来说是好的。
如果你没有一个流程,无论是寻找和测试交易策略、实际交易还是事后分析你的交易结果,都给自己零分。
最优秀的算法交易者往往是最注重流程的。他们始终坚持自己的市场交易方法和交易方式。
为什么这很重要?简单来说,没有正确的交易方式,但有无数错误的方式。通过成为一个一致的、过程导向的交易者,可以更容易地进行课程调整。
在质量保证领域,这被称为计划-执行-检查-行动循环。在行动阶段,交易者会找出改进自己所做事情的方法。想象一下,没有固定流程时,改变是多么困难!(提示:这实际上是不可行的。有了流程,改进变得更容易。)
图 10- 计划-执行-检查-行动质量改进工具
如果你注重流程,就在总分上加一分。
总分
你做得怎么样?这次练习总共可以得 10 分。
-
如果你得了 9 或 10 分,恭喜你!你拥有征服算法交易所需的大部分技能和特质。
-
如果你得了 6-8 分,你接近于具备算法交易的准备,但还没有完全到位。花些时间,努力改进你不足的领域。
-
如果你得分为 5 分或更少,退一步重新评估你的情况。算法交易真的适合你吗?这并不适合每个人,当然,现在发现你的个性与算法交易不匹配总比以后浪费大量时间和金钱要好。算法交易并不适合每个人,因此如果你的个性不支持它,我建议你考虑其他类型的交易。
好消息
好消息是,如果你对算法交易的可能性感到非常兴奋,经过一点努力,你可以将每个缺点转变为资产。例如,如果你没有一个固定的交易流程,就去创建一个,最重要的是,遵循它。如果你容易感到挫败,或者你是一个情绪化的火药桶,意识到这一点是改变的第一步。这需要一些时间,但在你考虑算法交易之前,先花一些时间来提升自己。一旦你在练习中得分达到 9 或 10 分,你就会准备好参与算法交易的众多优势。
第四章 - 算法交易的诸多优势
在这一点上,希望你对算法交易有一个不错的了解,以及它不是什么。但你可能还在想“我为什么要进行算法交易?”这一章将讨论零售算法交易者的许多优势。
优势 #1 - 没有可疑交易的骗子
几年前,我参加了一位所谓“交易大师”的网络研讨会。这个人——我甚至不愿称他为交易者,因为我非常怀疑他是否积极交易——是一位所谓的趋势线交易专家。
对于那些不熟悉这个术语的人,趋势线交易是一种在价格图表上绘制线条以捕捉主要趋势的方法。特别关注价格触及趋势线并反弹的时刻,以及价格触及趋势线后继续穿越的时刻。在第一种情况下,趋势线被“尊重”,在第二种情况下,趋势线被“拒绝”。两者据称都有意义。
现在不是讨论这种方法有效性的时间和地点——也许随机画出的线有时也会显示出意义——但重点是这是一个许多人使用的交易方法。大多数使用趋势线的人可能是自由裁量交易者,趋势线只是影响交易信号的因素之一(包括交易者判断)。他们有规则,但有时规则模糊——不适合算法交易。
无论如何,在网络研讨会的某个时刻,主持人展示了以下图表:
图 11- 趋势线“专家”交易
“只需看看这个例子,”嘉年华主持人兴奋地说道,“这展示了趋势线交易的伟大和完美!完美的入场,完美的出场,没有止损被击中的危险,利润丰厚。确实是一次伟大的交易!跟随我的教导,我会给你展示更多更多这样的交易。”
毫无疑问,从表面上看,这似乎是一笔伟大的交易。房间里大多数人都被这个交易欺骗了,可能花了数千美元来获取“趋势线秘密”。
但这位所谓的专家实际上是一个骗子。一个展示虚幻、假交易的骗子。我怎么能这么说?好吧,让我们更深入地看看这个“交易”。
首先,这笔交易——即使你可以称之为交易——纯粹是事后偏见的结果。这是由于查看完成的图表,然后回过头来选择一笔看起来很不错的交易。这样做很简单,一旦你做到这一点,就很难“抹去”。
看看进场点。几乎在上趋势线附近,基于此看起来是有效的。但是,那个上趋势线是怎么画出来的?在所谓的进场之前几根 K 线,一条正确的趋势线应该像红线,而不是蓝线。在进场发生之后,根本无法画出蓝色上趋势线。你怎么可能以这种方式交易?(答案是:你不能!)
图 12——事后偏差让趋势线看起来很棒!
这就是江湖骗子的第一个花招——使用事后偏差。
但这个假交易者的把戏并没有就此结束。假设一下,错误绘制的事后偏差趋势线是正确的,仔细看看进场。注意,价格在进场点根本没有触及趋势线。换句话说,虚幻的进场!价格必须离趋势线多近才算是进场?
图 13——“差不多”的进场。
所以,错误#2 是认为“差不多”的进场是有效的——使用经过计算机测试的算法时你不能这样做!
当然,由于大师在趋势线上的作弊,并且给出了虚幻的进场,有什么理由相信他做对了出场?看看……
图 14——错误的下趋势线改变了出场点!
毫不意外——大师错误地画出了下趋势线,这使得交易看起来是盈利的。但是当趋势线正确绘制时(如上图红线所示),盈利目标从未达到!
这就是江湖骗子的第三个花招——画出错误的趋势线以假装盈利的出场。
所以,江湖骗子的完美交易其实远非完美。糟糕的趋势线、糟糕的进场和糟糕的出场。换句话说,完全是个闹剧的交易。
这对算法交易为何重要?在算法交易中,规则是编程好的,可以进行准确的测试。没有虚假的交易,没有“差不多”的情境。算法策略中的规则是明确的,结果是不模糊的。性能报告的真实度可能非常残酷,而且它不会撒谎。
大多数交易教育的江湖骗子(数量众多)正因为这个原因而厌恶算法交易。当他们所谓的绝妙技巧被进行适当测试时,他们的方法通常会惨败。
优势#2——通过回测增加信心。
正如通过适当测试揭示江湖骗子的方法,历史回测可以极大地帮助你的策略。这是一个巨大的优势。在决定交易特定策略之前,考虑一下你拥有的选项:
-
交易一种别人告诉你“这个策略很棒”的策略。
-
交易一种你未测试但认为可能盈利的策略。
-
交易一个你测试过并发现历史上亏损的策略。
-
交易一个你测试过并确定历史上赚钱的策略。
这看起来可能是个简单的问题,甚至你可能觉得我问这个问题很荒谬。但在现实中,你会惊讶于有多少人选择前三个选项!让我们来看看:
- 交易一个别人告诉你“这个策略很好”的策略。
这是最常见的交易方式。一些大师会告诉你他或她的策略有多好,甚至可能展示一些假设的收益曲线来证明这一点。该策略可能来自书籍或杂志。或者,可能这个策略本身是保密的,提供的信号在一个聊天或交易房间中给出。
至于你可能在书籍或交易杂志中看到的策略,在你交易之前,请意识到显示的结果总是良好的。想一想——你会买一本揭示亏损交易策略的杂志吗?当然不会。所以杂志文章的作者会尽一切可能展示他们策略的盈利结果。不幸的是,这通常导致实时表现不佳,因为他们的策略是基于虚假的前提开发的。
这种选择的最终结果是,许多人依赖他人来完成繁琐的测试工作。那么问题就变成了:“你愿意基于他人的话来冒险你的辛苦钱吗?”
- 交易一个你没有测试过但认为可能有利可图的策略。
这听起来很疯狂——交易一个你真的不知道是否有利可图的策略。例如,购买任何创下 52 周高点的股票,理论上认为它在上涨。这是一个合理的理论,但谁知道呢?难道不应该先测试一下吗?
- 交易一个你测试过并发现历史上亏损的策略。
在第三个选项中,我们逐渐接近一个好的选择。你采取一个策略,然后在历史数据上进行测试,以查看它是否有效。这很好。不幸的是,许多人首先看到无利可图的结果,其次则忽视这些结果。这听起来很疯狂,但很多人有一个“宠爱”的想法,他们坚信其有效性,无论历史回测如何。
- 交易一个你测试过并确定历史上赚钱的策略。
这个最终选项是唯一真正明智的选择,这也是你希望用算法实现的。你创建一个算法,在你的交易平台上编程(你也可以手动编程和测试,但那很费力),然后在历史数据上进行测试(回测)。如果它盈利,你考虑交易。如果没有盈利,你就简单地丢弃这个策略,创造另一个不同的策略。
这里的理论是,如果一个策略在过去有效,那么在未来更有可能有效。请注意,我说的是“更有可能”。这远不是对未来表现的保证。市场可能会发生变化,或者你在历史测试中犯了错误,导致该策略的未来表现可能很糟糕。
但在所有条件相同的情况下,你不觉得至少拥有一个经过验证且在过去表现良好的策略,相比其他选项更好么?这就是算法交易的一个主要优势——测试能力。知道一个策略经过良好的测试并产生盈利结果,这在你开始实时交易时会给你很多信心。以上选项 A-C 都无法提供这种保证。
优势#3——分散投资
在交易中没有“圣杯”。没有任何策略或算法能够永远有效,一直稳定盈利而几乎没有回撤。大多数专业交易者都知道这一点。
但在我超过 25 年的交易经验中,分散投资接近“圣杯”,至少比我见过的任何其他方法都要接近。
为什么在算法交易中分散投资是一种优势?答案是交易量。通过算法交易,一旦你建立了一个稳固的开发流程——一个能够产生盈利交易策略的流程——你就可以不断创建更多策略,从而形成一个大型策略库。
在执行这一点时有两个关键,二者相关。首先,你将通过市场进行分散。以期货为例,美国大约有 40 个不同的市场可供选择。这些市场大致被分为 6 个不同的行业:
股票市场指数
农产品和软商品
货币
贵金属
利率
能源
通过在多个市场创建多种策略,你可以形成一个多元化的投资组合。例如,某一周货币策略可能表现不佳,但可能会被金属或能源的良好表现所抵消。
第二个关键是为不同市场的不同状态和行为创建不同类型的算法。你将创建跟随趋势的算法,也会创建反趋势(均值回归)策略。这些策略往往随着时间的推移相互平衡。
要在不同市场和不同交易风格下成功使用多种算法,一个首要的要求是:策略结果之间的相关性应低。拥有一个黄金算法与原油策略在完全相同的时间段内波动,几乎没有任何好处。如此高的相关性会增加而非减少你的投资组合风险。
多样化之所以有效,是因为不相关的算法在不同时间会出现回撤和困难时期。也许某个欧元策略正在回撤,但同时一个大豆策略正在创下新高。下图显示,随着越来越多的算法策略的增加,累计权益曲线变得更陡,权益曲线也更加平滑。
图 15 - 多个不相关策略的收益叠加,但回撤不叠加
借助交易软件,使用算法进行多样化相对容易。由于可以自动化,交易软件可以根据每个策略的规则监控 10、20 甚至 100 个交易策略的进出。这可以成为一个主要优势。
优势 #4 - 无计算机视觉综合症
如果你待在这个领域一段时间,我相信你听说过“屏幕僵尸”——那些在股市交易时间紧盯电脑屏幕的交易者,或者整晚盯着日本或欧洲市场的交易者。这些人不会错过任何出现的价格模式,甚至放弃吃饭和上厕所的时间。
图 16 - 这是你想要的交易方式吗?
这听起来对我来说没什么乐趣。但我想,如果对他们有效的话……
算法交易完全不同。当然,你仍然会花时间在电脑前,测试新想法、监控头寸等。但是算法交易并不需要不断地查看交易屏幕。实际上,考虑到人类本能会干扰算法,在进行算法交易时盯着屏幕甚至是不受欢迎的。
算法交易带来的远离电脑屏幕的自由是一个主要优势。
优势 #5 - 完全控制
当你创建并交易算法时,你处于控制之中。你决定以下所有内容:
交易哪些市场
交易什么类型的算法
每个算法的具体性能特点(利润、回撤、期望值等)
如何以及何时开启和关闭算法
每个算法在投资组合中的头寸大小
你将何时进行交易,何时不进行(周末、隔夜)
上述清单甚至还不完整,但你大概明白了。你可以选择和决定你交易的特点以及交易方式。再也不需要依赖他人的黑箱策略、信号等。
这种控制感在不可避免的下行期变得重要。为什么?考虑两个交易者:
-
交易者 A 交易一个黑箱策略。他对其中的内容一无所知。对他来说,这可能包括随机猜测。有时,他看到这个策略做出他不同意的交易。它开始出现回撤。
-
交易员 B 交易他创建的算法。他知道这个策略是如何形成的,知道它何时可能会交易,也知道它恢复所需的时间。它也开始进入回撤状态。
大多数交易者在有选择时,无疑会更愿意成为交易员 B。你对算法及其开发过程了解得越多,就越能感到安心,因为你对算法构建的信心更足。对一个大多数重要特性都是秘密的算法,保持信心是困难的。
当然,这种自由可能会让人不知所措,特别是对于刚接触算法交易的交易者。但所有这些特性不必一开始就处理。以一两个算法开始交易,每个算法一个合约(或在股票情况下的小股份),是“试水”算法交易的绝佳方式,而不会感到压倒。然后,随着时间推移,利润(希望)累积,交易者可以开始探索与组合交易相关的高级主题。
因此,控制你的交易是算法交易的一个主要优势。
优势 #6 – 始终准备好并愿意工作
想象一下,你是一家快餐连锁店的老板。要想成功,你需要员工。你的部分员工很出色,你很幸运能有他们为你的企业工作。
但其他员工主要造成问题。他们上班迟到,偷你的东西,侮辱你的顾客。有时你会想“我真的需要这么多麻烦吗?”
人为因素可能是你业务成功的一个重要因素。但在交易算法中则不是这样。
你的算法就是你的工人。它们按照指示行事。它们不会请病假。它们可以全天候工作,周六工作——市场开放时随时可用。它们始终准备就绪。它们在波动市场中不会感到恐惧。它们不会因为市场平淡而感到无聊而错过交易。
当然,一些算法会“偷”走你的钱,导致你亏损,但大多数情况下,这些算法是可靠的忠诚员工。你的工作就是选择正确的算法!
阅读完这些主要优势后,希望你能明白为什么算法吸引了如此多的交易者。事实上,你可能已经准备好现在就开始交易算法。但别急,先读下一章。
第五章 – 算法交易的缺点和误解
在阅读了上一章后,算法交易的世界可能看起来像是一个理想国,与您当前的交易方式相比。不幸的是,事实并非如此。算法交易像任何类型的交易一样,极其困难且充满陷阱。在你开始算法交易生涯之前,了解一些主要缺点是重要的。这些缺点可能会改变你想要进行算法交易的想法。
缺点#1 – 情绪仍然是交易的一部分
我仍然清晰地记得我的第一次“算法”交易,就是我在介绍中提到的那一次。那时没人称之为算法交易,但那就是它。我有规则,我遵循规则,我本该像机器人一样没有情感。
然而,我却害怕得要命!
我每 15 分钟就打电话给经纪人,问“我能知道六月生猪的最后价格吗?”然后根据最新的数字计算我的未平仓利润或亏损。在接下来的 15 分钟里,我要么因为赚钱而欣喜若狂,要么因为亏钱而沮丧。经纪人开始对我不断的电话感到厌烦。那时没有在线查询价格的方式,如果你还记得那段旧时光的话。如果有在线报价,我肯定会每分钟刷新那个报价页面。
那么我为什么害怕得要命,像个疯子一样呢?毕竟,许多人说当你遵循规则交易时,就不会有情绪干扰。我本该是一个冷静、沉着、冷酷的机器人。
可我并不是——我是一团令人恶心的紧张情绪!
事实是,无论何时你在用钱交易,情感都会介入。资本的快速盈亏才是带来情绪的原因,而不是交易风格。算法交易、主观交易、随机猜测交易——只要涉及钱,哪种方式都是情绪化的。
那么,为什么那么多“专家”推荐算法交易,声称它没有情绪呢?我相信这都是这些骗子的销售把戏。那些江湖骗子知道情绪会毁掉很多交易者,而交易者正想避免情绪,因此他们声称算法交易解决了情绪问题。
但事实并非如此。正如我所说,情绪是由于涉及的钱,而不是交易的类型。我个人猜测,声称算法交易没有情绪的人,要么是 1)仅在模拟器上交易,或者 2)根本不以任何形式进行交易。他们显然并没有用真钱交易。
不过,算法交易所经历的情绪与自主交易的情绪有所不同。消除了是否该进出交易的恐慌感,但取而代之的是是否该开启或关闭算法的恐慌感。基本上,自主交易中导致情绪的每一个事件,在算法交易中可能都有类似但不同的情绪。
所以,在算法交易中第一个误解——没有情绪——也是第一个劣势。用真钱交易涉及情绪。你必须学会接受这一点。
劣势 #2 – 计算机编程
如果编程的想法让你感到害怕,也许算法交易就不适合你。虽然有可视化编程工具可以协助,但要成为一个好的算法交易者,你需要能够编程你的交易规则。确实,你可以雇人来帮你,但由于大多数算法在测试中失败,支付给某人的费用会很快变得昂贵。编程数千个算法是一项庞大的任务。
所以,如果你决定进行算法交易,现在就要说服自己,你会学会编程。一旦你开始这样做,知道如何编程将使这从劣势转变为优势。
劣势 #3 – 过去并不代表未来
如果你见过关于交易教育、交易系统、经纪商等的广告,你无疑看到过美国政府要求的免责声明:“过去的表现并不一定能预测未来的结果。”
这是对所有交易者的一个重要警告。这意味着,无论历史测试显示什么,都不意味着未来的表现会持续。事实上,很多时候正好相反,情况会回归到均值。
这对算法交易者提出了一个难题,他们几乎总是在进行实时交易之前对他们的方法进行历史回测。如果过去的表现与未来的表现没有相关性,为什么还要回测呢?
显然,回测算法会面临棘手的局面。交易者希望得到算法在历史上有效的保证,但同时又必须意识到,从第一天的实时交易开始,一切都有可能崩溃。
事实证明,诀窍是拥有一种在历史测试和实时测试中证明有效的开发方法。它并不像大多数交易平台让你相信的那样简单,仅仅是优化参数。这将在后面更详细地讨论。
因此,历史测试就像在熔岩坑上走钢丝。一旦出现失误,死亡就会降临。但如果做得正确,观众会惊叹地欢呼。我们的目标显然是后者的结果!
劣势 #4 – 调整是乐趣
当我第一次起草这本书时,一位女性校对员问我:“为什么调整是个劣势?调整是有趣的,我喜欢这样做,但我不明白这与交易有什么关系。”
嗯,这可能是对的,尽管我有点太老了,不适合跳扭腰舞(相信我!)。而且,这个词是调整(TWEAKING)。改变一个字母会带来很大差别!
调整是想要改变和改进事物的自然倾向。正如我之前所示,改进是交易的重要部分。但这并不是算法开发所期望的部分。调整真的会引发问题。
这里有一个例子:我有一个交易朋友,他已经开发和调整他的策略超过五年。每次他有一个亏损交易时,他都会仔细检查,并找到这个交易无效的原因。然后,他制定一个规则——一个调整——来消除这个交易。他的回测看起来更好,因为那个讨厌的交易再也不会出现,他很开心。
当然很开心,直到下一个调整需要进行。
因此,超过五年,他的策略被调整得过头。事实上,我敢打赌,他的算法中调整代码比原始策略代码多得多。不幸的是,他的实时结果从未改善。总有一个调整待完成。
调整你的代码很简单。但这样做是错误的,这对算法交易来说是一个大缺陷。
缺点 #5 – 我在这里是老板!
之前我写过拥有员工的生意。对于交易而言,唯一的员工通常是你自己。这可以是一个重大优势——没有员工需要溺爱或担心——但也可能是一个重大缺点。
如果你的算法策略表现不佳——通常是你的错。
如果你无法开发新策略——那只能怪你自己。
如果你在自动化你的算法时犯错,错误地进行期货合约展期,错过截止日期——这都要你负责。
无论决策是什么,或者行动是什么,好的坏的,你都是大老板,首席执行官,头号人物 (www.youtube.com/watch?v=0yC4gm_vN3s
)。
虽然这看起来对那些陷在不喜欢的工作和讨厌的老板下的人来说是终极自由,但事实是,这也可能是一个重大缺点。
在算法交易中,当事情崩溃时——而且确实会崩溃,至少在某种程度上和某种程度上——除了你自己,没有人可以怪。许多交易者无法承受这种压力和责任。
当老板可以很棒,特别是在算法交易中。但请记住,这也可能是一个大缺点。
缺点 #6 – 做事的错误方式
正确进行算法交易时,可以取得很好的效果。问题是错误地进行算法交易是极其简单的。而且,猜猜怎么着,错误的方式通常会导致亏损。
这是算法交易的一个主要劣势,因为有许多方法可能会错误地开发交易策略。事实上,这个清单长到我可能可以写一本关于如何不开发交易算法的书——也许有一天我会写!下面列出许多偏见,确实会严重干扰你的算法交易。
图 17- 这些偏见中的每一个都可能导致不当的算法开发
那么,面对这些算法开发的陷阱,交易者如何将这一劣势转变为优势呢?显然,如果大多数交易者在算法创建过程中犯错,那么正确开发的好处就变得更加明显。
这里有一些建议来抵消这个劣势。首先,仅使用可信赖的来源来获取交易建议。互联网充满了提供建议的人,但其中许多人甚至不进行交易!向你知道进行交易的人寻求建议。
第二,愿意从许多不同的交易者那里获取信息,并将其结合成对你感觉正确的东西。
第三,通过真实货币交易来证明。理论不错,想法更好,但最终唯一重要的是底线结果。你的算法开发方法是否产生利润?如果是,恭喜你!如果不是,你可能需要深入审查你的流程,并整合新概念或改进。
构建和交易算法是艰难的,并且没有一种“正确”的方法来做到这一点。此外,还有许多不正确的方法。这使得算法交易面临劣势。
劣势 #7 – 算法交易不是“设定后就忘”
你可能还记得几年前在深夜电视广告中出售的一种便携式烹饪器具。它的口号是“设定后就忘”。它的使用非常简单,你只需放入食物,按几个按钮,几个小时后就能享受到美味的家常饭。
图 18- 绝对不是算法交易的方法!
许多交易者认为同样的口号适用于算法交易,特别是在自动化系统时。他们错了!
Tradestation 的技术支持人员(一个领先的交易软件平台,也是我主要的交易软件)有不同的口号:“自动交易并不意味着无人值守的交易。”
每当你有一个自动化算法时,可能出现的错误有一百万种。互联网连接可能中断,与交易服务器的断开连接可能发生,交易所可能会经历间歇性的故障,价格数据的修正会出现(但坏数据在算法中处理之前就已经出现)——潜在问题的清单几乎是无穷无尽的。
将所有这些问题乘以你可能交易的几十种算法,潜在问题变得非常明显。
你不能随便启动一个算法,离开,然后一周后回来数你的利润。这并不是那样运作的。你不需要整天整夜盯着屏幕,确保你的算法正常运行,但至少每天要监控几次你的算法。你必须准备好在出现问题时采取行动。我保证你会发现,某些干预比你想象的要频繁得多。
这是算法交易的最终误解和缺陷——你必须时刻关注你的算法,保持警惕。绝对不要“设定后就忘”!
第六章 – 如何独立开始算法交易
既然你已经读到这里,我祝贺你。你对算法交易的了解已经超过了大约 90%的人。你已经了解了它是什么,是什么样子,以及哪种性格最适合它。
你也了解了这种交易风格的优缺点,希望劣势没有让你退缩。算法交易可以是一种有趣且有回报的体验,但并不容易。但正如我常说的,有时生活中最好的事情是最难做到的。如果算法交易容易,人人都会去做,那么就不会有经济激励了。
算法交易确实可以帮助你与“大佬”们竞争,但它并不自动创造“超级交易员”。没有简单的交易方式,算法交易也不例外。请放心,市场上有零售算法交易员在对抗对冲基金、商品交易顾问等。
此时,是时候抛开理论和文字,开始实际操作:真正开始算法交易的业务。本书接下来的三章将帮助你入门:
-
独立开始算法交易
-
选择一个交易平台
-
关于流行平台的信息
接下来,我将给你一个简单的算法示例,然后提供成功交易的技巧,最后介绍阅读本书后应采取的推荐步骤。当你把这些结合起来时,你就会处于一个很好的位置,认真地实施算法交易。
那么,让我们开始吧!
测试的最佳方式是什么?
去年,我在美国乔治亚州亚特兰大遇到了一位交易员。根据我们的讨论,我知道他是一位知识渊博的交易员。当然,我无法确切知道他是否盈利(谁能百分之百确定呢,除非你看到经过验证的交易记录?),但他似乎是。无论如何,我想和他聊聊,就像我与许多交易员交流时一样。
我问这位交易员:“你如何进行历史回测?”他的回答让我震惊。“我不相信回测,”他说,“因为有很多作弊的方法。我觉得历史回测毫无用处。所以,我从来不做。”我感到难以置信。怎么可能有人在没有至少先测试策略的情况下交易,看看它是否产生盈利?
显然,这位交易员认为不需要进行历史测试,虽然我个人觉得这很疯狂,但每个人有自己的选择。我假设你想要对交易算法进行历史测试,这正是我使用的方式。你是如何做到的?
测试策略有四种主要方法。我将强调每种方法的优缺点,然后确定我认为对新算法交易员来说是最佳的长期解决方案。不过,我讨论的任何方法都可能效果良好。
进行手动测试
即使在这个数字化的电脑时代,许多人仍然害怕电脑。虽然对电脑知识的增加通常会让它们不再那么令人生畏,但假设有些人就是不想用电脑测试他们的交易算法,他们该如何做呢?
答案让我想起我早期的交易经历,那时我在纸上写下收盘价,并用简单的手持计算器计算移动平均线。所以我知道这是可以做到的。
手动测试涉及交易者查看每个柱,手动计算,并手动记录交易,因为他或她正在测试的算法发出信号。如果这听起来像是一个缓慢而痛苦的过程,那我描述得非常到位。手动测试缓慢、繁琐,并且非常容易出错。
你还记得我们之前看到的那位趋势线交易者和他的“幽灵”交易吗?有人手动测试可能会把它算作一笔盈利交易。“差不多可以”常常被许多手动测试者采用,尤其是在涉及利润时。这就是人性——总是寻求交易的乐观结果。问题在于,这些乐观的回测交易通常在实时交易中并不会如愿以偿。
手动测试 – 优点。
-
交易者对他们的算法策略有了深入的了解。
-
交易者对结果感到自信,因为他是仔细创建这些结果的。
手动测试 – 缺点。
-
非常耗时。
-
易出错。
-
非常容易作弊,错过糟糕交易,接受“差不多可以”的交易。
-
在短暂的测试期后,很容易从一种策略跳到另一种策略,而不是以相同的标准测试每种策略(缺乏一致性)。
判决:不推荐,除非你只有一个策略需要测试——永远如此!
雇佣程序员/测试员。
我每周大概会收到一封来自有抱负的交易者的电子邮件。他们兴奋不已,想让我编程和测试他们的“圣杯”交易策略。不幸的是,他们缺乏自行完成的编程技能,但如果我能为他们免费编程和测试,他们愿意让我免费交易他们的创作。
我总是拒绝,因为我知道可能的结果。该策略可能无法良好回测,然后无休止的调整(记得它们有多糟吗?)和修改在试图挽救所谓的圣杯时被尝试。当这失败后,新策略被提出以进行编程,循环再次开始。
这就是为什么雇佣程序员或测试员通常是不好的原因。程序员很贵,如果你认真对待算法交易,你将有数十种,甚至数百种策略需要编程和测试。这项工作的账单将是相当可观的。
走这条路的好处是,如果你的策略复杂,而你的编程技能较弱,一个优秀的程序员可以比你更快、更高效地完成工作。而且,机会是,有经验的测试者会让结果看起来可信。
雇佣程序员/测试员 – 优点。
-
优质的工作。
-
可能比自己做得更快。
聘请程序员/测试员 – 缺点。
-
编程大量策略需要较大的预算。
-
你需要花时间向程序员和测试员提供详细的工作需求。
-
对于简单变更的工作范围,通常会导致成本大幅增加的倾向。
-
没有保证生产出的东西会有用。
-
大多数程序员和测试员不是交易者,因此最终产品可能看起来不错,但也可能无法交易。
结论:仅在你没有时间自己编程和测试,并且有足够资金聘请程序员时推荐。
创建自己的回测工具。
在早期的家用计算机时代,我买了一台笔记本电脑,白天用于工作,晚上进行交易系统评估。由于预算紧张,我无法负担 Omega Research(后更名为 Tradestation)的高级测试软件。因此,鉴于我在 Fortran 和 Visual Basic 方面有一定的编程知识,以及对电子表格(Microsoft Excel、Lotus 1-2-3 和 Borland Quattro Pro)的高级知识,我决定创建自己的回测程序。
随着时间的推移,我发现自己有一个相当不错的回测包。我不断添加功能,以加快测试速度,自动化测试,模拟真实条件等等。但随着软件的不断发展,我意识到自己并没有任何可以交易的成品算法!
这显然是个问题。在某个时刻,我的目标变成了开发一个优秀的回测程序,而不是开发一些交易算法。
如果你尝试开发自己的回测工具,这将是你遇到的陷阱。虽然它会根据你的需求进行定制,但你也会花费大量时间在软件本身上,而不是开发策略。即使是像 Python 或 R 这样的高级编程语言也是如此。这些软件语言中有许多开源模块可用,给你提供了很大的起步优势,但你仍然会花费很多时间在集成、测试和修改这些模块上。
对于一个更感兴趣于编写测试软件而不是开发算法的人来说,这是一条不错的路径。
开发自己的回测工具 – 优点。
-
你可以控制外观、感觉和功能。
-
你可以信任结果,因为你对编程代码非常熟悉(当然,前提是你正确编写了代码!)。
-
你可能能够测试许多零售平台难以处理的想法(差价交易、期权)。
开发自己的回测工具 – 缺点。
-
你需要具备编程专业知识。
-
你需要具备交易专业知识,以便你的测试引擎能够复制真实世界。
-
软件开发本身很容易,但不涉及交易,容易成为焦点。
-
消耗时间。
结论:推荐给希望拥有定制交易解决方案的硬核程序员。
使用零售交易软件。
最终的替代方案可能是大多数零售交易者的最佳选择。在今天的市场上,确实有数十种为零售交易者设计的交易软件包。显然,所有软件都有优缺点,但最好的软件允许那些编程知识不多的交易者成功开发自己的交易算法。
零售软件选项的好处在于,一旦你知道如何操作软件,并进行一些简单的策略编程,你的重点就可以放在开发算法上——这正是它应该关注的地方。
零售交易软件 – 优点
-
大多数平台都易于使用和学习
-
被其他交易者使用和调试,因此你可以信任结果
-
相对便宜,有些平台甚至是免费的
-
容易与使用相同软件的其他交易者分享策略
零售交易软件 – 缺点
-
很容易让大多数软件包给出错误的结果
-
选择这么多,很难挑选出“正确”的平台
-
如果软件公司倒闭,算法可能变得无用
结论:推荐给大多数零售交易者。可用的软件实在太强大和方便,不容忽视。
如果你在想,我的交易生涯开始于第一个选项,手动回测。真是太痛苦了!一旦我晚上在个人电脑上有了访问权限,超出我常规的工作时间,我就切换到了选项 3——构建自己的回测平台。我这样做了好几年,在编程平台方面比在构建算法方面取得了更多成功。
我有几个不错的算法——我曾这样认为——但在与一些更有经验的交易者交谈后,我意识到我的定制平台存在我没有正确考虑的问题(例如,一些滚动的复杂性)。我意识到我必须进行彻底的改变。
最终,我决定选择零售平台的路线,并购买了一份 Tradestation 的副本。一开始我对这个软件感到非常害怕和畏惧(例如,多年来我只信任“在市场上以市价买卖下一根柱”的订单),但最终我开始理解,并对策略开发感到舒适。你猜怎么着?我开始构建的算法策略变得好多了!
今天,我已经使用 Tradestation 超过 10 年了。如果没有一些不可预见的情况,我认为我会继续使用它多年。
第七章 - 选择交易软件平台
当我开始使用零售交易平台(Tradestation)时,实际上没有太多选择。而 Tradestation 无疑是最好的;它功能最全,回测最准确,支持服务出色,用户组活跃且乐于助人。
快进到今天,零售软件平台的格局略有不同。现在有数十个交易平台,大多数都相当不错。每个平台都有一些特定的“细分”领域,试图解决 Tradestation 传统上不太擅长的地方。当然,Tradestation 也在不断改进,并持续构建更好的平台。竞争正在提高所有平台的标准,这非常重要。
这对零售交易者来说非常好——竞争增加、功能更强大、成本更低——但可能会让人感到不知所措!哪个平台是最好的?哪个平台具备你所寻找的功能?哪个平台最容易构建?问题清单还在不断增加。
所以,我不会在这一章告诉你该使用哪个平台,但我会指出一些你在算法交易中所需的“必备”条件。在下一章中,我还会告诉你根据我在过去几年进行的交易者调查得出的最受欢迎的平台。你可能认为受欢迎程度是一个不好的标准,但我认为这很重要。你希望选择一个能存在多年的交易平台,因为将你的算法转移到一个停用的平台将是繁琐的。
最后,我将提供一些主要平台的联系方式,以便你可以开始自己调查。这是个人选择,你希望对所选择的软件感到舒适,因为你会花很多时间在你的软件选择上,构建算法!
图表功能
理论上,一个纯粹的算法交易者和开发者不需要任何类型的价格图表。毕竟,这有什么必要呢?算法规则才是关键,而不是图表上的视觉效果。尽管如此,拥有一个良好的图表平台确实是非常重要的。
在创意生成阶段,算法交易者通常想要看到他或她的创意——无论是指标、直方图、条形模式,还是其他——如何运作。软件中的良好图表模块将有助于实现这一点。
图 19 - 图表可以帮助你可视化算法的各个方面
正确使用图表的关键是不要根据你在图表中看到的内容做出任何判断或决策。你看到的可能只是图表上短短的一段时间,而这段时间可能会极具误导性。因此,基于视觉检查得出新的指标或图表模式是不好的,这真是一个糟糕的做法。
另一方面,使用图表来直观检查编码的正确性是非常好的做法。复杂的图表模式可能容易看出,但算法编程可能很困难,因此通过检查图表来验证代码可能非常有帮助。
我建议优秀的图表功能是任何交易平台必不可少的“必须拥有”。
经纪人整合
一些零售平台,如 Tradestation,直接与一家经纪公司相关联(在这种情况下是 Tradestation Brokerage)。其他平台,如 NinjaTrader,只有少量有限的经纪人选择。最后,一些平台(如 Multicharts)则有大量的经纪人可供选择。每种方法都有其优缺点。
因此,寻找交易平台可能也是在寻找合适的经纪人。就我个人而言,多年来我使用了许多经纪人,有两次我遇到过可靠的经纪人试图盗取我的钱(Refco,PFG)。这意味着你在选择经纪人时要谨慎,因为很多经纪人会倒闭。
在所有情况下,要有备份计划和备用经纪人,以备不时之需。
编程的便利性
大多数优秀的平台提供你创建自己的指标、策略等的能力——除了提供可更改和优化的标准指标。如果你无法创建自己的指标,我建议你寻找其他包,因为你一定会在某个时刻编程自己的创作。
假设你的软件允许自定义工作,主要有三种生成自定义代码的方法。第一种是采用现有代码,简单地修改以满足你的规格。一旦你了解编程语言的基础,这相对容易。我有一些交易朋友只做这件事——他们在职业生涯中从未编程过原创策略,但他们从其他人那里获取了成千上万的策略,并修改代码以适应自己的需求。
产生自定义算法代码的第二种方法是从头开始。这需要更多的工作,但一旦你掌握了编程,操作起来相对简单。
一些平台提供的最后一种编程代码方式是可视化拖放代码创建方法。你基本上是移动指标、模式、if...then 逻辑、止损等的块,并连接这些块。一旦完成,软件就会将你的可视化表示转化为代码。这是一种绕过逐行编程策略的方法,但即便如此,仍需要花费不少时间学习以跟上进度。
由你来决定哪种方法最吸引你。当然,为了让你的决定更加困难,每种编程语言都有自己的风格和格式。有些是基于“专业”的重型编程语言,如 C#,而有些则是基于“老式”语言,如 Basic。因此,编程一个简单策略可能非常简单,也可能非常复杂,具体取决于使用的语言。
研究不同平台并了解不同编程语言的一种方式是拿到最新一期的《股票与商品技术分析》杂志。几乎每个月,编辑们都会挑选一篇文章(带有新指标、算法策略等),并请主要软件平台的专家用他们的语言创建代码。这可以在杂志后面的“交易者提示”部分找到。
图 20 - 《股票与商品技术分析》杂志“交易者提示”部分 - 比较各种编程语言的好方法
在最近一期中,11 个不同的交易平台提供了由受人尊敬的开发者约翰·埃勒斯制作的新 RSI 指标的代码。通过查看每个独特的代码,新手算法交易者可以了解每种编程语言的结构和复杂性。这可能会帮助你决定追求哪种语言。
举个例子,这就是 Tradestation 的 Easy Language 是多么简单。假设我想在今天的收盘价是过去两周(10 根 K 线)的最高收盘价时买入下一根 K 线。在 Easy Language 中,这变成了:
如果 close=highest(close,10)那么以市价在下一根 K 线买入;
不是所有语言都这么简单!
无论你选择什么编程方法和编程语言,在某个时刻你都会想选择一种方法和一个平台,并在这个平台上熟练开发算法。
在本节讨论的所有主题中,我认为这是最重要的。拥有一种你可以轻松学习并感到舒适的编程语言是件大事。花很多时间提前调查什么对你最好,这将会在将来带来回报。
与市场数据整合
目前大多数顶级交易平台与市场数据的整合都很好。大多数需要你与第三方数据提供商订阅,虽然像 Tradestation 这样的平台则有自己的数据。
有两个重要点需要注意。首先,确保你的数据是自动传送的,并包含日内数据。没有什么比每晚都要安排数据下载更糟糕的了。过去在拨号调制解调器的时代,这曾是常态,但在今天这个瞬时的世界中,你应该能立即访问数据。
另一个重要点是确保你信任数据源和平台。并非所有数据提供商都向所有平台提供数据,所以如果你心中有一个首选数据供应商,你的选择可能会受到一定限制。
市场数据的整合并不是一个主要点,但如果你忽视它,可能会让你跌倒。
标准指标和研究
在一个新平台上开始时,你最不想做的就是重新创建标准的技术研究,比如移动平均线、RSI、ADX、随机指标等。你只想在代码中引用它们,而不是先编程实现它们。
在选择平台之前,确保它已经编程了大量的指标和功能。大多数平台都有,但最好先检查一下。
编程能力
之前我讨论了编程的简易性,我认为这是关键。但很多时候,编程可能很简单,因为语言本身的范围有限。一些简单的语言无法完成你可能需要的一些复杂任务。
Tradestation 就是一个很好的例子。它使用一种称为 Easy Language 的语言,确实很简单。但由于它是在几十年前开发的,主要用于回测,因此在今天的计算机交易世界中,这种语言存在某些局限性。因此,Tradestation 现在包含了一种额外的语言,即面向对象的 Easy Language(OOEL),以提供大量额外功能。当然,OOEL 因此是一种更复杂的语言(仅供参考:我在我的算法工作中甚至不使用 OOEL)。
MultiCharts 平台与 Tradestation 做了同样的事情,在该平台的.NET 版本中添加了一种新语言。
如果你有一个复杂的算法想法,但不确定是否能编程实现,我建议你与每个供应商的专家或软件用户组的成员交谈,以查看你所需的功能是否可以在软件中编码。
优化
如果你的代码中有任何参数或数字,例如移动平均中的条数,或相对强弱指数(RSI)计算中的买入阈值,最终你很可能会想要优化那个数字。虽然过度优化绝对是个坏事,但至少你会希望软件具备优化的能力。
我认为这是必须具备的,大多数平台都提供这一点。
向前分析
在我的算法开发工作中,我使用一种称为向前测试的技术来创建“样本外”结果。这些结果往往比传统的“直接插入和计算”回测优化更好地模拟实时交易。
向前测试是一个高级主题,新算法交易员可能不会立刻需要。但这对于交易软件来说是一个很好的功能。否则,你可能需要购买第三方工具来进行分析,或者(哎呀!)手动进行分析。多年来我在老式方法中手动进行此操作,我可以肯定地说,手动向前测试不是一个好的长期解决方案!
交易者社区
拥有一个活跃且庞大的交易社区对于你选择的任何软件平台至关重要。大多数软件供应商的技术支持人员工作负担沉重,人员不足,最重要的是,通常他们并不是交易员。因此,当你有问题时,很多时候你会和一个知识水平低于你的人交谈!
如果社区强大,将会有很多常规用户愿意并能够帮助你解决问题。例如,我在 Tradestation 用户论坛上自愿贡献一些时间,在过去 14 年中平均每周发布 5 个帖子(总共超过 3500 个帖子!)。还有许多其他人比我帮助得还要多。
拥有庞大用户社区的另一个好处是,你可以借用很多可用的代码。我从互联网上找到的免费代码中得到了许多最佳创意和算法。对于一个受欢迎的平台,你想要编写的代码很可能已经为你完成,你只需要进行一些修改以满足你的需求。
一个活跃的社区绝对是个加分项,应当是你搜索标准中非常重要的一部分。
实时交易与自动化
一旦你创建并测试了你的算法,最后想要做的事情就是将其转换或迁移到不同的平台上,以便进行实时交易或自动化。不幸的是,这在一些交易软件中仍然是个问题。这些软件没有完全整合测试和实际交易的部分。
你想要一个能做到所有事情的软件包:开发、测试和自动化交易。如果你满足于低于这个标准,最终你会发现自己做了很多额外的工作。
选择平台 – 结论
希望在这一章中,我给你提供了一些思考方向,以帮助你选择平台。显然还有其他重要因素需要考虑(成本、在你国家的可用性),虽然我没有提到,但我尝试强调了一些主要关注领域。
没有“统一适用”的解决方案,虽然有很多平台可供选择是好事,但也可能令人不知所措。不要因此而气馁。做一些研究,选择你认为最合适的选项,然后大胆尝试。你越早行动,就能越早开始创建交易算法!
第八章 - 流行交易平台
在 2017-8 年,我询问我的博客读者,他们最喜欢哪个交易平台。以下是最新结果:
图 21 - 全球调查,交易平台
虽然这次调查的结果很有启发性,但我应该指出,这并不是一项严格的科学调查。结果可能略微偏向前四名——Tradestation、Ninja Trader、MultiCharts 和 MetaTrader,因为这些是我使用或曾使用的主要平台。许多调查参与者都熟悉我的工作,因此他们可能使用与我相同的软件。
无论如何,这里是调查参与者选择的前 7 个选项的更多信息:
Tradestation – www.tradestation.com
概述,来自 en.wikipedia.org/wiki/TradeStation
“TradeStation Group, Inc.是在线证券和期货经纪公司及交易技术公司的母公司。总部位于佛罗里达州普兰塔申,并在纽约、芝加哥、德克萨斯州理查德森、伦敦、悉尼和哥斯达黎加设有办事处。TradeStation 以其为活跃交易者和某些机构交易者市场提供的分析软件和电子交易平台而闻名,这使客户能够设计、测试、优化、监控和自动化他们自己的自定义股票、期权和期货交易策略。TradeStation Group 在 1997 年至 2011 年期间在纳斯达克全球市场上市,直到被东京证券交易所上市的 Monex Group 收购,后者是日本领先在线证券经纪公司的母公司。”
概述,来自 www.tradestation.com
“Tradestation 桌面
系好安全带,准备迎接屡获殊荣的*交易体验。
就像一辆调校精良的赛车,TradeStation 的桌面平台提供了活跃交易者所需的所有动力、速度和灵活性:动态市场扫描工具、完全可定制的图表、快速可靠的交易执行、先进的订单管理和完全自动化的策略交易。
这就是你在市场上自信应对所需的所有专业级火力。
TradeStation Analytics
利用 TradeStation 平台的图表和分析功能,通过 TradeStation Analytics 为你服务,无需开设经纪账户。这个由我们合作伙伴 TradeStation Technologies, Inc.提供的高级套餐,包括其屡获殊荣的桌面分析平台和一些高级分析工具,如 RadarScreen®实时市场监测和排名工具、OptionStation Pro 期权分析平台以及 Portfolio Maestro 投资组合级策略回测工具。你还将获得实时市场数据和 TradeStation Technologies 庞大的历史市场数据库访问权限,以及移动和网页交易应用程序。
完整披露:我使用 Tradestation 作为我的主要算法开发和自动交易工具。它并不完美,我有时会遇到问题,但最终,我对它的功能和表现非常满意。
图 22- Tradestation 图表截图
NinjaTrader – www.ninjatrader.com
概述,来自 www.ninjatrader.com
“标准功能
高级图表、交易模拟、策略回测、实时扫描器、市场回放、自定义 C# NinjaScript 开发。
数据、附加组件与教育
免费的股票、期货和外汇的 EOD 历史数据,市场数据馈送的选择包括 Kinetick,成千上万的第三方附加组件,免费的产品培训网络研讨会,丰富媒体的帮助指南,数百个教育视频。
完整披露:我拥有 NinjaTrader 的多经纪商终身许可证。过去我曾用它进行一些策略编程,但目前我用它帮助在各个经纪商处下自动交易订单。我一直对他们的技术支持非常满意。
图 23- NinjaTrader 代码窗口
MultiCharts – www.multicharts.com
概述,来自 www.multicharts.com
“MultiCharts 是一个屡获殊荣的交易平台。无论您需要日内交易软件还是长期投资,MultiCharts 都拥有可帮助您实现交易目标的功能。高清图表、内置指标和策略、图表和 DOM 的一键交易、高精度回测、暴力和遗传优化、自动执行以及对 EasyLanguage 脚本的支持,都是您手中的关键工具。”
完整披露:我不拥有 MultiCharts,但我使用过并测试过它。它类似于 Tradestation,大多数 Tradestation 的 Easy Language 代码可以轻松转换为 MultiCharts 的 Power Language。如果 Tradestation 出现什么问题,我的备份计划是将所有的算法策略转移到 MultiCharts。
MetaTrader4/5 – www.metatrader4.com
概述,来自 www.metatrader4.com
“MetaTrader 4 是一个用于交易外汇、分析金融市场和使用专家顾问的平台。移动交易、交易信号和市场是增强您外汇交易体验的 MetaTrader 4 的重要组成部分。
MetaTrader 4 适用于 Windows、Mac OS X 和 Linux 系统的个人电脑,以及 iOS 和 Android 移动设备。
数百万交易者出于多种需求选择 MetaTrader 4 进行市场交易。该平台为所有技能水平的交易者提供了丰富的机会:先进的技术分析、灵活的交易系统、算法交易和专家顾问,以及移动交易应用。
信号和市场附加服务拓展了 MetaTrader 4 的边界。信号服务允许你复制其他交易者的交易,而市场则提供了各种你可以购买的专家顾问和技术指标。
完整披露:我有 MetaTrader 4,并用它自动交易一些外汇工具。不过,我只进行过少量编程。
Think Or Swim – www.thinkorswim.com
完整披露:这是 TD Ameritrade 经纪公司的内部平台。我从未使用过它。
Amibroker – www.amibroker.com
完整披露:我从未使用过这个平台,但我见过它的代码,似乎相当简单明了。它还具有许多其他平台所没有的一些不错功能。著名交易书籍作者霍华德·班迪使用 Amibroker,连同 Python(如下)。
Python、R 和 Matlab – www.python.org www.r-project.org www.mathworks.com
完整披露:我在非交易活动中稍微使用过这些编程包。所有这些都非常灵活,越来越多的交易者/程序员开始使用它们。我认为它们更像是可以进行交易的编程平台,而非纯粹的交易平台。如果你想要定制的交易解决方案,这些语言可能是最佳选择。
第九章 - 交易平台 - 下一步
一旦你选择了交易平台,就该开始工作了!在你可以开始创建和交易算法之前,还有一些特定的平台任务需要掌握。以下是我推荐的顺序。
了解你平台的“帮助”来源
刚开始使用新的交易平台,无论是哪一个,都会是一项令人生畏的任务。你需要帮助。幸运的是,如果你选择了前一章中详细介绍的顶级平台,你会在各个地方找到帮助。
第一个帮助来源应该是软件供应商本身。他们有经过培训的人可以回答大多数问题,特别是对于初学者。然而,随着知识的增长,你会意识到其他用户有时是更好的信息来源。不过,在开始时,供应商或他们的在线帮助文件和视频应该是首选。
记住与供应商帮助的一个重要事项——如果是特定交易的问题(如未成交的订单、错误的成交等),你应该首先拨打经纪商的交易台。他们总是你账户具体交易详情的最佳信息来源。他们可能会把你转给技术支持,但当我遇到问题且不确定自己当前状态时,我首先会拨打交易台。
有时候供应商无法回答你的问题,或者无法花时间与你解决问题。幸运的是,还有第三方技术支持来源。例如,YouTube 上有大量关于 Tradestation 的有用视频。这些外部来源提供免费的信息,以及付费服务。
我认为真正的专家是那些也是交易者的软件用户。确保你知道如何联系这些人。通常,他们可以在像 futures.io 或 elitetrader.com 这样的交易论坛找到。此外,每个软件供应商都有用户论坛,最佳答案可能来自有经验的用户和交易者。我相当频繁地使用 Tradestation 的用户论坛,至今仍会提问,尽管我已经使用这个软件 14 年了。学习是无止境的!
了解你平台的基础知识
不要在启动新交易软件的第一天就试图创建算法交易策略。花一些时间,学习基础知识,了解事物是如何设置和工作的。
对待软件要像个孩子。你有没有看过孩子如何与新软件互动?我和我的三个孩子一起看过,我可以说,他们绝对无所畏惧。他们会随意点击任何东西,知道通常可以关闭软件并重新启动。
做个孩子——和你新玩具一起玩吧!拉起图表,添加一些指标,应用一些现成策略到图表上,看看结果报告。探索和玩耍——你会更快地学习。
学习编程基础
由于大部分算法开发最终将包括构建策略,所以要学习如何做到这一点!首先学习编程语言的基本结构——if…then 语句、买卖订单语法等。
每个平台供应商可能都有免费的手册、参考指南、视频等。大多数还提供付费服务,比如入门编程“训练营”。此外,还有很多第三方公司提供免费的和付费的编程技巧。
但即使有一本全面的编程手册在手,实际上编程和自己练习是没有什么可以替代的。
查看软件中提供的任何策略。弄清楚每一行的作用以及它是如何编写的。复制该策略,然后修改副本。最初做小的改变,然后逐步尝试更复杂的更改。
最终,你会感到足够自信,从零开始构建自己的策略。这可能需要几天、几周甚至几个月,但这正是你希望达到的地方——能够轻松修改现有策略,创造自己的新策略。
学习策略开发和评估的基础知识
你的软件不会帮助你处理的一个主要话题是如何正确地开发策略。它并不像把策略应用到图表上,运行大量优化,然后实时交易最佳的整体优化结果那么简单。事实上,这正是错误的做法,即使软件让这看起来非常简单。
正确的策略开发和评估是一个重要话题,关于适当策略开发有很多优秀的书籍。在我看来,Pardo、Tomasini 和 Davey 的书是学习正确策略开发过程的最佳书籍。我建议你获取几本或所有这些书籍,并将它们的经验融入到你策略的开发中。
整合一切——从图表开始,以策略结束
按照下一章中的步骤,我会创建一个简单的策略。虽然我以 Tradestation 作为例子,但你应该能够在你的平台上复制每一个步骤。一旦你可以轻松完成所有这些步骤,你就处于一个良好的位置,可以开始创建自己的交易算法。
学习如何“欺骗”你的平台
学习软件的最后一项任务是学习如何“欺骗”它。几乎每个交易平台都可以被“游戏化”。也就是说,有一些编码技巧和软件设置可以产生惊人的收益曲线。下面是一个例子。我在 1 分钟内创建了这个策略。看起来交易完美,不是吗?不过,有一个小问题——它是假的,结果是基于利用交易软件回测引擎的。
图 24- 你能用你的软件创建这样的假算法吗?
一旦你知道几种创造假冒但完美的权益曲线的方法,我可以说你对自己的软件了解得足够深刻。此时,你就知道自己正在成为专家的路上!
第十章 - 开始吧 - 一个简单的示例算法
在本章中,我将演示一个简单的算法交易示例。请注意,我在这里的重点是使用交易软件——无论你使用什么平台,你必须能够完成这些基本任务。
这个例子并不是开发稳健算法的正确或唯一步骤。这超出了这本简短书籍的范围。但这个例子至少可以帮助你开始理解书中阐述的概念。
将本章视为互动指南。对于我采取的每一步,尽量用你的交易软件复制它。只有在掌握第一步后,才能进行下一步。
注意:这个策略如所示,并不是一个可交易策略——它在样本外的表现较弱。它只是一个示例。所展示的步骤并不代表我为自己交易使用的策略开发过程(我注册商标的 Strategy Factory®过程)。关键在于,如果你觉得自己能够执行本章中详细说明的每一步,那么你就已经从初学者算法水平毕业,现在可以成为一名严肃的算法策略开发者。
调出图表
让我们从一个简单的任务开始。打开 2007 年至今的大豆日线连续图,起始日期为 2007 年 1 月 1 日,结束日期为 2016 年 12 月 31 日。
图 25 - 你能在你的平台上创建这样的图表吗?
获取一个交易想法
一个简单的交易想法通常是最好的。在这个例子中,我将创建一个基本的突破系统。这个想法是,较高的价格只能通过超过以前的高价来实现——非常简单!
在每根 K 线的收盘时,如果最高价是过去“xbars”的最高收盘价,并且 15 根 K 线的 ADX(趋势性技术指标)超过 20,则做多。对于做空交易,则执行相反操作。我还会包括一个简单的止损,没有利润目标(让获利交易继续进行!)。这种系统适合趋势,但在非趋势市场中可能会经历很多震荡。
编程它
在你自己的平台上编程这个简单策略。Tradestation Easy Language 的代码如下。包括$5 的来回交易佣金和$25 的滑点(非常重要!)。
图 26 - 在你的平台上编写这个策略
应用到图表上
现在,使用你的软件将该策略附加/应用到之前构建的图表上。
图 27 - 你能在你的图表上看到交易吗?
适度优化
优化是一个脏字,但适度使用时可以很有用。尝试优化变量“xbar”。使用最小值 5(短期)到 30(中期),以 5 为步长。同时,优化止损,从 500 到 1500,以 500 美元为步长。
图 28- 优化结果
查看结果
看一下优化结果。有 18 次迭代(运行),所有都盈利。这通常是个好兆头。问题是,选择哪个参数集?最高净利润?账户平均回报?最低胜率?在交易论坛中问这个问题,准备接受一系列的回答和尖锐的观点。事实上,没有“完美”的标准可用——这取决于个人偏好和经验。
可选的参数几乎是无穷无尽的,这也是我在开发时遵循一套标准的原因,其中包括前向测试。
目前,我们假设选择一个“中位”净利润——既不是最好也不是最差。也就是第 9 次迭代,xbar=30,止损=500。
进行样本外测试
一旦选择了参数,就该在 2017 年和 2018 年运行策略。为此,我们只需更改图表结束日期,然后查看更新的性能报告(未显示)。结果虽然不差(如果 2017-2018 年的结果真的很差,说明我们过度优化或曲线拟合过多),但交易的质量并不够好。在此时,策略可能应该放弃,因为如果我们一次又一次地测试,样本外结果就不再是真正的样本外了。
图 29- 示例策略,样本外结果
自动化
对于这个策略,基于样本外表现,我不会进行交易。但假设你想交易它。你会采取什么步骤来启用并自动化它?以下是 Tradestation 的逐步流程:
图 30- 自动化策略的步骤,Tradestation
第十一章 - 成功算法交易的建议
不幸的是,成功的算法交易远不止是学习一个交易平台和一门编程语言。在过去大约 25 年中从事期货市场的算法交易,这里是我一些关于如何成功的最佳建议。希望它们能像帮助我一样帮助你!
要有现实的期望值
没有什么比账户中只有$500 的人更糟,他认为可以通过算法交易赚取$50,000 年收入。也许百万分之一的人能做到,但我们其他人永远无法接近。太多人以美元符号为目标进入交易,最终大多数人都爆仓了。
在你开始交易之前,一定要确保你了解算法交易中潜在的回报,更重要的是,潜在的风险。
从足够的风险资本开始
你开始时的资本数量真的会影响你的成功率。资本少的交易者面临更高的破产风险,这是一个数学事实。如果你的交易账户中只有几千(或更少)美元,我建议你:
-
刚开始时用微型外汇(标准手的 1/100)进行交易。不要担心金钱,担心培养正确的交易习惯。
-
从外部来源获得更多的交易资本。例如,找一份兼职工作。尽量将你的风险资本提高到至少$10,000 或更多,以便给自己一个与专业人士竞争的机会。
学习正确的策略开发
大多数人错误地开发策略。他们过度优化,过度拟合,规则太多——错误的清单一长串。学习如何以正确、经过时间检验的科学方式开发策略。之前我提到过一些可以帮助你的人。
用大量历史数据进行测试
仅对过去三个月的市场数据进行历史回测是不够的。市场持续变化,你的算法策略需要能够在大多数或所有市场中生存。因此,你应该尽可能多地测试数据。我一般用大约 10 年的数据进行测试,在一些市场中,甚至超过 20 年。
用多年的历史数据进行测试使得找到一个策略变得更加困难。但这是正确的做法。你想找到一个长期的优势,而不是仅在过去三个月内有效的短期策略——这种“优势”可能仅仅是由于随机运气。
一定要考虑滑点和佣金
我对有多少人忽视佣金,尤其是滑点感到惊讶,当他们测试一个交易算法时。讽刺的是,大多数策略在不包括这两项摩擦成本时会显示盈利。一旦考虑到这些交易成本,大多数策略便无法盈利。
滑点的数量因市场而异,但一般来说,对于期货市场,每轮交易每份合约$25-50 是一个不错的经验法则。
在样本外或步进测试期进行测试
教育骗子喜欢用看起来很棒的股权曲线来吸引潜在客户。关键是,这些曲线大多基于优化的、样本内的数据。它们经过优化,因此当然看起来很好!
对于你创建的任何算法,请确保包含一个超出样本的验证。更好的是,使用我采用的方法,即前向测试。前向测试是一种更复杂的测试方法,但它提供了很多超出样本的结果供评估。这种测试比优化的回测更现实。
记住,简单通常是最好的。
我记得几年前,有个 Tradestation 用户在寻求新交易电脑的建议。他抱怨他的策略需要整个周末才能优化!他有大约 300 个变量需要优化,并希望能更快完成。我建议他,或许他需要的是一个更简单的策略进行测试,而不是一台新电脑。他无视并嘲笑了我的建议,随后很快就消失在交易社区。巧合吗?
事实是,更简单的策略在未见过的未来市场数据上往往表现更好。任何人都可以创造足够的规则来完美地适应历史,但这些策略几乎从未在未来奏效。
保持你的策略简单。它们在回测中可能看起来不那么好,但这真的就是目标吗?一些误入歧途的交易者认为是,而他们错了。
知道何时退出。
你在算法交易上会遇到困难,我们都经历过,并将继续面临。交易是困难的。因此,你必须知道何时改变你的方法、改变你的策略,或者干脆放弃交易。要为所有可能发生的坏事制定计划。然后,按照那个计划执行。希望你永远用不到它,但在这个领域,知道何时退出是必需的。
我听说过太多因亏损交易而导致破裂的婚姻、失去的退休账户和经济困难的悲惨故事。如果这些人能在情况变得太糟之前退出,很多事情可能是可以避免的。
第十二章 - 结论与下一步
这本简短的书涵盖了零售交易者算法交易的基本知识。交易是一个艰难的世界,但算法交易可能是你交易成功的良好途径。如果你遵循本书中详细说明的步骤,你实际上可能会变得和那些你竞争的专业交易者一样出色!但这需要艰苦的努力,似乎从未变得容易。记住这一点。
总之,让我们回顾一下你今后应采取的主要步骤。
决定算法交易是否适合你
希望这本书让你思考了很多,现在你知道算法交易是否适合你。如果这感觉不对,就不要强迫自己进行算法交易。良好的交易需要交易风格与交易者相匹配。
选择平台,学习软件
如果你认真对待算法的开发,选择一个交易平台,学习如何使用它编程,并开始开发简单的交易算法。学习这项技能的最好方法就是亲身实践。努力成为你软件包的“专业人士”。
学习构建策略的正确方法
在这本书中,我几次提到适当的策略开发是一个独立的主题。花些时间,做一些研究,寻找愿意分享其方法的算法交易专家。但要小心,大多数教育者都是骗子。索要学生推荐,寻找交易结果的独立验证等。保持怀疑态度——你的算法职业依赖于正确地做事。
你也可以学习我学习的方式:
-
创建一个算法
-
现场交易
-
当算法崩溃时赔钱
-
回去修改算法创建方法
-
在第一步再试一次。
想想,也许你不该像我那样做——那太昂贵了!
建立一些策略
你永远不会知道自己是否能进行算法交易,除非你建立一些策略。学习交易平台和编程很不错,但记住这并不是最终目标。很多人陷入了认为这就是终点的陷阱。最终目标始终是创建算法策略,然后进行交易。别忘了这一点!
用真实资金交易
我知道很多想当交易者的人似乎拥有丰富的交易知识,但实际的真实资金交易经验却很少。只要记住,最终你想要用真实资金进行交易。许多交易者对此感到害怕。不要陷入这个陷阱。
同时,在你的算法职业生涯初期不要过早交易,尤其是当你资金有限时。许多交易者陷入这个陷阱,在真正理解情况之前就损失了账户。始终记住你想成为一名专业交易者,并时刻以此为目标。
审查表现,进行更改
随着你在算法交易中的进步,你将开始熟悉一个交易流程,这个流程包括从策略开发到实际交易的一切。一个扎实的流程是重要的,尤其是在它通过市场利润证明自己之后。然而,同时要意识到,在这个过程中你可能需要更新你的方法,融入算法交易的新进展等。
最优秀的交易者,无论是 discretionary 交易者还是算法交易者,零售还是专业交易者,都意识到他们需要不断改善自己的交易,仔细监控他们的表现,并始终努力成为更好的交易者。
成功的算法交易是一段漫长的旅程,而且它肯定也是一段有利可图的旅程。但就像任何事业一样,成功需要技能、耐心和决心。不要忘记这一点。
由此,我要说再见。祝你在算法交易中一切顺利。随时可以给我留言,让我知道你近况如何。
感谢阅读,祝你好运,交易愉快!
附加材料
现在你已经完成了算法交易的介绍,我为你准备了一些不错的书籍读者奖励。
只需访问 www.AOKbooks.com 并注册我的新闻通讯。我保证不会发送垃圾邮件,作为回报,我将为你提供以下丰厚的奖励:
-
本书中讨论的所有代码,以及在 Tradestation 格式中的工作区
-
一种特殊的初学者交易策略,完全公开——非常适合你修改
-
免费网络研讨会和其他活动的邀请
-
我写的新书的提前通知
-
一些其他的算法交易好东西!
感谢!