이중 지표 필터드 바이 신호 전략은 잠재적 인 구매 기회를 식별하기 위해 스토카스틱 RSI와 볼링거 밴드의 조합을 사용합니다. 가장 유리한 구매 지점을 구별하기 위해 여러 필터 조건을 사용합니다. 이것은 변동하는 시장 환경에서 높은 확률의 구매 입시 시기를 식별 할 수 있습니다.
이 전략은 두 가지 지표를 활용하여 구매 기회를 파악합니다.
첫째, 시장이 과판되었는지 여부를 결정하기 위해 스토카스틱 RSI를 사용합니다. 지표는 스토카스틱과 이동 평균 라인을 결합하여 아래에서 %D 라인의 위쪽의 %K 라인 크로스오버를 과판 신호로 취급합니다. 20% 이상의 %K 값이 과판된 것으로 간주되도록 임계값이 설정됩니다.
두 번째로, 전략은 가격 변화를 식별하기 위해 볼링거 밴드를 사용합니다. 볼링거 밴드는 가격의 표준 편차에서 계산되는 밴드입니다. 가격이 하위 범위에 접근하면 과판 상태를 신호합니다. 여기서 전략은 파라미터를 더 넓은 볼링거 밴드에서 표준 편차의 2 배로 설정하여 더 많은 잘못된 신호를 필터링합니다.
양쪽 지표에서 얻은 과잉 판매 신호를 통해 전략은 구매 입시 시기를 더 자세히 파악하기 위해 여러 필터 조건을 추가합니다.
전체적인 기준이 충족되면 구매 신호가 발사됩니다.
이중 지표 필터 전략은 몇 가지 주요 강점을 가지고 있습니다.
요약하자면, 전략은 다양한 기술 지표와 필터링 기술을 결합하여 구매 입시 시기를 더 정확하게 파악하여 더 나은 거래 성과로 이어집니다.
이 전략의 장점에도 불구하고 관리해야 할 위험성도 있습니다.
위험을 완화하기 위해 제안된 개선 사항은 다음과 같습니다.
이 전략은 아래와 같은 측면에서 더 개선될 수 있습니다.
보다 발전된 기술을 도입하면 더 정확한 신호 생성 능력과 더 강력한 위험 통제를 달성하여 라이브 거래에서 더 신뢰할 수있는 이익을 얻을 수 있습니다.
요약하자면, 이중 지표 필터드 바이 신호 전략은 가격 강도 및 풀백 검증과 같은 스토카스틱 RSI, 볼링거 밴드 및 여러 필터 조건을 활용하여 높은 확률의 바이 엔트리 포인트를 식별합니다. 적절한 매개 변수 조정, 위험 통제 등으로 안정적인 자동화 거래 전략이 될 가능성이 있습니다.
그 핵심 강점은 정확한 타이밍을 위한 효율적인 지표와 필터 조합에 있다. 위험과 개선 경로는 또한 식별되고 관리될 수 있다. 전반적으로 이것은 실행 가능하고 효과적인 수치 전략이다.
/*backtest start: 2022-11-30 00:00:00 end: 2023-12-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SORAN Buy and Close Buy", pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, overlay=false) ////Buy and Close-Buy messages Long_message = input("") Close_message = input("") ///////////// Stochastic Slow Stochlength = input(14, minval=1, title="lookback length of Stochastic") StochOverBought = input(80, title="Stochastic overbought condition") StochOverSold = input(20, title="Stochastic oversold condition") smoothK = input(3, title="smoothing of Stochastic %K ") smoothD = input(3, title="moving average of Stochastic %K") k = sma(stoch(close, high, low, Stochlength), smoothK) d = sma(k, smoothD) ///////////// RSI RSIlength = input( 14, minval=1 , title="lookback length of RSI") RSIOverBought = input( 70 , title="RSI overbought condition") RSIOverSold = input( 30 , title="RSI oversold condition") RSIprice = close vrsi = rsi(RSIprice, RSIlength) ///////////// Double strategy: RSI strategy + Stochastic strategy pd = input(22, title="LookBack Period Standard Deviation High") bbl = input(20, title="Bolinger 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%") new = input(false, title="-------Text Plots Below Use Original Criteria-------" ) sbc = input(false, title="Show Text Plot if WVF WAS True and IS Now False") sbcc = input(false, title="Show Text Plot if WVF IS True") new2 = input(false, title="-------Text Plots Below Use FILTERED Criteria-------" ) sbcFilt = input(true, title="Show Text Plot For Filtered Entry") sbcAggr = input(true, title="Show Text Plot For AGGRESSIVE Filtered Entry") ltLB = input(40, minval=20, maxval=99, title="Long-Term Look Back Current Bar Has To Close Below This Value OR Medium Term--Default=40") mtLB = input(14, minval=1, maxval=40, title="Medium-Term Look Back Current Bar Has To Close Below This Value OR Long Term--Default=14") str = input(3, minval=1, maxval=9, title="Entry Price Action Strength--Close > X Bars Back---Default=3") //Alerts Instructions and Options Below...Inputs Tab new4 = input(false, title="-------------------------Turn On/Off ALERTS Below---------------------" ) new5 = input(false, title="----To Activate Alerts You HAVE To Check The Boxes Below For Any Alert Criteria You Want----") sa1 = input(false, title="Show Alert WVF = True?") sa2 = input(false, title="Show Alert WVF Was True Now False?") sa3 = input(false, title="Show Alert WVF Filtered?") sa4 = input(false, title="Show Alert WVF AGGRESSIVE Filter?") //Williams Vix Fix Formula 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 //Filtered Bar Criteria upRange = low > low[1] and close > high[1] upRange_Aggr = close > close[1] and close > open[1] //Filtered Criteria filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh)) filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and not (wvf < upperBand and wvf < rangeHigh) //Alerts Criteria alert1 = wvf >= upperBand or wvf >= rangeHigh ? 1 : 0 alert2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh) ? 1 : 0 alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered ? 1 : 0 alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr ? 1 : 0 //Coloring Criteria of Williams Vix Fix col = wvf >= upperBand or wvf >= rangeHigh ? #00E676 : #787B86 isOverBought = (crossover(k,d) and k > StochOverBought) ? 1 : 0 isOverBoughtv2 = k > StochOverBought ? 1 : 0 filteredAlert = alert3 ? 1 : 0 aggressiveAlert = alert4 ? 1 : 0 plot(isOverBought, "Overbought / Crossover", style=plot.style_line, color=#FF5252) plot(filteredAlert, "Filtered Alert", style=plot.style_line, color=#E040FB) plot(aggressiveAlert, "Aggressive Alert", style=plot.style_line, color=#FF9800) if (filteredAlert or aggressiveAlert) strategy.entry("Buy", strategy.long, alert_message = Long_message) if (filteredAlert or aggressiveAlert) alert("Buy Signal", alert.freq_once_per_bar) if (isOverBought) strategy.close("Buy", alert_message = Close_message)