모멘텀 스윙 트레이딩 전략


생성 날짜: 2023-11-21 16:57:07 마지막으로 수정됨: 2023-11-21 16:57:20
복사: 1 클릭수: 564
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 스윙 트레이딩 전략

개요

이 전략은 부린 반지 지표와 동력 지표를 결합하여 부린 반지 회귀와 동력 돌파를 달성하는 포지션 거래 전략에 기반합니다. 부린 반지 아래에서 가격이 중간선을 돌파 할 때 더 많이하고, 부린 반지 위에서 가격이 중간선을 돌파 할 때 공백을 만들고, 목표 상환률을 달성한 후 평준화 된 상쇄 손실을 추적합니다.

전략 원칙

이 정책은 브린 대역 중선 sma를 평평선 지표로 사용하고, bandwidth는 argumentsmult를 통해*stdev 동적 조정. 가격이 아래에서 중선을 뚫을 때, 가격이 상행량을 얻는다는 것을 나타냅니다. 이 때 더 많이; 가격이 위에서 중선을 뚫을 때, 가격이 하행량을 얻는다는 것을 나타냅니다. 이 때 더 많은 공백을 뚫은 후 스톱 손실 파라미터를 설정하여 수익을 추적하고 위험을 제어합니다.

구체적으로, 브린 밴드의 계산은 length와 mult 두 개의 파라미터를 통해 완료, 길이 길이 중선의 주기를 결정,mult는 대역폭의 크기를 결정.enterLong와enterShort은 돌파의 시간을 판단,exitLong와exitShort은 출입 가격과 목표 스톱 손실 비율에 따라 스톱 손실 가격을 계산한다.

전략적 이점

이 전략은 평균 회귀와 동력 지표를 결합하여 트렌드 시작 단계에서 더 큰 상황을 순차적으로 포착할 수 있습니다. 단순한 평균을 추적하는 것과 비교하여, 부린 대역폭에 기반한 동력 판단을 증가시켜서 일부 가짜 돌파구를 필터링 할 수 있습니다. 스톱 손실 설정은 직접 입시 가격에 기반하여 수동 개입이 필요하지 않습니다.

전략적 위험

  • 부린 띠가 가격 맞추기에는 지연되어 있고, 부분적으로 놓칠 수도 있다.
  • 너무 느슨한 중지 설정은 손실 위험을 증가시킵니다.
  • 다중 거래에서 공백된 신호는 잘 잡히지 않을 수 있다.

브린 중선 주기, 대역폭 변수, 그리고 스톱 스펙트럼을 조정하여 최적화 할 수 있으며, 이는 전략이 다른 시장 상황에 더 잘 적응하도록 합니다.

전략 최적화

  • 거래량 또는 변동성 지표를 추가하여 낮은 양의 가짜 브레이크를 피하십시오.
  • param 부린 주기의 길이를, 너비 계수를, 스톱 패스트를 optimizing
  • 특정 시장 단계에 대해서만 더 많이 하거나 더 적게 하는 것
  • 트렌드 방향을 결정하는 기계 학습 모형에 참여합니다.

요약하다

이 전략은 브린带回归 및 동력 지표의 장점을 통합하여 트렌드 시작 시 시 시동적으로 일부 시장을 포착할 수 있으며, 파라미터 조정을 통해 다른 단계의 시장에 적응할 수 있으며, 비교적 보편적인 돌파구 시스템이다. 스톱로스 설치는 가격 계산으로부터 직접적으로 인위적 개입을 줄일 수 있다. 이 전략에는 또한 더 많은 보조 판단 지표 등을 추가하는 것과 같은 개선의 여지가 있으며, 이는 후속 연구 및 최적화에서 더욱 개선될 것이다.

전략 소스 코드
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BURATINO", overlay=true)

// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")

// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev

// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]

// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]

// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))

// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))

// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)

strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)

// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")