이중 시간 프레임 변동성 스프레드 거래 전략

저자:차오장, 날짜: 2024-02-18 15:31:32
태그:

img

전반적인 설명

이중 시간 프레임 변동성 스프레드 거래 전략은 낮은 위험 트렌드 거래를 구현하기 위해 두 가지 다른 시간 사이클의 RSI 지표 사이의 스프레드를 계산하여 시장의 과반 구매/ 과반 판매 상태를 판단합니다.

전략 원칙

이 전략의 핵심 지표는 shortTermXtrender와 longTermXtrender입니다. shortTermXtrender는 단기 시간 프레임에서 RSI 스프레드를 계산하고, longTermXtrender는 장기 시간 프레임에서 RSI 스프레드를 계산합니다.

단기 시간 프레임은 RSI를 계산하기 위해 7일 EMA와 4일 LMA 사이의 가격 차이를 채택하고, 50과 가격 차이를 계산하면 shortTermXtrender를 구성합니다.

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)


더 많은