两个相近高点可能是双顶,也可能只是区间的一部分或上涨中的暂停。两个相近低点同样存在反向的不确定性。本策略将一种限定解释写成可测试的顺序,而不把轮廓当作指令。请先通过图表形态指南区分候选、已经发生的突破和后续结果。文中每个阈值都是明确声明的研究选择,并非已证实最优的设置,也不是当前交易建议。
1. 明确假设与数据
假设是:此前已有一段走势且出现两个相近极值后,突破中间波段可能识别反转。双底对应BUY,双顶对应SELL。策略主动放弃提前入场,以明确形态何时才可识别。等待也可能使价格变差或无法交易,并不能证明存在正期望。
使用明确指定的同一来源的普通EURUSD H1 Bid K线,以及对应的历史Bid/Ask报价来检查成交。本规格的pip大小设为0.0001。K线索引按时间递增,O、H、L、C分别表示开、高、低、收。识别只用完整K线。MT4中shift 0是未完成K线,shift 1是最近完整K线,不要与本文向前递增的索引混淆。
候选涉及的全部观察,包括此前背景和确认K线,都必须具有连续的每小时时间戳。任何时间断档都会重置拐点窗口和已激活候选,周末断档也一样。缺失报价属于不可用数据,不能编造价格补齐。记录提供方、服务器时区、品种规格与排除规则,使他人能够复现同一样本。
2. 先确认拐点,再使用它
若第j根K线的低点严格低于j−2、j−1、j+1、j+2的低点,则为低点拐点。高点拐点须严格高于对应的四个高点。任一侧存在等值,就排除该类拐点。事件只有到j+2收盘才已知。事后把标记画回j,不代表当时就能使用。这是本文的严格检测定义,不声称所有平台分形指标都以相同方式处理等值。
按时间顺序处理刚确认的事件,不用更好看的同类拐点替换旧拐点。每次事件只检查最新三个。BUY须为低–高–低,SELL须为高–低–高,原始K线索引记作a、m、b。若一根K线同时满足两类定义,则视为歧义:清空事件窗口并取消已激活候选。看到有利突破后,不得另选一组三点。
持仓时记录事件,但不激活新候选,也不排队等待以后交易。空仓时,每个新拐点先取消现有候选,再允许检查最新三元组。每组三点有唯一身份,只允许一次入场尝试。已确认拐点背离策略使用不同假设;采用相同拐点定义,并不把它的动量条件加入本策略。
3. 要求相近程度、间隔与先前走势
间隔按K线索引之差计算:b−a须在8至32之间,包含两端;m−a和b−m各至少为3。BUY要求L[a]与L[b]绝对差不超过3 pips。令N = H[m],保守形态高度等于N减去两个低点中较高者,须至少12 pips。SELL对H[a]、H[b]采用相同容差,令N = L[m],两个高点中较低者减N须至少12 pips。
先前走势也有明确过滤条件。BUY要求C[a−8]减C[a−1]至少达到所定义高度;SELL要求C[a−1]减C[a−8]至少达到该高度。这些收盘都在首个极值之前。它只是简单端点度量,不证明趋势平滑或参与者意图。保留被排除案例并检验设置敏感性,不要只把漂亮图形作为证据。
4. 固定颈线,限定等待期限
在c = b+2时,合格三元组确定水平颈线N与止损参考S。BUY的S为L[a]、L[b]中较低者再减2 pips;SELL为H[a]、H[b]中较高者再加2 pips。后续K线不能改变它们。排除已经完成的突破:从m+1至c,BUY的Bid收盘均不得高于N加2 pips,SELL的Bid收盘均不得低于N减2 pips。
从b+1至c,若BUY的Bid低点触及或跌破S,或者SELL的Ask高点触及或超过S,也排除候选。合格候选在c收完后激活,突破窗口为c+1至c+6,包含两端。不允许在c本身入场。若到c+6收盘仍无合格突破,则到期。新的已确认拐点、歧义事件或数据断档会使它提前取消。
5. BUY:完整收盘严格高于固定门槛
在激活窗口内,先检查已完成K线的Bid低点是否等于或低于S。若是,即使收在颈线上方也取消。若候选仍有效,且未被新拐点取消,则首次严格高于N加2 pips的完整Bid收盘为BUY信号。仅影线越过不够,等值也不算。止损和取消检查优先于收盘突破。
首次合格突破就消耗该候选,只检查其后第一笔Bid/Ask报价。该报价必须在信号K线收盘后60秒内到达。实时Bid仍须严格高于N加2 pips。点差不超过1.5 pips,Ask相对信号收盘向上偏离不超过5 pips。如果其他检查全部通过,较低Ask也允许。任何失败都跳过,不等待同一三元组的更好报价或另一根收盘。
6. SELL:反转结构,但正确使用报价侧
对已激活双顶,若完整K线的Ask高点等于或高于S,便取消。否则,首次严格低于N减2 pips的完整Bid收盘给出SELL信号。其后第一笔报价须在60秒内到达,Bid仍须严格低于门槛。点差不超过1.5 pips,信号收盘减当前Bid不超过5 pips。只要仍低于门槛,较高Bid也可能合格。
SELL以Bid开仓、Ask平仓;BUY以Ask开仓、Bid平仓。因此仅有Bid历史不能验证SELL的Ask止损条件,也不能重建全部出场。不要把BUY图形反转后,暗中将SELL的所有操作都按Bid计算。本策略不要求再次测试突破边界,也不在第二个极值入场。第二次测试确认策略有独立顺序,应分别验证。
7. 检查报价、经纪商限制和实际成交
发送订单前,按可用入场报价要求正的止损距离在8至60 pips之间,包含边界。检查价格tick对齐、允许手数、保证金、佣金及经纪商止损距离限制。要求无效或未知就跳过,不能为使订单获准而扩大S。首笔报价可能通过形态门槛,却未通过这些检查。申请市价单并不代表已实际成交。
根据该报价和成本预留计算仓位,之后保留实际成交E并重新检查风险。S保持固定,目标从E计算。若实际成交使预算或止损距离限制失效,或者无法建立保护订单,应请求立即按可用报价平仓,并记录真实交易和成本。不得改标为跳过。拒单、紧急平仓、延迟和滑点都属于结果的一部分。
8. 固定出场,仓位向下取整
BUY的价格风险为E减S,T为E加该距离的两倍。SELL的价格风险为S减E,T为E减该距离的两倍。BUY止损和目标使用Bid,SELL使用Ask。两者均固定,不移动止损或移至保本。若都未触及,则将入场所在K线作为首根,在12根H1完整K线收完后请求出场,使用该收盘后的第一笔报价。实际成交可能比参考更差。
示例风险预算设为当前净值的0.5%,本规则同时只持一笔仓位。将现金预算除以每手估计亏损,计入报价至止损距离、往返佣金和不利滑点预留,再按允许手数步长向下取整。若小于最小手数就跳过。亏损预留是计划假设,不是最大亏损保证。与其他系统的合并敞口需依风险管理指南另外检查。
pip、平台point与最小tick是不同单位。应依据真实合约和账户货币计算金额,不要处处假定每pip为USD 10。使用tick价值换算距离时,距离和tick大小必须采用匹配的价格单位。正确按Ask/Bid侧入场和出场,点差已经反映在内;再次相加会重复计费。适用时加入隔夜费或其他收费。参阅pip指南与仓位计算指南。
9. BUY示例:形态、成交和现金风险
虚构候选中a = 20、m = 26、b = 32,两段各为6根K线,总间隔12根。低点1.09800与1.09820只差2 pips;N = 1.10100给出保守高度28 pips。C[a−8] = 1.10500、C[a−1] = 1.10100构成先前40 pips下跌。假设严格拐点、无先前突破、数据及止损检查均通过。第二个低点只有到c = 34才可使用。
在t = 35,假设Bid低点1.09920、完整Bid收盘1.10130。固定BUY门槛为1.10120,因此收盘合格,低点也在S = 1.09780上方。其后第一笔报价在2秒后到达:Bid 1.10140、Ask 1.10150。点差为1 pip,相对信号收盘的不利追价为2 pips。假设实际按该Ask成交,E = 1.10150,且保护订单和经纪商限制均获满足。
止损距离37 pips,固定目标1.10890在入场上方74 pips。USD 10000账户的0.5%预算是USD 50。假定每1手每pip为USD 10,往返佣金每手USD 7,每种结果额外计入合计2 pips不利滑点预留。每手估计亏损为USD 397。按0.01手步长向下取整得到0.12手,模型亏损USD 47.64。
| 计算 | 指定值 | 含义 |
|---|---|---|
| 收盘门槛 | 1.10120 | Bid收盘必须严格高于该值 |
| 固定止损 | 1.09780 | 较低低点减去缓冲 |
| 价格目标 | 1.10890 | 实际入场至止损距离的两倍 |
| 现金预算 | USD 50 | 净值乘以风险比例 |
| 每手模型亏损 | USD 397 | 价格距离加佣金及预留 |
| 向下取整手数 | 0.12 lot | 向下取整,不能向上增加风险 |
| 模型亏损 | USD 47.64 | 条件预留,不是亏损上限 |
| 目标处模型净结果 | USD 85.56 | 条件结果,不是预测 |
按目标参考价,该手数的价格毛收益为USD 88.80。减去USD 0.84佣金和USD 2.40滑点预留,得到USD 85.56。价格距离的收益风险比是2,但净现金比率更低。同一预留在每种替代结果中各使用一次,而不是在一笔交易中使用两次。本例不计隔夜费,相关时应补计。止损与目标都不保证成交,这些数值也不是预期回报。
10. 测试完整顺序,包括失败
按时间顺序回放事件,同时保存拐点K线时间和确认时间。保留三元组身份、固定水平、各取消原因、信号收盘、首笔后续报价、点差、订单申请、实际成交、手数、成本及出场原因。最终图表不能证明当时已可获取这些输入。下方公式概括声明的规则,并非完整EA实现。
用历史Bid/Ask报价判断止损与目标先后及SELL失效。若两个出口都落在同一OHLC K线内而顺序不明,应标记歧义,并另外报告假定止损先发生的保守敏感性结果。不得选择有利顺序。缺报价造成的时间出场延迟必须使用下一笔真实报价并保留延迟记录。回测指南与成交成本指南说明相关数据问题。
在评估未使用时段之前固定规格。报告所有尝试的参数变体、合格候选、取消、报价失败、紧急平仓与已完成交易,以及净期望、回撤、换手和样本不确定性。检查相邻容差和不同提供方,不只挑选赢家。本文没有业绩研究。识别到形态、较高胜率或目标距离为止损两倍,都不能证明扣除成本后的盈利能力。
常见错误包括:b+2收完前使用b,激活后替换中间拐点,将等值视为严格突破,在历史信号收盘价入场,首笔报价失败后重试,以及为满足最小手数而向上取整、超出预算。双顶后仍可能继续上涨,双底后也可能继续下跌。新闻、跳空、点差扩大和成交失败都可能超出很小的名义风险预算。
可选:精确索引、门槛与仓位计算公式
low_pivot(j) = L[j] < min(L[j-2], L[j-1], L[j+1], L[j+2])
high_pivot(j) = H[j] > max(H[j-2], H[j-1], H[j+1], H[j+2])
pivot_known_at(j) = close_time[j+2]
c = b + 2; eligible_break_bars = [c+1, c+6]
buy_break(t) = C_Bid[t] > N + 2*pip
sell_break(t) = C_Bid[t] < N - 2*pip
buy_stop = min(L[a], L[b]) - 2*pip
sell_stop = max(H[a], H[b]) + 2*pip
buy_target = E + 2*(E-S); sell_target = E - 2*(S-E)
cash_budget = equity * 0.005
loss_per_lot = stop_pips * pip_value_per_lot + commission_per_lot + slippage_pips * pip_value_per_lot
lots = floor((cash_budget / loss_per_lot) / lot_step) * lot_step
11. 关于双形态策略的问题
第二个顶部或底部一出现就能入场吗?
那是另一套规则。本检测器要求第二个极值右侧的K线收完,再等待后续收盘突破。延迟是研究假设的一部分,回测中必须保留。较早入场不能借用当时尚不可得的确认信息。
如果拐点确认前颈线已经突破呢?
本规格将该三元组视为已经完成并排除,不在确认K线上追迟入场,也不假装第二个拐点更早就已知。其他处理方式可以独立研究,但须有各自结果及完整成交规则。
首笔报价不合格后可以再次尝试吗?
不可以。首次合格收盘就消耗候选。首笔报价迟到、过贵、无效或不可用,都应跳过并记录原因。之后更好的价格或再次突破不会恢复同一三元组。新候选必须是空仓时新确认的合格三元组。
目标距离是止损两倍就意味着盈利吗?
不意味着。价格距离比忽略胜率、成本、时间出场、跳空和成交失败。计算例中扣除成本后的现金比率更低。盈利能力需要在合适数据上验证完整顺序,并包括失败和歧义案例。
12. 来源与声明的范围
一手资料:IG Academy关于双顶、双底和颈线的说明;MetaQuotes关于时间序列索引、品种、tick及交易量属性、市价单价格和止损限制的文档。核对日期2026-10-19。严格拐点定义、阈值、期限、入场政策、出场及示例是本站声明的教学构造。来源并未验证其盈利能力,也未规定这些参数值。
外汇与杠杆交易风险很高。本文用于学习,不是投资建议。止损、确认规则及成本预留不能保证成交、限制亏损或获利。所有价格、图示和结果都是虚构的条件示例。