介绍
Chart Pattern Helper EA不是一种自动交易机器人。它并未内置可执行的交易策略。这个智能交易的唯一目的是在图表对象上:趋势线、水平线或等距通道,通过挂单执行交易。除简单的执行突破交易外,它还能在您因某些原因错失突破点的情况下执行回调交易。
Chart Pattern Helper 的主要优势是按照放置在外汇图表的图形对象的范围,包括斜坡对象设置并调整挂单的能力。这种能力可以简单的执行流行形态的交易如三角形(上行、下行和对称)、通道、旗形、三角旗形、矩形、头肩形、双顶部/底部形等。
某一水平的突破被定义为简单的触及。Chart Pattern Helper 不会等待价格收于给定线的上方/下方。当价格首次触及设置的水平时,它会放置一个挂单。
有一个参数的输入范围可用于监管该智能交易的工作,但只有当您将其附加到图表并将其添加到适当名称的图表对象后,它才能马上开始工作。之后,可随时移除这个图表对象。该智能交易将继续检测它们的头寸并相应的调整定单参数。该EA 默认将当前的状态输出到图表备注。
因为所有图表对象都以买入价绘制,因此当使用卖出价时,该EA会加上当前的点差来调整进场、止损和止盈水平。这种行为可通过输入参数降低订单发送到交易服务的修正数目而禁用。
Chart Pattern Helper 能够按照一套输入参数,止损水平和账户余额/净值计算头寸大小 — 更像MetaTrader 的头寸大小计算器。您可以关闭这个功能,给该EA设置一个固定的头寸数值。
运算过程
这个EA启动之后将按照以下步骤运行:
- 通过输入参数按照给定的名称监测对象。
- 以进场目标+点差(卖出价)的价格放置买单的进场水平。
- 以进场目标(买入价)的价格放置卖单的进场水平。
- 买单的止损水平放置在边界目标下方以大多数长度为时段的最近的局部低位。
- 卖单的止损水平放置在边界目标上方以大多数长度为时段的最近局部高位;并将点差加入到高位内。
- 如果UseDistantSL设为true,则忽略前两个步骤,并使用相反线的最远点。这仅适用于水平线和趋势线。
- 买单的止盈水平放置在止盈目标处(买入价)。
- 卖单的止盈水平放置在止盈目标 + 点差(卖出价)处。
- 所计算的值会通过图表备注持续显示除非Silent 输入参数设置为true。
- 挂单则按照这些所计算的值放置。如果没有买或卖进场目标,那么只放置一个订单。当前的图表柱结束时,订单自动到期。在MT4上,最低的到期时间为11分钟;在MT5,是2分钟。
- 如果当前的价格低于买单进场价并高于卖单进场价,那么使用追单挂单。如果当前的价格低于卖单进场价或高于买单进场价,那么仅能使用一种限价单挂单。
- 追踪当前的目标值,相应的调整进场、止损和止盈水平。
- 如果启用头寸数值计算,那么需要的时候订单的数量会进行更新。在这种情况下,使用先前数量的订单就会被删除并创建使用新数量的订单。警告:这个功能可能会导致大量的挂单,而这可能违反您经纪公司的服务条款。如要阻止这种行为,您需要设置UpdatePendingVolume输入参数为false。
- 到期的订单会以新的数量重新创建(如果需要)并更新进场/止损/止盈水平。
- 如果触发了一个追单,那么第二个(方向)追单会被删除(除非OneCancelsOther 输入参数设置为false)。所有目标将附加EA的逻辑编号到它们的初始名称重新命名。这会防止新挂单的创建
- 如果PostEntrySLAdjustment设置为true,当跟随突破的新蜡烛图开盘后会试图更新止损。
- 按照止盈目标继续更新头寸的止盈水平。
- 头寸一旦关闭之后将停止活动。
- 一旦控制图表目标被重新命名返回它们的初始名称进入步骤一。
智能交易系统也可以在趋势线交易模式下运行:
- 检测上部/下部边界的图表对象。
- 等待蜡烛图以最小距离收高或收低于趋势线,最小距离通过输入参数 ThresholdSpreads 判定。当此类收盘价出现时,输入交易。
- 将特定止损对象设为止损价位。
- 将相应的上部/下部止盈线设为止盈价位。
输入参数
对象
- UpperBorderLine (默认 = "UpperBorder") — 对象的名称(水平线或趋势线),用以定义突破形态的上缘边界。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- UpperEntryLine (默认 = "UpperEntry") — 对象的名称(水平线或趋势线),用以定义突破形态的买单进场水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- UpperTPLine (默认 = "UpperTP") — 对象的名称(水平线或趋势线),用以定义买单的止盈水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- LowerBorderLine (默认 = "LowerBorder") — 对象的名称(水平线或趋势线),用以定义突破形态的下缘边界。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- LowerEntryLine (默认 = "LowerEntry") — 对象的名称(水平线或趋势线),用以定义突破形态的卖单进场水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- LowerTPLine (默认 = "LowerTP") — 对象的名称(水平线或趋势线),用以定义卖单的止盈水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- BorderChannel (默认 = "Border") — 等距通道对象的名称,用以定义突破形态的上缘和下缘边界。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- EntryChannel (默认 = "Entry") — 等距通道对象的名称,用以定义买和卖进场水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
- TPChannel (默认 = "TP") — 等距通道对象的名称,用以定义买和卖止盈水平。您可以将该对象命名为该参数的数值或者更改参数以适合当您创建图表对象时使用的名称。
订单管理
- OneCancelsOther (默认 = true) — 如果为true,触发的挂单将取消反向挂单。如果为false,反向订单仍然保留而且当第一个头寸触发止损或止盈之后可能会被触发。
- UseSpreadAdjustment (默认 = true) — 如果为true,点差会加入买单进场水平和卖单止损/止盈水平。当使用卖出价且所有图表对象以买入价描绘时,它会补偿差价。设置为false将降低订单到经纪公司交易服务器的修复请求流量。
- UseExpiration (默认 = true) — 如果为true,挂单将于创建后的当前时段结束时或11分钟(MT4)或2分钟(MT5)内到期 —不管将来怎样。如果经纪公司不支持订单到期,那么可能会被要求设置为false。
- DisableBuyOrders (默认 = false) — 如果参数为true,新的买进订单将不被创建,目前的买进订单和仓位将被忽略。
- DisableSellOrders (默认 = false) — 如果参数为true,新的卖出订单将不被创建,目前的卖出订单和仓位将被忽略。
- UseDistantSL (默认 = false) — 如果为true,EA会将止损位设为相反线的最远点。此功能仅适用于三角形和楔形。
趋势线交易
- OpenOnCloseAboveBelowTrendline (默认 = false) - 如果为 true,则当蜡烛图收高/收低于边界趋势线后,将开启交易。
- SLLine (默认 = "SL") - 趋势线交易的止损线对象名称。
- ThresholdSpreads (默认 = 10)- 开启交易前,边界趋势线上方/下方最小距离的点差数。
头寸大小
- CalculatePositionSize (默认 = true) — 如果为true,那么头寸大小将根据给定的风险承受能力、账户大小(余额或净值)、账户货币和交易货币对进行计算。计算过程与头寸大小计算器一样。如果为false,将使用固定的头寸数值。
- UpdatePendingVolume (默认 = true) — 如果为true,那么当计算出新的头寸大小后将更新挂单的数量。这可能会导致过高的订单量到交易服务器,因为不能修改订单的数量;反之,它会被删除,然后创建新的数量。如果为false,那么订单的数量在到期和随后的重建之前保持不变。如果CalculatePositionSize = false,那么这个参数可以被忽略。
- FixedPositionSize (默认 = 0.01) — 如果CalculatePositionSize = false,那么该EA将使用该参数值作为创建挂单的数量。
- Risk (默认 = 1) — 风险承受能力,账户余额/净值的百分比。只有在CalculatePositionSize = true时起作用。如果UseMoneyInsteadOfPercentage设置为true,那么可以忽略这个输入参数。
- MoneyRisk (默认 = 0) — 账户货币的风险承受能力。只有在CalculatePositionSize = true时起作用。要求UseMoneyInsteadOfPercentage设置为true。
- UseMoneyInsteadOfPercentage (默认 = false) — 如果为true,头寸大小将按照给定账户货币的风险数额(MoneyRisk)进行计算,而不是按照余额/净值的百分比风险(Risk)计算。只有在CalculatePositionSize = true时起作用。
- UseEquityInsteadOfBalance (默认 = false) — 如果为true,那么头寸大小将按照账户净值而不是余额进行计算。只有在CalculatePositionSize = true时起作用。
- FixedBalance (默认 = 0) — 如果设置为非0值,那么它将代替账户余额/净值计算头寸大小。只有在CalculatePositionSize = true时起作用。
- PostEntrySLAdjustment (默认 = false) — 如果为true,该EA将随突破后新蜡烛图的开盘而调整止损。它会检查突破的蜡烛图的高位/低位是否仍适合止损。它可能会打破头寸配置规则但会按照交易策略的离场规则更加精确的确定止损。
杂项
- Magic (默认 = 20130116) — 该EA用以区分自身订单(MT4和MT5)和头寸(仅适用MT4)的编号。如果您在运行其它使用相同逻辑编号的EAs或者如果您希望添加两个或多个Chart Pattern Helper 到一个货币对,那么您可能需要更改它。
- Slippage (默认 = 30) — 对经纪公司点差的滑点最大容忍值
- Silent (默认 = false) — 如果为true,那么将没有状态信息输出到图表备注。如果您使用一些指标或其它EA修改图表备注并想给予他们优先权,那么这个参数就非常有用。
- ErrorLogging (默认 = true) — 如果为true,那么该EA将记录所有错误和其它非标准状态到日志文件。它被命名为"CPH-Errors-",可以在MT4 安装文件夹的/experts/files/ 根或MT5安装文件夹的/MQL5/Files/ 根找到(或为您的MetaTrader 5指定的用户程序数据文件夹,如果您使用的是 Vista 或更新的 Windows版本)。
常见问题解答
下单之后把这个EA关掉安全么?
安全,但如果未触发,那么订单会到期。运行EA需要重新创建并更新它们。
它使用任何追踪止损么?
不使用,执行订单后止损是固定的。但是您可以设置您自己的追踪止损,甚至是在一个单独的智能交易表格内。
触发挂单之后,我可以修改头寸的止损或止盈么?
当然!您可以立即修改止损,一旦您重命名/删除止盈对象或禁用这个EA之后就可以修改止盈。
我使用渠道吸引模式但是只希望EA进行单边交易多或空,如何设置?
您可以通过设置限制DisableBuyOrders 或 DisableSellOrders输入参数为是阻止EA买进或卖出。
请问您可以为我更改一些东西么?
不能。有数百种方法修改这个EA使其进行不同的交易或符合某个人的交易风格。我们不对其进行任何修改,因为它不可能令每个人都满意。然而,它的源代码是开放的且附带注释 — 您自己可以对其进行修改。
范例
MT4
下图示例显示图表形态助手(Chart Pattern Helper)的交易过程。这种下降的通道形态在 GBP/USD 周线图上用三个通道对象标记:边界(黄色)、入场位(蓝绿色)和止盈位(浅绿色)。这款智能交易系统对所有对象进行检测,并计算相应的入场位、止损位和止盈位。得出的值显示在图表注释中(左上角)。止损挂单已下,其止盈位和止损位也在图表上可见。
MT5
图表也会显示图表模式助手如何下买入限价挂单,以进入图表形态出现突破时错过的交易。AUD/JPY 在 M5 周期上的图表采用两条趋势线来判定边界(金菊黄色)、入场位(蓝绿色)和止盈位(浅绿色)。与前一个示例相同,屏幕左上角的图表注释显示检测到的价格水平。由于缺少更低的对象,它仅计算具体的买入价位。由于当前价格高于入场价位,已下一笔买入限价挂单。
趋势线
此图表示例显示图表形态助手如何在蜡烛图收盘价高于看涨三角旗形上边界时准备入场。如屏幕左上角所示,它无需较高的入场位,但它找到了止盈位。
下载 (ver. 1.14, 2024-03-06)
下载 ChartPatternHelper MT4智能交易 下载压缩格式的 ChartPatternHelper MT4智能交易 下载 ChartPatternHelper MT5智能交易 下载压缩格式的 ChartPatternHelper MT5智能交易讨论
您有使用此智能交易的交易结果或任何其它评论么?请访问我们的外汇论坛和其它交易商或MQL程序设计师讨论ChartPatternHelper。
更新日志
1.14 — 2024/3/6
- 修复了一个可能会导致大量修改订单的请求被发送至交易服务器,但实际上并未做出任何修改的错误。
- 修复了所有的分数比对,以避免潜在问题。
- 修复了 MT5 版智能交易系统中可能会导致挂单更新失败的小错误。
1.13 — 2023/5/22
- 修复了用水平线交易的另一个错误。
1.12 — 2023/5/19
- 修复了采用水平线的趋势交易模式的操作问题。
1.11 — 2022-07-09
- 对头寸数量计算进行了小部分改进。
1.10 — 2022-04-25
- 增加了“收盘价高于/低于趋势线”的入场选项。
- 更新了输入参数描述。
- 修订了头寸规模计算中的一些潜在错误。
1.09 — 2020-12-13
- 修复了当货币对的基准货币与账户货币相同时,挂单头寸数量的计算问题。
1.08 — 2020/11/30
- 头寸数量计算更新。
1.07 — 2020/11/19
- 头寸数量计算更新。
1.06 — 2020-06-24
- 进一步提升了MT4中的单元成本计算功能。
1.05 — 2020-05-30
- 修复了MT5版本中导致某些情况下,点值计算错误的问题。
1.04 — 2020-05-16
- 微调了1.03版本中引入的修改。
1.03 — 2020-05-15
- 提高了头寸大小计算的准确性。
- 修复了MT4中的潜在错误131(无效交易量),以及MT5中由于头寸大小不符合交易代码的交易量步长参数而返回代码10014(TRADE_RETCODE_INVALID_VOLUME)的问题。
1.02 — 2020-03-31
- 增加了对基点粒度的调整功能,以避免当交易工具的基点大于1点时,MT4中出现OrderSend错误130(无效止损)以及MT5中出现错误4756。这项功能在差价合约交易中尤为有用。
1.01 — 2019-02-11
- 增加功能:将止损位设于三角形/楔形的最远点。
- 修复了可能会导致MT4止损位计算错误的问题。
1.00 — 2013-03-07
- 初始版本。