듀얼 타임 축 변동성 스프레드 트레이딩 전략


생성 날짜: 2024-02-18 15:31:32 마지막으로 수정됨: 2024-02-18 15:31:32
복사: 0 클릭수: 608
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

듀얼 타임 축 변동성 스프레드 트레이딩 전략

개요

이중 시간축 변동율 가격차 거래 전략은 두 개의 다른 시간 주기 RSI 지표 사이의 가격차를 계산하여 시장의 과매매 과매매 상태를 판단하여 낮은 위험을 실현하는 트렌드 거래를 수행합니다.

전략 원칙

이 전략의 핵심 지표는 ShortTermXtrender와 longTermXtrender이다. shortTermXtrender는 단기 시간 축에 대한 RSI 가격 차이를 계산하고, longTermXtrender는 장기 시간 축에 대한 RSI 가격 차이를 계산한다.

단기 시간축은 7일 EMA와 4일 LMA의 가격차이를 이용하여 RSI를 계산하고, 다시 50의 가격차이를 하여 shortTermXtrender을 구성한다. 장기 시간축은 4일 EMA의 RSI와 50의 가격차이를 이용하여 longTermXtrender을 구성한다.

shortTermXtrender에 0을 입으면 더한다; longTermXtrender에 0을 입으면 더한다. 더한 후의 중지 손실 원칙은 shortTermXtrender 아래 0을 입으면 중단된다; longTermXtrender 아래 0을 입으면 또한 중단된다.

그래서 더 많은 가짜 돌파구를 필터링 할 수 있습니다.

우위 분석

이 전략의 가장 큰 장점은 트렌드를 정확하게 판단하는 것이다. 이중 시간축과 함께 사용하면, 잡음을 효과적으로 필터링하여 목표 트렌드 방향을 고정시킬 수 있다. 이것은 낮은 위험의 트렌드 추적 거래를 보장한다.

또한, 전략은 파라미터를 최적화 할 수있는 공간을 제공합니다. 사용자는 다양한 품종과 시간 주기, SMA 주기, RSI 파라미터 등을 조정하여 전략 효과를 최적화 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 과잉 공백 판단 오류에 있다. 불안정한 상황에서는 잘못된 신호가 발생하기 쉽다. 이 때 여전히 포지션을 열면 손실의 위험에 직면할 수 있다.

또한, 매개 변수 설정이 잘못되면 효과가 좋지 않습니다. 시간 주기 매개 변수가 너무 짧으면 판단 오류의 확률이 증가합니다. 시간 주기 매개 변수가 너무 길면 트렌드 기회를 놓치게됩니다. 이것은 사용자가 다른 시장에 대한 매개 변수 테스트와 최적화를 필요로합니다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.

  1. 장치를 추가한다. 현재 전략에는 장치가 설정되어 있지 않으며, 목표 수익이 달성된 후 적시에 장치를 설정할 수 있다.

  2. 포지션 관리를 추가한다. 자산 규모, 변동성 등 지표에 따라 포지션을 동적으로 조정할 수 있다.

  3. 다양한 품종의 파라미터 설정을 테스트한다. 사용자는 햇빛, 60분 등과 같은 다른 시간 주기에서 시작하여 피드백을 통해 최적의 파라미터 조합을 테스트한다.

  4. 기계학습 보조 판단을 추가한다. 상황 유형을 판단하는 모델을 훈련시킬 수 있어 전략 매개 변수를 동적으로 조정하여 승률을 높인다.

요약하다

이중 시간축 변동율 가격차 거래 전략은 이중 시간축 지표를 구축하여 효율적인 트렌드 캡처를 구현한다. 전략 최적화 공간은 넓고, 사용자는 파라미터 조정, 스톱 관리, 포지션 관리 등의 방법으로 최적화 할 수 있으므로 더 나은 전략 효과를 얻을 수 있다. 이 전략은 거래 경험이있는 사용자에 적합하다.

전략 소스 코드
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)