이중 이동 평균 슈퍼 트렌드 양적 거래 전략

저자:차오장, 날짜: 2024-02-05 12:05:10
태그:

img

전반적인 설명

이 전략은 이중 이동 평균과 슈퍼 트렌드 지표를 결합하여 거래 신호를 구성하고 높은 수익성을 달성하기 위해 다른 주기 조합을 통해 트렌드 방향을 판단합니다.

원칙

이 전략은 시장 진입 시기를 결정하기 위해 MACD와 슈퍼 트렌드 지표를 사용합니다. MACD 이중 이동 평균은 단기 트렌드 방향을 결정하고 슈퍼 트렌드는 중장기 트렌드 방향을 결정합니다.

빠른 선이 느린 선을 넘어 올라가면 구매 신호입니다. 이 시점에서 중장기 슈퍼 트렌드도 상승 추세라면 최종 구매 신호가 길게 이동하도록 생성됩니다. 반대로 빠른 선이 느린 선을 넘어 내려갈 때 판매 신호입니다. 이 시점에서 중장기 슈퍼 트렌드도 하락 추세라면 최종 판매 신호가 짧게 이동하도록 생성됩니다.

스톱 로즈와 영업이익은 고정된 값으로 설정됩니다.

이점 분석

이 전략의 가장 큰 장점은 시장 방향을 결정하기 위해 이중 이동 평균과 슈퍼트렌드를 모두 사용하여 중단기 및 중장기 분석을 결합하여 의사 결정 효율성을 크게 향상시키고 잘못된 브레이크오프를 방지한다는 것입니다. 또한 슈퍼트렌드는 시장 변동성에 따라 매개 변수를 조정하여 더 넓은 시장 환경에 적응 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 고정 스톱 로스 설정과 수익을 취하는 설정이 더 큰 수익 기회를 놓칠 수 있다는 것입니다. 또한, 중단기 및 중장기 판단에 차이가 있다면 전략이 제대로 작동하지 않을 것입니다. 우리는 부동 스톱 로스 설정과 수익을 취함으로써이 위험을 줄일 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 스톱 러스 및 영업 취득을 위한 동적 조정 메커니즘을 강화하고 시장 변동성과 추세에 따라 스톱 러스 및 영업 취득을 설정합니다.

  2. MACD 매개 변수를 최적화하여 목표 품종에 더 적합한 이동 평균 매개 변수를 찾습니다.

  3. 시장에 대한 민감성을 조정하기 위해 슈퍼트렌드 매개 변수를 최적화합니다.

  4. 판단을 위한 다른 지표를 증가시켜 더 많은 차원 신호를 제공하고 전략 성과를 향상시킵니다.

요약

이 전략은 이중 이동 평균 및 슈퍼 트렌드 지표의 장점을 성공적으로 결합합니다. 다른 사이클 판단을 결합함으로써 잘못된 신호를 필터링하고 트렌딩 시장에서 더 나은 수익을 얻을 수 있습니다. 우리는 매개 변수 최적화 및 메커니즘 조정으로 이 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


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=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.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 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

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)


더 많은