이중 이동 평균 크로스오버 전략과 함께 Intraday 스토카스틱 오시레이터

저자:차오장, 날짜: 2023-10-27 17:00:04
태그:

img

전반적인 설명

이 전략은 이중 이동 평균 크로스오버와 스토카스틱 오시레이터를 결합하여 효율적인 단기 거래를 위해 트렌드 역전 기회를 식별합니다. 가격이 과소매 지역에 진입하면 짧고 가격이 과소매 지역에 진입하면 길게 이동하여 중장기 트렌드의 반전을 잡습니다.

전략 논리

이 전략은 이중 이동 평균 크로스오버와 스토카스틱 오시레이터의 조합을 기반으로 합니다.

이중 이동 평균 크로스오버는 빠른 이동 평균, 느린 이동 평균 및 초연속 이동 평균으로 구성됩니다. 빠른 MA가 느린 MA보다 높을 때 그것은 구매 신호입니다. 빠른 MA가 느린 MA보다 낮을 때 그것은 판매 신호입니다. 이중 MA 크로스오버는 중장기 트렌드 반전 지점을 식별 할 수 있습니다.

스토카스틱 오시일레이터는 %K와 %D 값을 포함합니다. %K는 현재 클로즈가 지난 N 일 동안의 가장 높고 가장 낮은 가격에 상대적으로 어디에 있는지 보여줍니다. %D는 %K의 M일 간단한 이동 평균입니다. 80 이상의 값은 과잉 구매 수준을 의미하며 20 이하의 값은 과잉 판매 수준을 의미합니다. 스토카스틱 오시일레이터는 단기 과잉 구매 / 과잉 판매 구역을 식별 할 수 있습니다.

이 전략은 이중 MA 크로스오버와 스토카스틱 오시일레이터를 결합합니다. 스토카스틱이 과잉 구매 / 과잉 판매 수준을 표시 할 때 이중 MA 크로스오버에서 트렌드 역전 신호를 찾습니다. 이것은 단기 트렌드 역전을 추적하는 것을 목표로합니다.

이점 분석

이 전략의 장점:

  1. 이중 MA 크로스오버와 스토카스틱 오시레이터를 결합하여 중장기 및 단기 트렌드 역전을 식별합니다.

  2. 더 효과적인 이중 MA 크로스오버 반전 거래를 선택하기 위해 스토카스틱 과잉 구매/ 과잉 판매 신호를 사용한다.

  3. 명확한 거래 규칙, 실행하기 쉬운

  4. 다른 제품과 기간에 적합한 조정 가능한 거래 시간 및 달 매개 변수

  5. 위험을 통제하기 위해 손해를 멈추십시오.

위험 분석

이 전략의 위험은:

  1. 이중 MA는 잘못된 브레이크오웃을 가질 수 있습니다. 스토카스틱은 유효하지 않은 황소 / 곰의 오차를 가질 수 있으며 잘못된 거래 신호로 이어질 수 있습니다. 미세 조정 매개 변수 또는 콤보 확인을 위해 다른 지표를 추가하십시오.

  2. 기하급수적인 요소를 고려하지 않고 기술적인 지표에만 기반을 두고 있습니다. 주요 경제 사건에 실패할 수 있습니다. 경제 이벤트 위험 통제를 추가합니다.

  3. 정확한 MA 반전 시기를 파악하기 어렵고, 너무 긴 또는 너무 넓은 정지 문제가있을 수 있습니다.

  4. 부적절한 매개 변수 설정은 과도한 거래 또는 신호 품질이 떨어질 수 있습니다. 백테스팅을 통해 다른 제품 및 시간 프레임에 대한 매개 변수를 최적화하십시오.

  5. 단기 거래에 적합합니다. 장기 보유는 아닙니다.

최적화 방향

이 전략은 몇 가지 측면에서 최적화 될 수 있습니다.

  1. 신호 유효성을 향상시키기 위해 KDJ, MACD 등과 같은 더 많은 지표 조합을 테스트하십시오.

  2. 가짜 브레이크오웃을 피하기 위해 거래량 분석을 추가합니다.

  3. 더 정확한 반전 지점을 확인하기 위해 이중 MA 매개 변수를 최적화합니다.

  4. 스톱 로스 전략을 최적화하여 스톱 아웃의 가능성을 줄이세요.

  5. 주요 사건의 영향을 피하기 위해 경제 이벤트 리스크 제어 모듈을 추가합니다.

  6. 더 나은 적응력을 위해 매개 변수를 자동으로 최적화하기 위해 기계 학습 기술을 사용합니다.

  7. 가장 좋은 응용 프로그램을 찾기 위해 더 많은 제품과 시간 프레임에 대한 백테스트.

결론

이 전략은 이중 MA 크로스오버와 스토카스틱 황소/곰 오차에 의해 식별되는 중장기 트렌드 역전 지점에서 거래됩니다. 단일 지표를 사용하는 것과 비교하면 명확한 규칙으로 거래 수익성을 향상시킬 수 있습니다. 그러나 매개 변수 및 스톱 손실 최적화, 더 많은 필터 및 위험 통제가 필요한 위험도 있습니다. 전반적으로 신뢰할 수있는 중기 빈도 단기 거래 전략입니다.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000)
//WORKS FOR BTCUSD M30
//OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP
//Best Forex Hours are 7-21
//0 is Long Position
//1 is Short Position
//2 No position
mode=input(1, maxval=2, title="Mode")
lossLimit=input(10000, maxval=10000, title="Loss Limit")
hourStart=input(2, maxval=24, title="Hour Start")
hourStop=input(13, maxval=24, title="Hour Stop")

//Month selected for back testing. 0 is maximum number of months
monthSelected = input(0, maxval=12, title="Month Selected")

/////////////////////////////////////////////////

fast = 20, slow = 50, ultraSlow = 200
fastMA = sma(close, fast)
slowMA = sma(close, slow)
ultraSlowMA = sma(close, ultraSlow)

colorFast = red
colorSlow = black
colorUltraSlowMA = purple

if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240")
    fastMA := ema(close, fast)
    slowMA := ema(close, slow)
    ultraSlowMA := ema(close, ultraSlow)
    colorFast := orange
    colorSlow := gray
    colorUltraSlowMA := blue

p1 = plot(fastMA, color=colorFast)
p2 = plot(slowMA, color=colorSlow, linewidth=2)  
p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3)

fill(p1, p2, color = fastMA > slowMA ? green : red)

////////////////////////////////////////////////

ema150 = 200
ema150MA = ema(close, ema150)

smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1)
hh=highest(high,K)
ll=lowest(low,K)
k = sma((close-ll)/(hh-ll)*100, smooth)
d = sma(k, 3)
//plot(k, color=blue)
//plot(d, color=red)
//h0 = hline(80)
//h1 = hline(20)
//fill(h0, h1, color=purple, transp=95)


//plot(hour*100, color=red, linewidth=2)

stochiasticHigh = 80
stochiasticLow = 20

data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open
plotshape(data, style=shape.triangledown, location=location.belowbar, color=red)

data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open
plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green)

isData = 0
isData := isData[1]

    
if(isData == 0)
    if(data)
        if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13
            strategy.entry("SCALP SHORT", strategy.short)  
            isData := 1
else
    if(k<stochiasticLow and d<stochiasticLow)
        if(mode==1)
            strategy.close_all(when = true)
        isData := 0
        
isData2 = 0
isData2 := isData2[1]
    
if(isData2 == 0)
    if(data2)
        if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected))
            strategy.entry("SCALP LONG", strategy.long)  
            isData2 := 1
else
    if(k>stochiasticHigh and d>stochiasticHigh)
        if(mode==0)
            strategy.close_all(when = true)
        isData2 := 0

strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit)
strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit) 

더 많은