Expert Advisor Strategy Design - 在本文中学习如何构建入场技巧和设置挂起的止损挂单和挂起的限价挂单。
所有入场技巧都取决于三种订单类型:市价单、止损单和限价单。 正如之前所强调的,大多数策略都应该使用入市单来构建和测试。 当您的设置条件得到满足时,市场订单保证让您进入市场,这与并不总是让您入场的挂起限价入场单或可能让您入场太晚的挂起止损入场单不同。
交易时间长了,我很偏向市价单。 话虽这么说,尝试两种挂单输入技术(限价和止损)看看它们是否可以增强您最初构建并测试为有前途的市场订单的策略并没有什么坏处。
作为一个纯粹的策略主义者,我认为一个好的入场技巧应该包括两个规则:
规则
在进行交易之前,价格应确认设置的方向。
例如,如果设置需要多头头寸,则入场技术(例如在当前高点上方买入止损)确认该向上方向。 理想情况下,入场技术迫使价格向入场前的设置方向移动。
入场应保证您将参与该策略旨在捕捉的每一步。
例如,如果您有一个趋势跟踪策略,您可能不想要一种入场技术(例如低于最后一根柱线低点的限价单),在这种情况下不能保证会发生这种情况,并且您可能会错过 大动作。
挂起的止损挂单:优点和缺点
就其性质而言,挂起的止损入场订单要求市场通过高于市场价的预定水平进行买入或低于市场价进行卖出。
优点:与根本没有(从设置中生成的市场订单)相比,拥有这样的入场触发器的优势在于您可以避免一些错误信号。 市价订单可以让您尽早入场,但也可能让您陷入虚假困境。 这些突破止损位旨在确认趋势设置的方向,从而满足上述规则 #1 和规则 #2,从而提高交易可靠性。
缺点:采用这种策略的缺点是您可能入单太晚,入场不是在原始设置而是在远离原始设置的位置,在市场已经朝着趋势或反转的方向移动之后。 因此,您获得了确认优势,这增加了交易的可靠性,但是如果您接受了较早的市价订单,则以损失潜在的点利润为代价。
挂起的限价挂单:优点和缺点:
限价单与止损单相反。 限价买入价格低于当前市场,限价卖出价格高于当前市场。 使用趋势跟踪策略,限价订单要求价格沿着与设置相反的方向移动。 例如,如果您应该在快速移动平均线超过慢速移动平均线时做多,限价订单要求市场首先从交叉点回撤几个点,然后您才能进入交易。
优点:限价订单可以让您以比市价订单更好的价格进场,因此如果市场回撤至您的限价,您可以赚取更多点数。 挂单限价单可与反趋势或回撤类型策略结合使用,并符合上述规则。 由于反趋势和回撤策略都需要市场在进入前回撤价格,限价单以互补的方式起作用,因为它也需要回撤价格。
缺点:对于趋势跟踪系统,限价订单违反了第一条入场规则,因为它不会强制价格向入场前的设置方向移动。 它还违反了规则 #2,因为如果价格没有达到限制,它就无法赶上它设计要赶上的走势。 因为在基于趋势的策略上设置限价订单违反了入场规则 #1 和 #2,它们通常会污染而不是增强此类策略。 作为说明,我将在我的趋势跟踪 MA 交叉策略中设置一个限价订单,以向您展示它将如何降低该策略。
在我们开始试验两种挂起的入场技术之前,建立基线是合适的,即在试验之前的策略结果。
这是从 1999 年 1 月到 2012 年 1 月的 25-250 SMACross:
对于一个简单的停止和反向系统,该策略的性能非常好。 利润系数为 1.76,总净利润为 8139 美元,DD 为 2243 美元,该策略非常强大。 让我们看看添加挂起的止损或限制是否可以改善或阻碍性能。
待定止损挂单实验:止损挂单 +/- 20 点差距由设置确定。
建立止损挂单的方法有很多种,但我们将从最基本的部分开始:当策略设置生成买入信号时,将在当前价格上方 +20 点处设置止损挂单,并在一个周期内到期 一天(1440 分钟)。当策略产生卖出信号时,止损入场订单将在当前价格下方 20 点下达,一天后到期。这可能是一个可行的入场点的原因是止损入场点 20 点 上方或下方确认设置指示的市场方向。 它可能会抓住大部分趋势,同时避免一些洗盘。
对于买入信号:
用常规语言:
如果设置确认多头信号,则入场技术是买入止损+高于要价 20 点差。
如果设置确认空头信号,则入场技术是卖出止损 -20 点差高于要价。
在 MQL 代码中:
if(stoporders)if(time2!=Time[0]){RefreshRates();ticket=open(OP_BUYSTOP,blots,Ask+
gap*pt,stoploss,takeprofit,expire,Blue);
注意:一旦设置了 stoporders=true 条件,该策略将启动其止损订单 +/- 20 点差距。
由于买入止损已经适用于缺口技术,因此您无需对其进行编程。
您可能想要试验的唯一可自定义功能是挂单到期和缺口点长。
这是外部代码在属性选项卡中喜欢的内容:
在即时订单设置为真之前,止损订单和限价订单为假。 现在,stoporders 设置为 true,而 instantorders 设置为 false。
Expiration = 1440(默认 – 表示挂单将在一天后到期,240 表示它们将在 4 小时后到期,60 表示在 1 小时后到期,等等,0 表示永不过期)。
缺口 = 20(默认值——表示缺口设置为高于买入价 20 点,或低于卖出价 20 点)。
我们将暂时保留到期和缺口默认值。
以下是从 99 年 1 月到 2012 年 1 月配备 20 点差止损的 25-250 SMACross 的结果:
您可以看到性能降低了一半。 使用入场技术,净收益减半($3.1K 与默认值 $7434),利润减少 30 个点(1.26 与默认值 1.63),DD 略有增加(从 1.8K 到 2K)。 似乎突破从历史中排除了 22 笔交易,其中一些被排除的交易产生了重大影响。
止损突破策略理论上可以通过确保价格确认设置方向来帮助策略; 然而,在实践中,入市技术在 H4 时间框架上破坏了这些移动平均线策略。 市价订单设置以其简单性而出众。
入场技术实验:限价订单 +/- 20 点差在 MACross 方向
如前所述,限价订单技术不常使用,因为它经常违反上述 2 条入场规则。 限价订单不会迫使价格朝设置的方向移动,它们有时无法捕捉到旨在捕捉的移动策略。 由于这些限制,限价订单通常会破坏趋势跟踪策略。 让我们通过将我们的 20 点止损缺口变成 20 点限价缺口来向您展示它是如何做到的。
对于买入信号:
用常规语言:
如果设置确认多头信号,则入场技术是买入限价 -20 点差低于要价。
对于卖出信号:
用常规语言:
如果设置确认空头信号,则入场技术是卖出限价 + 买入价上方 20 点差。
在 MQL 代码中:
if(limitorders)if(time3!=Time[0]){RefreshRates();ticket=open(OP_BUYLIMIT,blots,Bid-
gap*pt,stoploss,takeprofit,expire,Blue);
对于卖出信号:
用常规语言:
如果设置确认空头信号,则入场技术是卖出限价 + 买入价上方 20 点差。
在 MQL 代码中:
if(limitorders)if(time5!=Time[0]){RefreshRates();ticket=open(OP_SELLLIMIT,slots,Ask+
gap*pt,stoploss,takeprofit,expire,Red);
注意:一旦设置了 limitorders=true 条件,该策略将启动其限价订单 +/- 20 点差距。
由于买入限价已经适用于缺口技术,因此您无需对其进行编程。
您可能想要试验的唯一可自定义功能是挂单到期和缺口点长。
这是外部代码在属性选项卡中喜欢的内容:
在 instantorders 设置为 true 之前,stoporders 和
限价单是假的。 现在 limitorders 设置为 true 并且
instantorders 设置为 false。
我们将暂时保留到期和缺口默认值。
以下是从 01.01.2000 到 08.20.2010 配备 20 点差距限制的 Method2 的 25-250 SMACross 的结果:
您可以看到,添加一个简单的 20 点跳空限价入场技术后,这个原本优秀的策略就完全被破坏了。 它的 7.4K 净利润下降到 -1.4K,其强劲的 1.64 PF 变成了糟糕的 0.84,其最大回撤增加了 600 美元。 限价技术带走了所有的好处,并使其成为一种可以反向交易的糟糕策略。
结论
正如我们所见,不添加任何入场技术的设置本身有时是最有效的方法。 事实上,我们使用 MACross 策略对止损和限价入场技术进行的实验证明,它们会严重破坏原始性能。 我们相信,如果策略不能通过止损或限价缺口进场来改善,那么无论止损或限价机制多么复杂,它都无法改善。
一些关于策略开发的作者认为,挂起的进入机制是创建一个好的策略时被遗忘的一面或缺失的一环。 使用枪的比喻,设置是范围,待定条目是触发器。 这是一个很好的比喻
但它过多地归功于入门技术。 我反驳说,简单的设置可以成为范围和触发器——你不会添加任何不必要的组件来导致它适得其反。
这并不意味着复杂的止损或限价机制不能增强任何策略。 一些止损入场策略可能最适合基于趋势线的策略,而一些限价入场策略可能最适合反趋势策略。 每当您尝试构建策略时,您都应该尝试