트렌드 필터링 및 위험 관리 시스템과 결합된 동적 지원 및 저항 돌파 거래 전략

SMA MA RR RATIO risk management
생성 날짜: 2025-02-20 15:51:23 마지막으로 수정됨: 2025-02-27 17:33:24
복사: 1 클릭수: 347
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

트렌드 필터링 및 위험 관리 시스템과 결합된 동적 지원 및 저항 돌파 거래 전략 트렌드 필터링 및 위험 관리 시스템과 결합된 동적 지원 및 저항 돌파 거래 전략

개요

이것은 지지부진한 저항 영역을 뚫는 것을 기반으로 한 거래 전략이며, 트렌드 필터링과 위험 관리 시스템을 결합합니다. 전략은 역동적으로 중요한 가격 수준을 식별하여 잠재적인 거래 기회를 확인하고, 이동 평균을 사용하여 시장의 추세를 확인합니다. 이 전략은 보수적인 자금 관리 방법을 채택하고, 거래 당 위험은 계좌 자금의 1% 내에 제한되며, 2:1의 수익 위험 비율을 사용하여 중지 위치를 설정합니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 구성 요소를 포함합니다.

  1. 잠재적인 지지 저항 영역을 식별하기 위해 축의 고점과 저점을 사용합니다.
  2. 가격 이동 비율을 설정하여 지지/저항 범위를 생성합니다.
  3. 200일 이동 평균을 트렌드 필터로 사용함
  4. 그래프 형태를 통해 돌파구의 유효성을 확인
  5. 엄격한 자금 관리 규칙을 적용하여 거래의 위험을 통제합니다. 가격이 저항 영역을 뚫고 상승하는 경우, 시스템은 다단위 포지션을 개설합니다. 가격이 지지 영역을 넘어 하향하는 경우, 시스템은 빈 상위 포지션을 개설합니다.

전략적 이점

  1. 동적으로 시장 구조를 식별하는 전략 - 전략은 시장 변화에 따라 중요한 가격 수준을 자동으로 식별하고 업데이트 할 수 있습니다.
  2. 다중 확인 메커니즘 - 트렌드 필터링과 필터링 그래프 확인을 결합하여 가짜 침입의 위험을 줄입니다.
  3. 좋은 리스크 관리 - 고정된 리스크 규칙을 사용하여 계좌 자금을 보호하십시오.
  4. 명확한 수익 목표 - 2: 1의 수익 리스크를 사용하여 정지 위치를 설정합니다.
  5. 시각화 거래 신호 - 도표에 지지 저항 영역과 스톱 라인을 명확하게 표시

전략적 위험

  1. 시장의 변동 위험 - 높은 변동성의 기간 동안 실제 거래의 효과에 영향을 미칠 수 있는 슬라이드 포인트가 발생할 수 있습니다
  2. 트렌드 리버스 위험 - 시장을 돌파한 후 급격하게 역전될 수 있으며, 이로 인해 손실이 발생할 수 있습니다.
  3. 매개 변수 최적화 위험 - 과도한 최적화 매개 변수가 과다 적합성을 초래할 수 있다
  4. 자금 관리 위험 - 연쇄 손실은 계정 성장에 영향을 미칠 수 있습니다. 이러한 위험을 관리하기 위해, 다양한 시장 상황을 재검토하고, 매개 변수 설정을 조정하는 것이 좋습니다.

전략 최적화 방향

  1. 동적으로 지원 저항 영역의 폭을 조정 - 시장의 변동에 따라 영역 범위를 자동으로 조정
  2. 트랜지먼트 확인이 증가 - 트랜지먼트 필터 조건이 브레이크 신호에 추가
  3. 트렌드 필터를 최적화 - 다중 주기 트렌드 확인을 고려하십시오
  4. 개선된 정지 전략 - 동적 정지를 실현하고 시장 상황에 따라 수익 목표를 조정합니다.
  5. 시간 필터를 추가하여 시장의 큰 변동이 있는 시간대에 거래하는 것을 피하십시오.

요약하다

이것은 기술 분석과 위험 관리 원칙을 결합하여 체계화된 거래 방법을 제공하는 잘 구성된 거래 전략입니다. 전략의 장점은 전체적인 거래 규칙과 엄격한 위험 통제에 있습니다. 그러나 거래자가 그것의 한계를 이해하고 실제 거래 상황에 따라 적절하게 최적화 및 조정해야 합니다. 지속적인 개선과 검증으로, 이 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 것으로 예상됩니다.

전략 소스 코드
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("支撑/阻力区域突破策略(2倍止盈 + 蜡烛确认 + 趋势过滤)", overlay=true, initial_capital=10000, currency=currency.USD, pyramiding=0, calc_on_order_fills=true, calc_on_every_tick=true)

// 用户输入设置
pivotLen = input.int(title="枢轴识别窗口长度", defval=5, minval=1)
zoneOffsetPercent = input.float(title="区域偏移百分比 (%)", defval=0.1, step=0.1)
maLength = input.int(200, title="移动平均线周期")

// 趋势指标: 简单移动平均线(SMA)
trendMA = ta.sma(close, maLength)

// 识别高点和低点(枢轴高点/低点)
ph = ta.pivothigh(high, pivotLen, pivotLen)
pl = ta.pivotlow(low, pivotLen, pivotLen)

// 存储最近的阻力位和支撑位
var float resistanceLevel = na
var int resistanceBar = na
if not na(ph)
    resistanceLevel := ph
    resistanceBar := bar_index - pivotLen

var float supportLevel = na
var int supportBar = na
if not na(pl)
    supportLevel := pl
    supportBar := bar_index - pivotLen

// 将阻力和支撑区域绘制为区域框
if not na(resistanceLevel)
    resOffset = resistanceLevel * (zoneOffsetPercent / 100)
    resTop = resistanceLevel + resOffset
    resBottom = resistanceLevel - resOffset


if not na(supportLevel)
    supOffset = supportLevel * (zoneOffsetPercent / 100)
    supTop = supportLevel + supOffset
    supBottom = supportLevel - supOffset


// 风险管理: 定义资金、风险百分比和计算风险金额
riskCapital = 10000.0
riskPercent = 0.01
riskAmount = riskCapital * riskPercent   // 1% of $10,000 = $100

// activeStop变量用于显示止损位
var float activeStop = na
if strategy.position_size == 0
    activeStop := na

// 确定趋势方向
isUptrend = close > trendMA   // 上升趋势(价格在MA之上)
isDowntrend = close < trendMA  // 下降趋势(价格在MA之下)

// 定义突破蜡烛和确认蜡烛
var bool breakoutUp = false
var bool breakoutDown = false

if not na(resistanceLevel) and close[1] > resistanceLevel and open[1] < resistanceLevel
    breakoutUp := true
else
    breakoutUp := false

if not na(supportLevel) and close[1] < supportLevel and open[1] > supportLevel
    breakoutDown := true
else
    breakoutDown := false

// 突破确认: 下一根蜡烛必须在突破方向收盘
confirmLong = breakoutUp and close > close[1] and strategy.position_size == 0 and isUptrend
confirmShort = breakoutDown and close < close[1] and strategy.position_size == 0 and isDowntrend

// 做多入场: 确认蜡烛 + 在突破蜡烛低点设置止损
if confirmLong
    entryPrice = close
    stopLevelLong = low[1]
    riskPerUnit = entryPrice - stopLevelLong
    if riskPerUnit > 0
        qty = riskAmount / riskPerUnit
        activeStop := stopLevelLong
        takeProfitLong = entryPrice + (riskPerUnit * 2)  // 止盈设为止损的2倍
        strategy.entry("Long", strategy.long, qty=qty)
        strategy.exit("Exit Long", from_entry="Long", stop=stopLevelLong, limit=takeProfitLong)

// 做空入场: 确认蜡烛 + 在突破蜡烛高点设置止损
if confirmShort
    entryPrice = close
    stopLevelShort = high[1]
    riskPerUnit = stopLevelShort - entryPrice
    if riskPerUnit > 0
        qty = riskAmount / riskPerUnit
        activeStop := stopLevelShort
        takeProfitShort = entryPrice - (riskPerUnit * 2)  // 止盈设为止损的2倍
        strategy.entry("Short", strategy.short, qty=qty)
        strategy.exit("Exit Short", from_entry="Short", stop=stopLevelShort, limit=takeProfitShort)

// 当有持仓时在图表上显示止损线(水平线)
plot(strategy.position_size != 0 ? activeStop : na, title="止损线", color=color.red, linewidth=2, style=plot.style_line)

// 在图表上显示移动平均线
plot(trendMA, title="趋势MA", color=color.blue, linewidth=2)