股票量化软件:赫兹量化中如何订购EA交易,并取得预期的结果

文章讨论了交易者在验证交易策略和自动化过程中的常见问题,强调了彻底测试和理解策略的重要性。程序员不负责策略的盈利能力,交易者应避免幻想,对策略进行多角度检测。文章还提出了测试指标、避免自我欺骗的规则,并强调在自动化之前确定交易目标。
摘要由CSDN通过智能技术生成

1. 验证理念

验证理念客户受到挫折最常见的原因是策略的亏损当它涉及到一个完整的交易系统,而不是一个半自动的EA交易或指标,交易者对专家策略的期望只有一个 - 盈利的交易。赫兹量化交易软件

结果,他从程序员那里收到期待已久的信,然后启动了客户端,开始测试,但看到的是他的高明理念是如何导致存款的损失,他再次验证参数,更新历史数据...再次看到存款的损失。一些交易者立即怒气冲冲地着手写信给程序员(当然实质是他的错!),一些更有耐性者继续测试结果,并尝试弄清楚哪里出问题了。但这不能改变事实 - 他们所信奉的理念结果却是无法获利的。赫兹量化交易软件

接下来发生的,也有几种可能。有些责怪程序员是笨拙的,不支付酬金,开始寻找另一个程序员。其他人开始狂热地试图找出解决办法,要求“一些小的变化”(当然,无偿,因为他们是如此之小!)。公平而言,我应该看到,也有客户理所当然地接受自己的过失,不要把责任推给程序员。这一章不是为他们写的,因为他们有良好的自我批评意识。赫兹量化交易软件

验证结果如此,抵触它没有意义,发现和消除问题的根源才更有意义。问题是,交易者都懒得去深入检查他的理念或想法。要做到这一点,需要选择任意间隔的历史数据,并仔细地,日复一日地,观察策略将如何运作,会出现什么结果。这可以在测试的视觉模式中更容易和更快地完成(我可以确定视觉模式将很快在赫兹量化交易软件实现),但测试也可以实时完成 - 用模拟账户测试一到两个星期。赫兹量化交易软件

但说真的,不是所有的策略可以对历史数据进行测试。从个人的经验,我知道一些理念或想法的检测可真是费时。我明白,有时候,付钱来或获得一个EA交易程序比坐几个小时用铅笔画图更容易。但要注意,发送一个未经测试的想法来付诸实施,结果可能是一个非常令人不快的意外!

记住!程序员是不对你的策略的盈利能力负责的,他的任务是用你授予的算法写一个程序。

有时,程序员可以告诉你你的系统的弱点,(如果你不是第一个实现这个策略的),但这基于他的良好意愿。他没有义务保护你不犯错误或为你提供咨询,当然,也没有义务免费检测你的理念或想法。EA订购时,你应该要么对你的策略充满信心,要么了解,这仅仅是一个测试,其结果是不大可能令你惊喜的。赫兹量化交易软件

因此,我们立即得出结论,在定购一个EA交易程序来实施一个策略之前最好反复地对策略多检测几次。赫兹量化交易软件

2. 摆脱幻想

Escher's impossible cube我们只看到我们想看到的。我们希望在海洋中的一个岛屿有一个游艇和满满一箱子的钱。我们看图表时只看到成功的指标信号。然后闭上眼睛伴着幻觉数我们的账户上零的数目... 程序只是基于该算法,揭穿了我们的幻想。赫兹量化交易软件

第二个最大和最频繁的失望原因 - 是混乱和自我欺骗。如果你决定了迈出第一步来检测你的理念或想法,那就带着批判的态度开始吧。许多的不如意在这个阶段可避免 - 只需要拿掉有色的眼镜和理智地看待策略。赫兹量化交易软件

一个很常见的情形是:您已经在互联网(论坛,博客,在线书籍)读到有关一个策略,并决定根据它制作一个EA交易程序。看着图表,估算着它的准确性,然后认为 - “好了,终于找到了 - 它就是 圣杯!”。如果是你下载(或上帝保佑,购买)​​了策略所依赖的超级指标则情形更糟糕 - 你错误地以为,90%的任务已经完成,只有一点事情剩下要做了。赫兹量化交易软件

在这个时候,如果你的另一半自己问自己一个简单的问题 - “为什么这个策略位于公共域名?” (或者,如果你是付费购买到的,“为什么作者要卖它,而不留着自己使用呢?”) - 那么我的客户数量可能就只有现在的一半那么多... 但是,我们相信奇迹,并且不去怀疑!好吧,但是我不会这么做。是什么阻止了你检查你要为其花去个人钱财的策略呢?

这里有一些规则,这将有助于你避免落入你自己的幻想的陷阱,或某人的不良意图。他们可能不会解决所有可能出现的问题,但会减少你犯最常见错误的次数。赫兹量化交易软件

  1. 要对 没有源代码的指标高度怀疑!
    • 您将只能够少许了解它们如何工作,任何人都无法保证他们的行为在未来的不变性。
    • 它们可能潜藏各种错误 -可能导致旧信号的重新绘制的编码错误,不能在某些类型的商品或帐户上正常工作,蓄意的欺骗(在历史数据上绘制已经知道肯定成功的信号),甚或对运作时间或帐号的简单限制。
       

    即使你完全不明白编程,你可以随时求助一个你所认识的程序员帮你“审查”程序 - 不过要确保在定购EA交易程序之前。

  2. 观察指标在实时状态下的工作!
    • 在知道指标的实时在线运作状况之前去考察它的历史信号是没有意义的 - 因为历史信号可能仅仅是一个美好的画面(不幸的是它是无用的)。
    • 几乎所有的指标都会改变在最后一个(未完成的)柱子上的值- 这是正常的。很容易理解,这些改变并不会影响(在已固定的柱子上的)历史数据,在已完成的柱子上的指标数值不会改变。这意味着,信号(箭头或指标线/价格线的交叉)出现后只有等到下一个柱子开始后才能被系统使用(以下单)。如果我们试图(在柱子关闭之前)使用信号,在对EA交易程序的测试过程中,就会发现许多的箭头和交叉(这些都会开仓),但其中大部分在当前柱子结束时已经消失了。你会在图表上看到下单,但没有相应的信号 - 这些信号只在柱子的形成过程中出现。
    • 有些指标可能改变在前一个柱子上的值甚至改变更久之前柱子上的指标值。有时,这是一个指标的本质需要(例如,用于形成一个分形,在它的右边必须有2个柱子,又如之字形指标的最后一节可以过很长时间后重新绘制,直到确认为一个新段的条件满足),但是,这样的行为往往是一个蓄意欺骗 - 很多指标的发明只为在历史数据上画出漂亮信号(为了推销他们),但实际上它是不可能被使用于交易。

      如果一个指标,在历史数据上,总是在最底部显示买的信号,在最高端显示卖的信号,这不表示这是一个很好的指标,与此相反 - 它是在“预测过去“。

    • 不过也没有必要坐几个小时观察在线图表 - 很多指标可以通过可视化测试模式来测试。但无论如何,最可靠的测试方式 - 还是用一个模拟账户运行指标并监控它。您可以将指标加载到图表上,稍等一下,然后再次加载同一指标(使用相同的参数) - 如果它是“真实的”(不重画以前的值),那么由同一指标的两个副本画出的图形应该是相同的。如果指标的新副本显示不同的信号,那么分析其历史信号是没有用途的。
       
  3. 在不同的历史间隔期检测策略!
    • 经常会发生,你在不知不觉中选择一个非常有利于你的系统的历史间隔进行测试。无论是基于指标信号,网格,还是图形识别来下单的策略 - 总会有一个时间间隔内该策略会赚钱。但是,当你在所有可用的历史数据上测试EA交易程序,你会马上看到最不成功的间隔期。你自己试试吧。赫兹量化交易软件
    • 随机选择一些历史间隔期。例如,选择2008年1月,2009年10月,2010年8月 - 用你的眼睛扫描下,查看和计算出赢利和亏损信号的比例。尽量看看在其他商品和周期上信号的质量。如果理念或想法有个核心,它很有可能也适用于其它条件(可能使用略微不同的指标参数或止损)。赫兹量化交易软件
    • 不要为某个单一测试去修改系统参数如果,在8月,您使用某些指标参数,而在9月,你采用另外的参数(得到更好的测试结果) - 你只是在愚弄自己。测试应在相同条件下进行,否则你将只看到你想看到的。我不是说,必须始终保持相同的系统参数,但如果你想动态地改变它们,你必须考虑改变它们的标准。根据历史得出结论总是简单的,但谁知道未来会发生什么事情呢?
    • 寻找最复杂的历史间隔期来对系统进行测试。一些很常见的战术 - 使用通道和等待回调,并经常依次倍增仓位 - 在某些历史间隔期非常成功。但从长远来看,市场有时运行于通道之间,有时又表现出强趋势,基于通道和基于强趋势的两种系统都会间歇性地造成存款的损失。为您的系统寻找最危险的历史间隔期(对突破系统来说的一个长的震荡期 ,对基于回调的战术来说就是强势单边市),并查看在此间隔期进行交易的问题。
       

      并且请不要忘记-将来你可能看到更长的震荡期和更极端的趋势运动,市场是在不停地变化的。始终保留“安全边际”。

  4. 考虑额外成本(点差,库存费,手续费,预付款要求,委托订单的最小间隙)!     
    • 对于大多数长期战略,所有这些费用都并不重要,因为几个点数的误差对它们来说无关紧要。但自动交易的发展趋势显示出越来越多的小利润和高频率的策略被开发,点差增加2个点或10个点的止损水平,都足够引起重视。
    • 请记住,所有的赫兹量化交易软件是以买入价来创建图表的,而新开买单和关闭卖单是以卖出价执行的。当您在策划交易时,把点差考虑在内是不方便,但我们总是可以从总的交易结果减去交易数量乘以点差 - 这样得出的结果更接近实际情况。
    • 分析历史时,不要忘了,几年前的交易条件有很大不同。如果我们用现在的点差做计算,则剥头皮策略非常适用于1999年的“蓬松”图表。但1999年的点差比现在大3-4倍!如果我们从每笔交易中减去那个时期的真正的点差,则你实际获得的利润将所剩无几。即使在其他条件下情况也是类似的, - 几年前,最大可用杠杆为1:100,并且放置挂单的距离至少达数十个点。
    • 请记住,交易条件在新闻发布时可能会改变(当然,是变得更糟糕),订单的执行会推迟,并出现滑点。不要发明“基于新闻的历史业绩辉煌的系统”,至少要用微型真实帐户对它们进行测试。如果你以2个点的点差和即时执行交易单来评估系统,而实际情况是头寸5秒钟后才建立,并有10个点的滑点,点差扩大这么多以至很难保本关闭尺寸,则你对系统的认识有很大偏差。
    • 总是有一个跟交易条件有关的“安全边际”。如果您的系统会因为点差的微小变化或头寸建立的几秒钟的延迟而“崩溃”,则它不大可能在“真正的战斗”中存活下来。

      请记住,对大多数策略来说,交易方向的准确率接近50%,点差才是失去本金的原因。所以要尽可能地改善策略,使得点差不会对结果产生巨大影响。

如果在所有的检查后您仍然坚信您的系统,仍然想要将它自动化,那么我们就可以继续下一步。

3. 确定目标

确定目标你有没有想过,为什么你需要一个EA交易?你只是想通过来验证你的某个想法?或者,也许你想在你的迷你真实账户上尝试一个经过测试的交易策略?不,我知道 - 实际上你已经根据你的系统交易了2年, 你准备在你的拥有100 000美元资金的真实账户上马上启动你的EA交易。

这些看似无用的问题很少被问到。泛泛而言,这是可以理解的 - 因为答案只会影响一些小的方面:比如技术需求的细节,申请人/开发者的选择,也许还有完成工作的成本。但是,你仔细想想,不同方法最终导致的差异可能是非常大的。

在大多数情况下,程序员并不关心写EA交易的目的是为了对某个策略进行测试(只使用最少的检查,也不作异常处理)还是给真实账户实际使用。如果他已经使用MQL写程序有很长一段时间,并且没有任何对他的程序的稳定性的投诉,那么他很可能有实现任何交易算法的基础并且无论仅仅为了测试还是用于真实账户他都用同样的方法实现。

但是,即使你足够幸运能与这样的人共事,描述技术上的需求时你仍会感到差异。

让我用一个例子来解释:

  1. 情景一 - 你只是简单的想 测试某个策略 (这个想法可能是你在某个地方发现、听到或者看到的)。 那么意味着:
    • 我们还没有打算用真实账户运行该策略 - 无需做各种检查以及异常处理。
    • EA交易将被不断的测试和优化 - 我们需要达到最好的效果(或许这将以牺牲稳健性为代价)。
    • 最可能的情况是, 在测试过第一个版本之后, 需要对它进一步优化 - 一个EA交易应该能轻松的被扩展。
    • 算法中需要考虑的一些“瓶颈”(比如下单时是否满足离当前报价允许的最小差值,开仓以及平仓的先后顺序,最大下单量限制,网络重连后程序的重新启动 等等) 不需要处理,因为我们不知道哪些限制将在最终的版本中需要考虑并处理。
       
  2. 情景二 - 策略已经准备好了, 你需要一个有效的EA交易使用于真实账户。这将和上面的情景一在以下方面有所不同:
    • 所有的交易操作要尽可能的正确, 不仅仅是用户定义的变量值需要测试, 程序运行中所有计算出来的值都要被测试(比如下单的手数,止损值等等)。

      交易请求的“质量”直接影响到服务器和你账户的“关系”- 如果服务器持续接收到大量不正确的订单它可能会拒绝你的账户的请求,你将会对局面失去控制。

      如果遇到严重错误, 你必须让用户知道 (通过屏幕信息,电子邮件,Skype,ICQ或者短信息)。
    • 我们首先要考虑的是程序的稳健性,虽然它和速度性能往往相冲突 - 如果一些额外的检查能帮助预防可能的错误的产生,那么EA交易就应该加入这些检查。即使这些检查降低了测试和优化的速度(当实际运行的时候执行速度的差异往往是无法察觉的)。
    • 即使将来还需要优化,改动也是比较小的。所以对于易于扩展性方面无需再规定具体的需求。
    • 算法所有的 “瓶颈”应该都尽量被考虑到并且精确的处理。应该至少要考虑一些可能产生错误的情形并做处理(要知道非常不幸的是我们无法对各种情形做好预先处理):
      • EA交易应该能在短暂的网络中断,账户重新登录或者客户端重新启动后继续正常工作。
      • 如果你无法挂单, 无形中你需要追踪这些订单,当价格达到这些订单的价格时,按照市场价执行订单。
      • 如果你在尝试了N次之后还是无法按照市场价开仓,订单允许的滑点的最大值应该被增加。
      • 挂单一旦在某个价格成交, 这个价格不是算法提供的且带有滑点的(比如价格跳涨跳跌),那么和该订单相关的所有订单的价格(甚至还包括订单的手数)应该都要调整。
      • 所有根据存款大小进行操作的功能(比如计算交易手数), 应该能正常接受资金余额的非交易性操作(比如结算或者取现)。
      这个列表还可以列很多。像这样的小细节无穷无尽的存在,并且每个策略有各自的具体的细节。
    • 另外一些额外的需求被提出 - EA交易应该能适应不同的经纪商的平台,考虑使用各种可利用的工具,他们的具体说明,以及一些服务器其他设置(可挂单数的最大值,止损离场值,反向开仓机会(仅限于赫兹量化交易软件等等)。
  3. 情景三 - 你真正准备好在一个拥有100 000美元的真实账户上使用EA交易。相对上一个情景而言会有所改变么?所有的一切都取决于你是否有妄想症(对不起,我的意思是取决于你是否有前瞻性想法):
    • 创建更多的日志文件绝对没有坏处,而常规的对屏幕截屏的保存在分析问题或者争议的时候可能是非常有用的。
    • 如果你计划在专用服务器上运行EA交易,你可以想象到这样的可能性:需要正确控制另外一个(正在并行运行的)拷贝的运行。比如,你可以同时在你的专用服务器和你家里的机器上运行你的EA交易,并且你“家里”的程序应该能在专用服务器连接中断超过5分钟以上时正确接管控制局势。
    • 如果你不能持续的监控你的EA的执行,你可以每小时(或者每天)生成报告,展示账户状态和交易情况。任何情况下都要对关键错误进行提醒。
    • 如果你想要控制交易过程,甚至当你手边只有电话也能控制,你可以实现“反馈”机制 - 能通过短信、电子邮件、Skype、ICQ或者通过设置挂单(在订单的注解中有指令的描述)给EA交易发送指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值