市场结构摆动交易策略

CHoCH BOS IDM ATR RSI SL TP
创建日期: 2025-03-28 17:38:30 最后修改: 2025-03-28 17:38:45
复制: 5 点击次数: 51
2
关注
26
关注者

市场结构摆动交易策略 市场结构摆动交易策略

概述

市场结构摆动交易策略是一种基于市场结构变化、流动性捕获和趋势动量的先进交易方法。该策略通过分析价格变化的关键特征,识别潜在的趋势反转和延续机会,为交易者提供了一个系统化的交易决策框架。

策略原理

策略的核心原理基于四个关键指标: 1. 变化特征(Change of Character, CHoCH):通过识别价格趋势的转折点,判断市场潜在方向变化。 2. 结构突破(Break of Structure, BOS):确认趋势动量和方向性突破。 3. 诱导点(Inducements, IDM):捕捉市场中的流动性陷阱和资金移动。 4. 扫描(Sweeps):识别假突破和流动性抓取机会。

策略综合运用技术分析指标,包括平均真实波动范围(ATR)、相对强弱指数(RSI)和成交量,构建一个多维度的交易决策系统。

策略优势

  1. 系统性风险管理:通过ATR计算止损和止盈,有效控制单笔交易风险。
  2. 多重过滤条件:结合CHoCH、BOS、RSI和成交量,提高信号准确性。
  3. 动态仓位管理:使用权益百分比设置交易仓位,优化资金使用效率。
  4. 灵活的入场和出场机制:可根据市场结构动态调整交易策略。

策略风险

  1. 假突破风险:市场结构指标可能产生误导性信号。
  2. 参数敏感性:策略参数设置对performance有显著影响。
  3. 成交量和流动性风险:在低流动性市场可能表现不佳。
  4. 回撤控制:在持续趋势市场中可能面临较大回撤。

策略优化方向

  1. 引入机器学习算法:优化参数选择和信号识别。
  2. 增加多时间框架分析:提高信号的可靠性。
  3. 开发动态风险管理模块:根据市场波动性调整仓位。
  4. 集成更多技术指标:如MACD、布林带等,增强信号过滤。

总结

市场结构摆动交易策略是一种先进的量化交易方法,通过系统化的市场结构分析,为交易者提供了一个强大的交易决策框架。通过持续优化和风险管理,该策略有潜力在不同市场环境中获得稳定的交易表现。

策略源码
/*backtest
start: 2024-03-28 00:00:00
end: 2025-03-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Market Structure Swing Trading", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

// === Input Parameters ===
len = input(50, "CHoCH Detection Period")
shortLen = input(3, "IDM Detection Period")
atrMultiplierSL = input(2.0, "ATR Multiplier for Stop Loss")
atrMultiplierTP = input(3.0, "ATR Multiplier for Take Profit")
rsiPeriod = input(14, "RSI Period")
rsiOverbought = input(70, "RSI Overbought Level")
rsiOversold = input(30, "RSI Oversold Level")
volThreshold = input(1.2, "Volume Multiplier Threshold") 

// === ATR Calculation for SL & TP ===
atr = ta.atr(14)
stopLossLong = close - (atr * atrMultiplierSL)
takeProfitLong = close + (atr * atrMultiplierTP)
stopLossShort = close + (atr * atrMultiplierSL)
takeProfitShort = close - (atr * atrMultiplierTP)

// === RSI Filter ===
rsi = ta.rsi(close, rsiPeriod)
longConditionRSI = rsi < rsiOversold
shortConditionRSI = rsi > rsiOverbought

// === Volume Filter ===
volThresholdValue = ta.sma(volume, 20) * volThreshold
highVolume = volume > volThresholdValue

// === Market Structure Functions ===
swings(len) =>
    var int topx = na
    var int btmx = na
    upper = ta.highest(len)
    lower = ta.lowest(len)
    top = high[len] > upper ? high[len] : na
    btm = low[len] < lower ? low[len] : na
    topx := top ? bar_index[len] : topx
    btmx := btm ? bar_index[len] : btmx
    [top, topx, btm, btmx]

[top, topx, btm, btmx] = swings(len)

// === CHoCH Detection ===
var float topy = na
var float btmy = na
var os = 0
var top_crossed = false
var btm_crossed = false

if top
    topy := top
    top_crossed := false
if btm
    btmy := btm
    btm_crossed := false

if close > topy and not top_crossed
    os := 1
    top_crossed := true
if close < btmy and not btm_crossed
    os := 0
    btm_crossed := true

// === Break of Structure (BOS) ===
var float max = na
var float min = na
var int max_x1 = na
var int min_x1 = na

if os != os[1]
    max := high
    min := low
    max_x1 := bar_index
    min_x1 := bar_index

bullishBOS = close > max and os == 1
bearishBOS = close < min and os == 0

// === Trade Conditions with Filters ===
longEntry = bullishBOS and longConditionRSI and highVolume
shortEntry = bearishBOS and shortConditionRSI and highVolume

// === Execute Trades ===
if longEntry
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if shortEntry
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)

// === Plotting Market Structure ===
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL")
plot(topy, color=color.blue, title="CHoCH High")
plot(btmy, color=color.orange, title="CHoCH Low")
相关推荐
更多内容