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


생성 날짜: 2024-02-05 12:05:10 마지막으로 수정됨: 2024-02-05 12:05:10
복사: 0 클릭수: 608
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

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

개요

이 전략은 쌍평평선과 슈퍼트렌드 두 지표를 통합적으로 사용하여 거래 신호를 구축하고, 다른 주기적 추세 방향을 판단하여 효율적인 수익을 창출합니다.

전략 원칙

이 전략은 MACD와 SuperTrend 두 지표를 사용하여 시장 진입 시기를 판단한다. 그 중 MACD 쌍평균선은 단기 경향 방향을 판단하고, Supertrend은 중장기 경향 방향을 판단한다.

빠른 선이 아래에서 위로 느린 선을 돌파할 때 구매 신호로, 이 때 중장기 슈퍼트렌드가 상승 추세인 경우, 최종 구매 신호를 생성하고, 더 많은 것을 만듭니다. 반대로, 빠른 선이 위에서 아래로 느린 선을 돌파할 때 판매 신호로, 이 때 중장기 슈퍼트렌드가 하락 추세인 경우, 최종 판매 신호를 생성하고, 공백을 만듭니다.

정지 및 정지값이 고정되어 있습니다.

우위 분석

이 전략의 가장 큰 장점은 쌍평균선과 슈퍼트렌드를 동시에 사용하여 시장의 방향을 판단하고, 중단기 및 중장기 결합하여 의사결정 효율성을 크게 향상시키고, 가짜 돌파구를 피하는 것입니다. 또한, 슈퍼트렌드는 시장의 변동성에 따라 조정 파라미터를 적용하여 더 넓은 시장 환경에 적응 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 고정된 중지 손해 차단 설정이 더 큰 수익 공간을 놓칠 수 있다는 것입니다. 또한, 중장기 및 중장기 판단이 일치하지 않으면 전략이 정상적으로 작동하지 않습니다. 우리는 중지 손해 차단 부동 설정으로이 위험을 줄일 수 있습니다.

최적화 방향

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

  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)