다중 지표로 오스실레이션 포지셔닝 돌파구 전략

저자:차오장, 날짜: 2023-12-01 17:49:34
태그:

img

전반적인 설명

이 전략은 STOCH.RSI, RSI, 듀얼 전략, CM 윌리엄스 지표 및 화폐 흐름 지표 (MFI) 를 포함한 여러 지표를 결합하여 시장 변동을 정확하게 파악하고 장기/단기 기회를 찾을 수 있습니다. 주식 가격이 지원 또는 저항 수준에 접근 할 때 거래 신호를 생성 할 수 있습니다. 여러 지표와 교차 검증의 장점을 통합함으로써이 전략은 잘못된 신호를 효과적으로 줄이고 신뢰성을 향상시킬 수 있습니다.

전략 논리

  1. STOCH.RSI는 스토카스틱 오시레이터와 상대적 강도 지수 (RSI) 의 강점을 결합하여 역전 기회를 탐지하기 위해 과반 구매/ 과반 판매 수준을 표시합니다.

  2. RSI는 부가적인 확인으로 과잉 구매/ 과잉 판매 조건을 평가합니다.

  3. 이중 전략은 거래 신호를 생성하기 위해 스톡과 RSI 사이의 교차를 결정합니다.

  4. CM 윌리엄스 인디케이터는 퍼센틸 밴드를 계산합니다. 밴드에서 반등하는 것은 시장 반전을 나타냅니다. 변동과 반전을 판단하는 데 도움이됩니다.

  5. 돈 흐름 지수 (MFI) 는 자금 흐름을 평가하고 Stoch.RSI와 RSI와 함께 신호를 검증하여 품질을 향상시킵니다.

요약하자면, Stoch.RSI, RSI, 듀얼 전략, CM 윌리엄스 및 MFI를 결합함으로써이 전략은 과잉 구매 / 과잉 판매 수준을 효과적으로 결정하고 반전 지점을 찾아 품질 신호를 생성 할 수 있습니다. 여러 지표에 의한 교차 검증은 신뢰성을 향상시키고 잘못된 신호를 줄입니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 여러 지표의 조합은 검증을 통해 신호 품질을 향상시키고 잘못된 신호를 줄입니다.

  2. STOCH.RSI, RSI 및 MFI는 과잉 구매/ 과잉 판매 구역과 시장 전환점을 효과적으로 감지합니다.

  3. CM 윌리엄스는 시장의 변동과 반전을 판단하는 데 도움이되는 퍼센틸 범위를 계산합니다.

  4. 이중 전략은 따라하기 쉬운 간단한 거래 신호를 생성합니다.

  5. 다양한 시장에 적응할 수 있는 다양한 최적화 가능한 매개 변수로 매우 사용자 정의 가능합니다.

위험 분석

주의해야 할 몇 가지 위험 요소:

  1. 복잡한 멀티 인디케이터 계산은 높은 컴퓨팅 전력을 요구하며, 고주파 거래에 적합하지 않습니다.

  2. 부적절한 매개 변수 조정은 신호 품질을 악화시킬 수 있습니다. 매개 변수는 개인적인 스타일에 맞아야 합니다.

  3. 반전 신호가 늦어질 수 있습니다. 더 많은 지표가 트렌드 판단에 도움이 될 수 있습니다.

  4. 높은 거래 빈도는 자본 활용도가 떨어질 수 있습니다.

해결책:

  1. 강력한 터미널을 사용하고 매개 변수를 최적화하세요.

  2. 최적의 개인 매개 변수를 찾기 위해 광범위하게 백테스트합니다.

  3. 더 많은 지표들을 추가해서 미리 추세를 파악할 수 있습니다.

  4. 거래당 손실을 제한하기 위해 Stop Loss와 같은 리스크 제어 메커니즘을 최적화합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 최적의 조합을 찾기 위해 지표 매개 변수를 최적화합니다.

  2. 부피와 이익 요인 같은 지표를 추가하여 주식 선택을 향상시킵니다.

  3. 더 많은 트렌드 라인, 볼링거 밴드 등을 포함하여 지원/저항 수준을 예측합니다.

  4. 스톱 로스, 시장 진입 필터를 추가해 위험을 조절합니다.

  5. 매개 변수는 특성에 따라 다른 제품과 시간대에 따라 다릅니다.

결론

이 전략은 STOCH.RSI, RSI, 듀얼 전략, CM 윌리엄스 및 MFI를 포함한 여러 지표를 정확하게 결합하여 시장 반전을 찾습니다. 크로스 검증은 신호 품질을 향상시키고 잘못된 신호를 감소시킵니다. 매개 변수 최적화 및 추가 필터와 같은 추가 개선은 안정적이고 실용적인 거래 시스템을 만들 수 있습니다.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


     //////////////////////////////////////////////////////////////////////////
    ////  STOCHASTIC_RSI+RSI+DOUBLE_STRATEGY+CM_WILLIAMS_VIX_FIX+MFI  ////////
   //////////////////////////////////////////////////////////////////////////


//  This is a simple combination of integrated and published scripts, useful 
//  if you don't have a PRO account and want to bypass the 3 indicators limit. 
//  It includes:
//  1) Stoch.RSI
//  2) Relative strenght index (RSI)
//  3) Stochastic + RSI, Double Strategy (by ChartArt)
//  4) CM_Williams_Vix_Fix Finds Market Bottoms (by ChrisMoody)
//  5) Monetary Flow Index (MFI)
//  For more details about 3) and 4) check the original scripts.


//@version=3
// @author GianlucaBezziccheri

strategy(title="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+MFI", shorttitle="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+MFI")


///STOCH.RSI///
smoothK = input(3, minval=1, title="Stochastic %K Smoothing")
smoothD = input(3, minval=1, title="Stochastic %K Moving Average")
lengthRSI = input(14, minval=1, title="RSI Lenght")
lengthStoch = input(14, minval=1, title="Stochastic Lenght")
RSIprice = close
rsi1 = rsi(RSIprice, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot(k, color=blue, linewidth=2)
plot(d, color=silver, linewidth=2)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=purple, transp=78)


///RSI///
up = rma(max(change(RSIprice), 0), lengthRSI)
down = rma(-min(change(RSIprice), 0), lengthRSI)
rsi2 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi2, color=fuchsia, linewidth=2)
band0 = hline(70)
band1 = hline(30)
fill(band0, band1, color=purple, transp=100)


///OVERBOUGHT-OVERSOLD STRATEGY///
StochOverBought = input(80, title="Stochastic RSI overbought")
StochOverSold = input(20, title="Stochastic RSI oversold")
ks = sma(stoch(close, high, low, lengthStoch), smoothK)
ds = sma(k, smoothD)
RSIOverBought = input( 70  , title="RSI overbought")
RSIOverSold = input( 30  , title="RSI oversold")
vrsi = rsi(RSIprice, lengthRSI)
if (not na(ks) and not na(ds))
    if (crossover(ks,ds) and k < StochOverSold)
        if (not na(vrsi)) and (crossover(vrsi, RSIOverSold))
            strategy.entry("LONG", strategy.long, comment="LONG")
if (crossunder(ks,ds) and ks > StochOverBought)
    if (crossunder(vrsi, RSIOverBought))
        strategy.entry("SHORT", strategy.short, comment="SHORT")
 
 
///CM WILLIAMS VIX FIX///
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bollinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range (Based on Percentile and LookBack Period)?")
sd = input(false, title="Show Standard Deviation Line?")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(wvf, title="Williams Vix Fix", style=columns, linewidth = 4, color=col, transp=85)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=line, linewidth = 3, color=aqua)


///MONETARY FLOW INDEX
length4 = input(title="MFI Length", defval=14, minval=1, maxval=2000)
src4 = hlc3
upper4 = sum(volume * (change(src4) <= 0 ? 0 : src4), length4)
lower4 = sum(volume * (change(src4) >= 0 ? 0 : src4), length4)
mf4 = rsi(upper4, lower4)
plot(mf4, color=yellow, style=line, linewidth=2, title="Monetary Flow Index")
overbought=hline(70, title="MFI Overbought", color=yellow)
oversold=hline(30, title="MFI Oversold", color=yellow)
fill(overbought, oversold, color=#9915ff, transp=100)

더 많은