Supertrend 및 CCI 지표를 기반으로 한 다중 시간 프레임 거래 전략


생성 날짜: 2024-01-18 15:09:33 마지막으로 수정됨: 2024-01-18 15:09:33
복사: 2 클릭수: 855
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Supertrend 및 CCI 지표를 기반으로 한 다중 시간 프레임 거래 전략

개요

이 전략은 슈퍼 트렌드 지표와 상품 통로 지표 ((CCI) 지표를 결합하여 여러 시간 프레임의 트렌드 추적과 거래 신호 생성을 구현합니다. 이 전략의 주요 아이디어는 CCI 지표를 사용하여 단기 트렌드 방향을 판단하는 동시에 슈퍼 트렌드 지표와 결합하여 중기 장기 트렌드 방향을 판단하는 것입니다.

전략 원칙

CCI 지표는 단기 경향을 판단합니다.

CCI 지표는 과매매 현상을 판단할 수 있으며, CCI 지표가 아래에서 위쪽으로 0축을 통과할 때 다목표 신호이며, 반대로 공수 신호이다. 이 전략은 이 특성을 활용하여 단기 트렌드 방향을 판단한다.

cci_period = input(28, "CCI Period")  
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")

위의 코드는 CCI 지표의 주기 및 중축 위치를 정의한다.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up 
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn

이 부분의 코드는 cci가 0축을 는지 여부를 판단하고, 만약 그렇다면 슈퍼 트렌드의 상반도를 업데이트하고, 하반도를 다면 하반도를 업데이트한다.

슈퍼 트렌드 지표는 중·장기 트렌드를 판단합니다.

슈퍼 트렌드 지표는 ATR 지표와 가격을 조합하여 중장기 트렌드의 방향을 판단할 수 있다. 가격이 슈퍼 트렌드를 돌파할 때 상반기 신호이며 하반기 신호이다.

이 전략의 슈퍼 트렌드 지표의 계산 공식은 다음과 같습니다.

Up=hl2-(Factor*atr(Pd)) 
Dn=hl2+(Factor*atr(Pd))

여기서 Factor와 Pd는 조정 가능한 변수이다.

트렌드 변수는 슈퍼 트렌드의 현재 방향을 판단합니다.

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)

CCI와 슈퍼 트렌드를 통합

CCI 지수와 슈퍼 트렌드 지수를 통합하여 이 전략은 다중 시간 프레임의 트렌드 판단을 구현한다. CCI 지수는 단기 트렌드를 포착하고, 슈퍼 트렌드 지수는 중기 장기 트렌드를 판단한다.

두 방향이 일치할 때, 더 신뢰할 수 있는 거래 신호가 생성된다.

isLong  = st_trend == 1
isShort = st_trend == -1

입시기는 단기 및 중기 동향, 출시기는 단기 및 중기 역향이다.

전략적 이점

다중 시간 프레임 판단

이 전략은 단기 및 중장기 트렌드 판단 지표를 통합하여 거래 신호를 더욱 신뢰할 수 있도록 합니다.

변수 조정

슈퍼 트렌드 지표의 Factor 파라미터와 CCI 지표의 cc_period는 시장에 따라 조정될 수 있어 전략이 더 유연하다.

간단하고 명확하게

전략 구조는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉬우며, 양자 거래 초보자에게 적합하다.

적용 범위

주식, 외환, 암호화폐 등의 시장에 적용할 수 있으며, 파라미터 설정에 따라 다른 품종에 적용할 수 있다.

전략적 위험과 해결 방법

가격 변동

가격이 급격하게 변동할 때 많은 가짜 신호가 나타납니다. 슈퍼 트렌드의 팩터 변수를 적절히 확대하여 전략의 거래 빈도를 낮출 수 있습니다.

그 후로

슈퍼 트렌드 자체로는 강세를 따라가는 것이 충분하지 않습니다. 동력 지표와 결합하여 트렌드 가속 단계의 트렌드를 추적하는 것이 고려 될 수 있습니다.

정지 전략

이 전략에는 정지 손실이 설정되어 있지 않으며, ATR 지표의 크기와 결합하여 trails 정지 손실을 설정할 수 있습니다.

전략 최적화 방향

시장 관련성

다양한 시장의 특성에 따라 슈퍼 트렌드 및 CCI의 매개 변수를 조정하여 전략의 안정성을 높인다.

동력 지표 결합

MACD, KDJ 등의 동력 지표와 결합하여, 트렌드 가속화 단계에서 트렌드를 추적하여 더 높은 수익을 얻을 수 있다.

통합 학습

기계 학습과 통합 학습 방법을 사용하여 전략 변수와 거래 규칙을 최적화하십시오.

요약하다

이 전략은 슈퍼 트렌드와 CCI 지표를 성공적으로 결합하여 여러 시간 프레임의 트렌드 판단을 구현합니다. 전략은 간단하고 이해하기 쉽고, 매개 변수가 조정 가능하며, 수익 잠재력이 높습니다. 조정, 중지 및 통합 학습과 같은 방법을 통해 추가적으로 최적화 할 수 있으며, 신뢰할 수 있고 안정적이며 효율적인 거래 전략이됩니다.

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

//@version=4
//@author=Daveatt

StrategyName = "Best Supertrend CCI Strategy"
ShortStrategyName = "Best Supertrend CCI Strategy"

strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true )

//////////////////////////
//* COLOR CONSTANTS *//
//////////////////////////

AQUA = #00FFFFFF
BLUE = #0000FFFF
RED  = #FF0000FF
LIME = #00FF00FF
GRAY = #808080FF
DARKRED   = #8B0000FF
DARKGREEN = #006400FF
GOLD = #FFD700
WHITE = color.white

// Plots
GREEN_LIGHT     = color.new(color.green, 40)
RED_LIGHT       = color.new(color.red, 40) 
BLUE_LIGHT      = color.new(color.aqua, 40)
PURPLE_LIGHT    = color.new(color.purple, 40) 

source = input(close)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// CCI /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
//UL = input(80, "Upper level")
//LL = input(20, "Lower Level")
ML = input(0, "CCI Mid Line pivot")

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// SUPERTREND /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float)
Pd=input(3, title="[ST] PD", minval=1,maxval = 100)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////// SUPERTREND DETECTION //////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

f_supertrend(Factor, Pd) =>

    Up=hl2-(Factor*atr(Pd))
    Dn=hl2+(Factor*atr(Pd))
    
    TrendUp = 0.0
    TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
    TrendDown = 0.0
    TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
    Trend = 0.0
    Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
    Tsl = Trend==1? TrendUp: TrendDown

    [Trend, Tsl]

[st_trend, st_tsl] = f_supertrend(Factor, Pd)

// Plot the ST
linecolor = close >= st_tsl ? color.green : color.red
plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0)

isLong  = st_trend == 1
isShort = st_trend == -1

longClose   = isLong[1] and isShort
shortClose  = isShort[1] and isLong

strategy.entry("Long", 1, when=isLong)
strategy.close("Long", when=longClose )

strategy.entry("Short", 0,  when=isShort)
strategy.close("Short", when=shortClose )