이 전략은 쌍 시간 프레임의 초 트렌드 추적 전략이다. 이 전략은 동시에 두 개의 서로 다른 주기의 초 트렌드 지표를 적용한다. 하나는 주요 시간 프레임으로 트렌드 방향을 판단하고, 하나는 보조 시간 프레임으로 필터링한다. 두 시간 프레임의 초 트렌드 지표가 동시적으로 들어올 때만 트렌드 전환점을 더 정확하게 포착할 수 있다.
이 전략의 핵심 지표는 슈퍼 트렌드 지표이다. 슈퍼 트렌드 지표는 가격 분산차를 계산하여 가격의 상대적인 트렌드 방향을 판단한다. 전략은 두 개의 시간 주기의 슈퍼 트렌드 지표를 사용하여 각각 메인 시간 프레임과 보조 시간 프레임의 슈퍼 트렌드 라인을 계산한다.
거래 논리는 다음과 같습니다.
메인 타임 프레임의 트렌드 라인을 넘어가는 방향을 대 트렌드 방향으로 판단한다.
보조 시간 프레임 초 트렌드 라인이 위치 동방향 신호를 발산할 때 출입한다.
Stop Loss Stop Stop을 설정합니다.
메인 타임 프레임 초 트렌드 라인이 다시 변할 때 평행한다.
이렇게 두 개의 주기 지표를 조합하여, 몇 가지 오차 신호를 필터링하여 진입을 더 정확하게 할 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 두 개의 시간 프레임의 조합은 트렌드를 더 정확하게 판단할 수 있습니다.
초트렌드 지표는 트렌드 변화에 민감하고, 입시 정확하다.
스탠드피드 지점을 설정하여 위험을 조절할 수 있다.
전략적 논리는 간단하고 직설적이며 이해하기 쉽다.
다양한 품종에 적응할 수 있도록 스스로 최적화할 수 있다.
이 전략의 주요 위험은 다음과 같습니다.
트렌드 이상 지표의 지연은 신호를 잘못 판단할 수 있다.
손해 차단 장치의 잘못된 설정은 과도한 추적이나 의도적인 손상을 초래할 수 있다.
이중 시간 프레임 포지션은 짧은 회귀 기회를 놓칠 수 있습니다.
변수 최적화는 역사적 데이터에 의존하며, 과대응의 위험이 존재한다.
거래 비용의 영향을 고려하지 않고
대응방법:
다른 지표 조합 검증을 도입하여 지표 파라미터를 적절하게 조정하십시오.
역학적 최적화 스톱 로드 위치
더 짧은 테스트 사이클을 보조 판단으로 사용한다.
데이터 재검토 범위를 확장하고, 다중 시장 재검토 검증을 실시한다.
거래비용은 수수료, 슬라이드 포인트 등으로 계산됩니다.
이 전략은 다음과 같은 측면에서 더욱 개선될 수 있습니다.
더 많은 지표의 조합을 테스트하여 최적의 조합을 찾습니다.
기계 학습 방법을 도입하여 동적으로 최적화 매개 변수를 도입한다.
손실을 막는 전략을 최적화하고 수익/손실 비율을 개선한다.
여러 시간 주기의 조합 효과를 시도한다.
거래 수에 따라 스톱 스톱 손실 범위를 조정하십시오.
추가 수수료와 슬라이드 포인트의 계산 논리
그래픽 변수 최적화 도구를 개발한다.
이 전략은 쌍 시간 프레임 초 트렌드 지표를 통해 보다 정확한 트렌드 판단과 엔트리를 구현한다. 스톱 로드 스 제어 위험을 설정한다. 전략 논리는 간단하고 명확하며 확장하기 쉬운 최적화이다. 후기에는 더 많은 지표, 동적 최적화 파라미터, 거래 비용 계산 등을 도입하여 전략을 더 안정적으로 개선 할 수 있다. 전체적으로 이 전략은 쌍 시간 프레임 트렌드 추적 방법을 제공하며 좋은 참고 가치를 가지고 있다.
/*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)