동적 추세선 돌파 반전 거래 전략

QTY MA
생성 날짜: 2024-12-27 14:14:42 마지막으로 수정됨: 2024-12-27 14:14:42
복사: 0 클릭수: 421
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 추세선 돌파 반전 거래 전략

개요

이 전략은 선형 회귀 트렌드 라인을 기반으로 한 브레이크 트레이딩 시스템이다. 가격의 선형 회귀 트렌드 라인을 계산하여 가격의 트렌드 라인을 돌파 할 때 거래하고, 손실 중지 및 반수 거래 메커니즘을 설정한다. 전략의 핵심 아이디어는 가격의 트렌드 라인을 돌파 한 후의 지속적인 행동을 포착하는 동시에 반수 거래 메커니즘을 통해 잘못된 신호에 대응하는 것이다.

전략 원칙

전략은 ta.linreg 함수를 사용하여 지정된 주기의 선형 회귀 트렌드 라인을 주요 트렌드 판단 기준으로 계산한다. 가격이 상승으로 트렌드 라인을 깨고 설정된 임계치를 넘어서면, 시스템은 멀티 신호를 발생시킨다. 가격이 하향으로 트렌드 라인을 깨고 설정된 임계치를 넘어서면, 시스템은 텅 빈 신호를 발생시킨다. 전략은 일방향 포지션 보유 메커니즘을 사용한다. 즉, 동시에 다중 또는 공백 포지션을 보유하는 것이 허용된다.

전략적 이점

  1. 트렌드 추적성: 선형 회귀 트렌드 라인을 사용하면 시장의 흐름을 효과적으로 포착하고 가짜 돌파구를 줄일 수 있습니다.
  2. 리스크 제어: 단편 거래의 위험을 효과적으로 제어할 수 있는 스톱 로드 스 메커니즘을 설정했다.
  3. 역상장 메커니즘: 스톱로즈 때 역상장 개시하고 포지션을 두 배로, 트렌드가 역전될 때 포지션 지향을 빠르게 조정할 수 있다.
  4. 브레이크 확인 메커니즘: 브레이크 값을 설정하여 작은 변동을 필터링하여 거래 신호의 신뢰성을 향상시킵니다.
  5. 포지션 관리의 유연성: 최대 거래량 제한과 일방 포지션 관리 메커니즘을 통해 전체 포지션 위험을 효과적으로 제어하십시오.

전략적 위험

  1. 흔들림 시장 위험: 가로판 흔들림 시장에서 종종 가짜 브레이크 신호를 유발할 수 있으며, 이로 인해 연속적인 스톱 손실이 발생할 수 있다.
  2. 반수 거래 위험: 반수 가설은 시장의 급격한 변동이 있을 때 손실이 급격히 확대될 수 있다.
  3. 변수 민감성: 전략 효과는 변수 설정에 크게 의존하며, 잘못된 변수는 과도한 거래 또는 놓친 기회를 초래할 수 있다.
  4. 슬라이드 포인트 효과: 급속한 상황에서는, 스톱 스톱 주문의 실제 거래 가격이 예상보다 큰 오차가 있을 수 있다.
  5. 재원 관리 위험: 역수 곱셈을 잘못 설정하면 재원이 너무 급진적으로 사용될 수 있다.

전략 최적화 방향

  1. 변동률 지표의 도입: 시장 변동률의 동성에 따라 돌파구를 조정하여 다양한 시장 환경에 대한 전략의 적응력을 향상시킵니다.
  2. 최적화 반수 메커니즘: 반수 조건 판단을 강화하여, 트렌드 강도 지표와 결합하여, 부적절한 시장 환경에서 반수 거래를 피한다.
  3. 포지션 관리를 개선: 동적 포지션 관리 시스템을 도입하여 계좌의 순가치와 시장의 변동에 따라 포지션 개수를 조정한다.
  4. 시장 환경 필터링을 추가합니다: 추세 강도 및 시장 상태 판단을 추가하고 불리한 시장 환경에서 거래 횟수를 줄입니다.
  5. 최적화 중지 방법: 이동 중지 또는 ATR 기반의 동적 중단을 도입하여 손실을 줄이는 유연성을 향상시킵니다.

요약하다

이 전략은 선형적인 회귀 트렌드 라인과 돌파 거래 사상을 통해 완전한 거래 시스템을 구축한다. 손해 차단 및 반수 거래 메커니즘을 통해 위험을 관리하고, 좋은 트렌드 추적 능력을 가지고 있다. 그러나 전략은 파라미터 설정 및 시장 환경 선택에 신중해야하며, 실물 거래 전에 충분한 파라미터 최적화 및 재검토를 권장한다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BTC Trendline Strategy - 1min - One Direction", overlay=true)

// 输入设置
stop_loss_pct = input.float(10, title="止损百分比", minval=0.1, step=0.1) / 100
take_profit_pct = input.float(10, title="止盈百分比", minval=0.1, step=0.1) / 100
multiplier = input.int(2, title="止损触发时翻倍倍数", minval=1)
length = input.int(20, title="趋势线计算周期", minval=1)
breakout_threshold = input.float(1, title="突破幅度百分比", minval=0.1) / 100  // 设置突破的幅度条件
max_qty = 1000000000000.0  // 设置最大允许的交易量

// 计算线性回归趋势线
regression = ta.linreg(close, length, 0)  // 使用线性回归计算价格的趋势线

// 绘制趋势线
plot(regression, color=color.blue, linewidth=2, title="线性回归趋势线")

// 判断突破条件:增加一个价格偏差条件
long_condition = close > (regression * (1 + breakout_threshold))  // 当前价格高于趋势线且突破幅度超过设定百分比时做多
short_condition = close < (regression * (1 - breakout_threshold))  // 当前价格低于趋势线且突破幅度超过设定百分比时做空

// 确保每次只能有一个方向持仓:避免多空同时持仓
if (strategy.position_size == 0)  // 当前没有持仓时
    if (long_condition)
        strategy.entry("Long", strategy.long)
    if (short_condition)
        strategy.entry("Short", strategy.short)

// 止损和止盈设置
long_stop_loss = strategy.position_avg_price * (1 - stop_loss_pct)
long_take_profit = strategy.position_avg_price * (1 + take_profit_pct)
short_stop_loss = strategy.position_avg_price * (1 + stop_loss_pct)
short_take_profit = strategy.position_avg_price * (1 - take_profit_pct)

// 绘制止损和止盈线,便于调试
plot(long_stop_loss, color=color.red, linewidth=1, title="Long Stop Loss")
plot(long_take_profit, color=color.green, linewidth=1, title="Long Take Profit")
plot(short_stop_loss, color=color.red, linewidth=1, title="Short Stop Loss")
plot(short_take_profit, color=color.green, linewidth=1, title="Short Take Profit")

// 止损和止盈退出策略
strategy.exit("LongExit", from_entry="Long", stop=long_stop_loss, limit=long_take_profit)
strategy.exit("ShortExit", from_entry="Short", stop=short_stop_loss, limit=short_take_profit)

// 反手交易逻辑
reverse_qty = math.min(math.abs(strategy.position_size) * multiplier, max_qty)  // 限制最大交易量
if (strategy.position_size < 0 and close > short_stop_loss)  // 空单止损时,反手做多并翻倍仓位
    strategy.entry("Long Reverse", strategy.long, qty=reverse_qty)

if (strategy.position_size > 0 and close < long_stop_loss)  // 多单止损时,反手做空并翻倍仓位
    strategy.entry("Short Reverse", strategy.short, qty=reverse_qty)

// 打印日志帮助调试止损
if (strategy.position_size > 0)
    label.new(bar_index, close, text="Long SL: " + str.tostring(long_stop_loss), color=color.green, style=label.style_label_up)
    
if (strategy.position_size < 0)
    label.new(bar_index, close, text="Short SL: " + str.tostring(short_stop_loss), color=color.red, style=label.style_label_down)