듀얼 타임프레임 슈퍼트렌드 추적 전략

저자:차오장, 날짜: 2023-09-22 14:27:52
태그:

전반적인 설명

이것은 이중 시간 프레임 슈퍼트렌드 추적 전략이다. 그것은 두 가지 다른 시간대에 슈퍼트렌드 지표를 적용합니다. 하나는 트렌드 방향을 결정하는 주요 시간 프레임으로, 하나는 항목을 필터하는 보조 시간 프레임으로. 두 시간 프레임의 슈퍼트렌드가 같은 방향으로있을 때만 입력하여 트렌드 반전 지점을 더 정확하게 캡처합니다.

전략 논리

이 전략의 핵심 지표는 슈퍼트렌드이다. 슈퍼트렌드는 가격 변동성을 계산함으로써 가격의 상대적 트렌드 방향을 결정한다. 이 전략은 두 가지 시간대에 슈퍼트렌드를 사용하여 각각 주 및 보조 시간 프레임에 대한 슈퍼트렌드 라인을 계산한다.

구체적인 거래 논리는 다음과 같습니다.

  1. 주요 시간 프레임 Supertrend의 방향을 전체 트렌드 방향으로 사용하십시오.

  2. 보조 시간 프레임 Supertrend가 같은 방향으로 신호를 발산 할 때 입력합니다.

  3. 스톱 로스를 설정하고 이윤 포인트를 취합니다.

  4. 주요 시간 프레임 슈퍼트렌드가 다시 돌면 종료

두 개의 시간 프레임 지표를 결합함으로써, 더 정확한 입력을 위해 일부 오차를 필터링 할 수 있습니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 이중 시간 프레임 조합은 더 정확한 트렌드 판단을 허용합니다.

  2. 슈퍼트렌드는 트렌드 변화에 민감하며 정확한 입력도 있습니다.

  3. 손실을 멈추고 수익을 통제하는 위험을 감수하십시오.

  4. 단순하고 직접적인 전략 논리, 이해하기 쉬운.

  5. 매개 변수는 다양한 제품에 맞게 설정할 수 있습니다.

위험 분석

주요 위험은 다음과 같습니다.

  1. 슈퍼트렌드 뒤떨어진 것은 잘못된 신호를 유발할 수 있습니다.

  2. 부적절한 스톱 로스 및 취득은 트렌드를 지나치게 추구하고 또는 조기 스톱 로스를 유발할 수 있습니다.

  3. 이중 시간 프레임은 짧은 반전을 놓칠 수 있습니다.

  4. 매개 변수 최적화는 역사적인 데이터에 의존합니다. 과도한 적합성의 위험이 있습니다.

  5. 거래비용은 고려하지 않습니다.

해결책은 다음과 같습니다.

  1. 지표 매개 변수를 조정하고, 콤보 검증을 위한 다른 지표를 추가합니다.

  2. 역동적으로 스톱 로스를 최적화하고 백테스트 결과를 기반으로 수익을 취합니다.

  3. 보조 판단으로 짧은 시간 프레임을 테스트합니다.

  4. 백테스트 데이터 범위를 확장하고, 멀티 시장 백테스트 검증을 합니다.

  5. 수수료와 미끄러짐과 같은 거래 비용을 추가합니다.

최적화 방향

이 전략은 다음과 같이 더 최적화 될 수 있습니다.

  1. 최적의 조합을 찾기 위해 더 많은 지표 조합을 테스트합니다.

  2. 매개 변수를 동적으로 최적화하기 위해 기계 학습을 이용합니다.

  3. 더 나은 리스크/리워드 비율을 위해 스톱 로스를 최적화하고 수익을 취합니다.

  4. 더 많은 시간 프레임을 조합하려고 합니다.

  5. 거래 수에 따라 수익을 취하고 손실을 멈추는 범위 조정

  6. 수수료와 미끄러짐 논리를 추가합니다.

  7. 그래픽 매개 변수 최적화 도구 개발

결론

이 전략은 이중 타임프레임 슈퍼트렌드 지표를 사용하여 비교적 정확한 트렌드 판단과 엔트리를 달성합니다. 스톱 로스 및 리프트를 설정하여 위험을 제어합니다. 전략 논리는 간단하고 명확하며 확장 및 최적화하기가 쉽습니다. 더 많은 지표를 도입하고 동적으로 매개 변수를 최적화하고 거래 비용을 추가하여 더욱 강력하게 개선 할 수 있습니다. 전반적으로이 전략은 좋은 참조 값을 보유하는 유용한 이중 타임프레임 트렌드 추적 아이디어를 제공합니다.


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0

res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=security(syminfo.tickerid,res,close)

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

MTrendUp:=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown:=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend := Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



더 많은