동적 마감 손절매 이동 평균 전략


생성 날짜: 2024-01-29 15:52:43 마지막으로 수정됨: 2024-01-29 15:52:43
복사: 0 클릭수: 376
1
집중하다
1214
수행원

동적 마감 손절매 이동 평균 전략

개요

이 전략은 동적 트레일링 스톱의 사고방식을 채택하여 ATR 및 가격 극치에 따라 장거리 상장 스톱 라인을 계산한다. Chandelier Exit의 아이디어와 결합하여, 상장 스톱 라인 방향에 따라 장거리 상장 방향을 판단한다. 상장 스톱 라인이 상향으로 돌파 할 때 낙관적이라고 판단하고, 더 많은 돈을 벌고, 상장 스톱 라인이 하향으로 돌파 할 때 낙관적이라고 판단하고, 무익하다.

이 전략은 스톱 로즈와 입시 신호 판단의 이중 기능을 동시에 수행한다.

전략 원칙

이 전략은 다음과 같은 부분들로 구성됩니다.

  1. ATR에 기반한 장기/단기 상장 손실 라인

사용자가 설정한 ATR 주기 길이와 배수mult을 기반으로 실시간으로 ATR을 계산한다. 그리고 ATR과 가격 극한값을 기반으로 장단위 스톱로드를 계산한다:

    longStop = 最高价 - ATR
    shortStop = 最低价 + ATR
  1. 거래의 방향을 결정하는 데

이전 K 선의 스톱라인과 현재 K 선의 스톱라인 비교. 현재 K 선의 스톱라인이 뚫리면 거래 신호를 발산한다:

    长仓止损线上方突破,做多
    短仓止损线下方突破,做空
  1. 리스크에 따라 수익률을 비교하여 스톱 로즈와 스톱 스을 설정합니다.

사용자가 설정한 RiskRewardRatio에 따라 ATR에서 스톱로스 거리와 스톱 거리를 계산한다. 포지션 개설 시에는 스톱로스 명령과 스톱 명령이 설정됩니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 동적 추적 상쇄, 적시 상쇄

이 전략은 스톱 라인을 동적으로 추적하여 적시에 스톱을 하고 하락 위험을 제어합니다.

  1. 동시에 손해 차단 및 입시 판단 기능이 있습니다.

이 전략의 스톱 손실 라인은 동시에 진입 판단 조건으로 전략 논리를 간소화한다.

  1. 리스크/이익 비율을 설정할 수 있습니다.

그리고 그 결과로, 그 결과로, 그 결과로, 그 결과로,

  1. 쉽게 이해할 수 있고 확장할 수 있습니다.

이 전략은 간단하고 이해하기 쉽고 확장성을 최적화하기 위해 구성되었습니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 이중적 위험

이 전략은 양자 거래 전략으로, 동시에 과잉과 적당의 위험을 감수한다.

  1. ATR 변수 의존

ATR 매개 변수 설정은 직접적으로 중지 손실 라인과 거래 빈도에 영향을 미칩니다. 잘못된 설정은 중지 손실이 너무 느슨하거나 거래 빈도가 너무 높을 수 있습니다.

  1. 트렌드 시장 적응성

이 전략은 평균선을 조정한 후의 돌파구에 더 적합하며, 너무 강한 추세가 있는 시나리오에는 적합하지 않습니다.

위와 같은 위험 요소에 대해 최적화할 수 있는 방법은 다음과 같습니다.

  1. 트렌드 지표와 함께

MA와 같은 트렌드 지표와 결합하여 시장의 흐름을 판단하고 역동적인 거래를 피하십시오.

  1. 최적화 변수 모음

ATR 변수와 리스크-이익 비율 변수를 최적화하여 스톱로스 및 스톱을 합리적으로 만듭니다.

  1. 필터링 조건을 추가

거래량이나 변동성 지표의 필터링 조건을 증가시켜 거래 품질을 보장합니다.

최적화 방향

이 전략에는 더 많은 최적화 가능성이 있습니다:

  1. 기계학습과 함께

기계 학습 모델을 사용하여 가격 추세를 예측하여 입시 정확도를 향상시킵니다.

  1. 옵션으로 무위험 포트폴리오를 구축하는 방법

옵션의 가격 변동률을 활용하여 무위험 스레드 포트폴리오를 구축하십시오.

  1. 다종종 크로스마켓 중개

다른 시장과 다른 품종들 사이에서 통계적 중개로 안정적인 알파를 얻을 수 있습니다.

  1. 알고리즘 거래

알고리즘 트레이딩 엔진을 통해 효율적인 전략 피드백과 실시 트레이딩.

요약하다

이 글은 동적 추적을 기반으로 한 정량 거래 전략을 심층적으로 분석한다. 이 전략은 동시에 손해 관리 및 거래 신호 판단 기능을 가지고 있으며 위험을 효과적으로 제어 할 수 있다. 우리는 또한 전략의 장점, 가능한 위험 및 후속 최적화 아이디어를 분석했다. 이 전략은 매우 실용적인 거래 전략이며, 추가 연구 및 응용에 가치가 있다.

전략 소스 코드
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")