이중 스토카스틱 전략은 현재 기간 및 여러 시간 프레임의 스토카스틱 지표를 계산하여 상승 및 하락 지역을 판단하여 낮은 가격으로 구매하고 높은 가격으로 판매하는 것을 목표로합니다. 현재 기간과 기간의 3 배의 스토카스틱 지수를 계산하고 트렌드를 추적하기 위해 다른 시간 프레임 지표의 크로스오버를 기반으로 거래 신호를 생성합니다.
이 전략은 두 개의 스토카스틱 지표 세트를 동시에 계산합니다. 첫 번째 세트는 현재 기간의 스토카스틱, 즉 K 및 D 값입니다. 두 번째 세트는 현재 기간의 3 배의 스토카스틱, 즉 MTFK 및 MTFD입니다.
MTFK가 50을 넘고 현재 K가 D보다 크면, 바이 신호가 생성되며, 상승 부위가 길어지도록 표시됩니다. MTFD가 50을 넘고 현재 K가 D보다 작을 때, 판매 신호가 생성되며, 하락 부위가 짧아지도록 표시됩니다.
따라서 이 전략은 두 개의 스토카스틱 지표를 사용하여 상승 및 하락 지역을 판단하고 가격 추세를 추적합니다. 상승 지역에서 길고 하락 지역에서 짧게 이동하여 낮은 가격으로 구매하고 높은 가격으로 판매하는 목표를 달성합니다.
구체적으로, 긴 입력 논리는:
longCondition = crossover(mtfK, 50) and k>50 and k>d and mtfK>mtfD
짧은 입문 논리는 다음과 같습니다.
shortCondition = crossunder(mtfD, 50) and k<50 and k<d and mtfK<mtfD
여기서 mtfK는 3x 기간의 K값이고, mtfD는 3x 기간의 D값이다. mtfK가 50위와 k>d를 넘을 때 긴 신호가 생성된다. mtfD가 50위와 k
이 전략은 또한 스톱 로스 로직을 설정합니다. 긴 경우, mtfD가 상단역 아래를 넘으면, 근접 신호가 생성됩니다. 짧은 경우, mtfK가 하단역 위에 넘으면, 근접 신호가 유발됩니다.
이 전략의 장점은 다음과 같습니다.
이중 스토카스틱을 사용하면 상승권과 하락권에 대한 더 정확한 판단이 가능합니다. 현재 기간 지표는 단기 트렌드를 판단하고 더 큰 기간 지표는 장기 트렌드를 판단합니다. 두 가지를 결합하면 트렌드를 더 잘 파악 할 수 있습니다.
서로 다른 시간 프레임 지표의 크로스오버에 기반한 거래는 트렌드를 효과적으로 추적하고 낮은 구매와 높은 판매를 달성 할 수 있습니다.
스톱 로스 로직은 위험을 통제하고 손실을 어느 정도 제한하는 데 도움이 됩니다.
전략 논리는 간단하고 명확하고, 이해하기 쉽고 실시간 거래에 적용됩니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
이중 스토카스틱스는 잘못된 신호를 생성하여 불필요한 거래를 유발할 수 있습니다. 예를 들어 갑작스러운 사건으로 인한 단기 및 장기 트렌드 사이의 오차.
부적절한 스톱 손실 설정은 손실을 증가시킬 수 있습니다. 포착되는 것을 피하기 위해 합리적인 스톱 손실 거리를 설정해야합니다.
전략으로 인해 발생하는 빈번한 거래는 수수료로 인한 이익에 부정적인 영향을 줄 수 있습니다. 불필요한 거래를 줄이기 위해 매개 변수를 조정해야합니다.
이 전략은 기하급수적으로 모니터링되어야 할 기본 요소를 고려하지 않고 기술 지표에만 의존합니다.
해결책:
잘못된 신호를 줄이기 위해 이중 스토카스틱의 매개 변수를 조정합니다.
스톱 손실 논리를 최적화하고 합리적인 스톱 손실 거리를 설정합니다.
거래 빈도를 줄이기 위해 매개 변수를 조정합니다. 예를 들어 크로스오버 기준을 완화하십시오.
주관적인 거래를 피하기 위해 중요한 근본적인 사건에 주의를 기울이십시오.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
잘못된 신호를 줄이기 위해 이중 스토카스틱의 매개 변수를 최적화합니다. 다른 K와 D 값의 효과를 테스트하십시오.
MACD, 이동 평균 등과 같은 신호를 필터하는 다른 지표를 포함하여 잘못된 신호를 피하십시오.
스톱 로스 전략을 최적화하여 다른 스톱 로스 포인트와 비율을 테스트하여 위험을 효과적으로 제어합니다.
거래 부피 지표, 예를 들어 거래 부피 파기 등을 포함하여 가격 통합 중 비효율적인 거래를 피합니다.
다른 보유 기간을 테스트합니다. 너무 짧은 보유 기간은 수익을 먹는 수수료로 이어집니다. 너무 오래 손실을 제지하지 못합니다.
근본적인 요소를 포함하고, 충격에 빠지지 않기 위해 중요한 사건에 대한 포지션을 닫습니다.
이중 스토카스틱 전략은 현재 기간 및 여러 기간 스토카스틱 지표에 의해 상승 및 하락 구역을 판단하여 낮은 가격으로 구매하고 높은 가격으로 판매하는 목표를 달성합니다. 강력한 트렌드 추적 기능, 간단한 논리 및 쉬운 라이브 거래와 같은 장점이 있습니다. 그러나 위험은 존재하며 매개 변수 조정, 스톱 로스 최적화 및 다른 기술 또는 기본 요소를 통합하여 개선해야합니다. 포괄적으로 최적화되고 엄격하게 백테스트되면이 전략은 매우 실용적인 트렌드 추적 시스템이 될 수 있습니다.
/*backtest start: 2023-10-07 00:00:00 end: 2023-11-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("stoch startegy", overlay=false,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD) len = input(54, minval=1, title="Length for Main Stochastic") smoothK = input(12, minval=1, title="SmoothK for Main Stochastic") smoothD = input(3, minval=1, title="SmoothD for Main Stochastic") upLine = input(80, minval=50, maxval=90, title="Upper Line Value?") lowLine = input(30, minval=10, maxval=50, title="Lower Line Value?") trailStep=input(100,minval=10,title="Trialing step value") // current stochastic calculation k = sma(stoch(close, high, low, len), smoothK) d = sma(k, smoothD) //mtf stochastic calculation smoothed with period mtfK= sma(stoch(close, high, low, len), smoothK*3) mtfD= sma(k, smoothD*3) plot(k,"current TF k",blue,style=line, linewidth=2) plot(d,"current TF d",red,style=line, linewidth=2) plot(mtfK,"MTF TF k",black,style=line) plot(mtfD,"Multi TF d",green,style=line, linewidth=2) hline(upLine) hline(50) hline(lowLine) longCondition = crossover(mtfK, 50) and k>50 and k>d and mtfK>mtfD if (longCondition) strategy.entry("Lungo", strategy.long) shortCondition = crossunder(mtfD, 50) and k<50 and k<d and mtfK<mtfD if (shortCondition) strategy.entry("Corto", strategy.short) exitlong=crossunder(mtfD, upLine) exitshort=crossover(mtfK, lowLine) if (exitlong) strategy.exit("Esci lungo","Lungo",trail_points=trailStep) if (exitshort) strategy.exit("Esci corto","Corto",trail_points=trailStep) showZones = input(true, title="Show Bullish/Bearish Zones") // bullish signal rule: bullishRule = k >= mtfD // bearish signal rule: bearishRule = k <= mtfD // current trading State ruleState = 0 ruleState := bullishRule ? 1 : bearishRule ? -1 : nz(ruleState[1]) bgcolor(showZones ? ( ruleState==1 ? green : ruleState==-1 ? red : gray ) : na , title="supertrend Bullish/Bearish Zones", transp=90)