
이것은 상대적으로 약한 지표 (RSI) 의 이탈과 여러 평행선 조합을 기반으로 한 고급 양적 거래 전략이다. 이 전략은 주로 RSI와 가격 사이의 이탈을 식별하여 잠재적 인 역점을 포착하는 짧은 라인 거래에 적합하다. 이 전략은 RSI, 여러 유형의 이동 평균 및 브린 밴드를 결합하여 거래자에게 포괄적인 기술 분석 프레임 워크를 제공합니다.
이 전략의 핵심은 잠재적인 오버와 오버를 식별하기 위해 RSI 오차를 사용하는 것입니다. RSI와 가격의 높고 낮은 점을 비교하여 오차를 감지하고 RSI 수준과 결합하여 진입 시간을 결정합니다. 또한, 전략은 간단한 이동 평균 (SMA), 지수 이동 평균 (EMA), 평평한 이동 평균 (SMMA) 과 같은 여러 종류의 평균선을 통합하여 추가적인 경향 확인 신호를 제공합니다.
RSI 계산: 사용자 정의 가능한 RSI 주기 (기본은 60) 를 사용하여 RSI 값을 계산한다.
RSI 평균선: RSI에 대한 이동 평균을 적용하여 SMA, EMA, SMMA, WMA 및 VWMA 등 다양한 평균선 유형을 지원합니다.
검출을 거부하는 경우:
입장 조건:
거래 관리:
시각화:
다중 지표 통합 분석: RSI, 이동 평균 및 브린 밴드를 결합하여 전체 시장 관점을 제공합니다.
유연한 변수 설정: 사용자가 RSI 길이나 평균선 유형과 같은 변수를 다른 시장 조건에 따라 조정할 수 있습니다.
RSI와 가격 사이의 오차를 식별하여 잠재적인 반전 기회를 잡습니다.
위험 관리: 내장된 손해 중지 및 차단 메커니즘, 위험을 통제하는 데 도움이 됩니다.
시각화 효과: 직관적으로 거래 신호와 차트에서 벗어난 상황을 보여줍니다.
적응력: 다양한 거래 종류와 시간 프레임에 적용할 수 있다.
자동 거래: 자동 거래 시스템에 쉽게 통합 할 수 있습니다.
가짜 신호 위험: 가로수지 시장에서, 너무 많은 가짜 기각 신호가 발생할 수 있습니다.
지연성: RSI와 평균선은 지연된 지표이며, 진입 시기가 약간 늦어질 수 있다.
과도한 거래: 시장이 격렬하게 변동하는 상황에서 과도한 거래 신호를 유발할 수 있습니다.
매개 변수 민감성: 전략 성능은 매개 변수 설정에 크게 의존하며, 다른 시장에는 다른 최적화가 필요할 수 있다.
트렌드 시장의 성능: 강한 트렌드 시장에서, 전략에서 벗어나는 것은 종종 역동적인 거래가 될 수 있다.
고정 스톱 리스크: 고정 점수를 스톱로 사용하는 것은 모든 시장 조건에 적합하지 않을 수 있다.
트렌드 필터를 도입합니다: 강한 트렌드 중에 역전 거래를 피하기 위해 장기 이동 평균 또는 ADX 지표를 추가합니다.
다이내믹 스톱: ATR 또는 변동률 비율을 사용하여 다이내믹 스톱을 설정하여 다양한 시장 변동에 적응합니다.
다중 시간 프레임 분석: 상위 시간 프레임의 신호와 결합하여 거래 방향을 확인한다.
거래량 분석에 추가: 거래량 지표를 고려하여 신호의 신뢰성을 강화한다.
진입 시기를 최적화: 가격 행동 패턴이나 그래프 형식을 사용하여 정확한 진입을 고려하십시오.
기계 학습 최적화: 매개 변수 선택과 신호 생성을 최적화하기 위해 기계 학습 알고리즘을 사용합니다.
필터링 조건을 추가: 거래 신호를 필터링하기 위해 추가 기술 지표 또는 기본 요소를 추가합니다.
RSI 이탈과 여러 평행선 조합을 기반으로 한 이 고급 정량화 거래 전략은 거래자에게 강력하고 유연한 분석 프레임워크를 제공합니다. RSI 이탈, 여러 평행선 유형 및 브린 밴드를 결합하여 이 전략은 잠재적인 시장 역전점을 포착할 수 있으며 동시에 트렌드 확인 신호를 제공합니다.
전략의 주요 장점은 다양한 시장 조건에 적응할 수 있는 포괄성과 유연성이다. 그러나, 사용자는 가짜 신호와 과도한 거래의 가능성과 같은 잠재적인 위험에 주의를 기울여야 한다. 이 전략은 지속적인 최적화와 추가 분석 도구의 도입을 통해 신뢰할 수 있는 거래 시스템이 될 잠재력을 가지고 있다.
중요한 것은 특정 거래 유형과 시장 조건에 따라 매개 변수를 조정하고 다른 분석 방법과 결합하여 신호를 검증하는 것입니다. 또한 엄격한 위험 관리와 지속적인 전략 최적화는 장기적인 성공을 보장하는 중요한 요소입니다.
/*backtest
start: 2024-05-28 00:00:00
end: 2024-06-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Advanced Gold Scalping Strategy with RSI Divergence", overlay=false)
// Input parameters
rsiLengthInput = input.int(60, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(ohlc4, "Source", group="RSI Settings")
maTypeInput = input.string("SMMA (RMA)", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(3, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input(true, title="Show Divergence", group="RSI Settings")
stopLoss = input.float(11, title="Stop Loss (pips)", group="Trade Settings")
takeProfit = input.float(33, title="Take Profit (pips)", group="Trade Settings")
// RSI and MA calculation
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
// Divergence detection
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
plFound = na(ta.pivotlow(rsi, lookbackLeft, lookbackRight)) ? false : true
phFound = na(ta.pivothigh(rsi, lookbackLeft, lookbackRight)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
rangeLower <= bars and bars <= rangeUpper
// Bullish divergence
rsiHL = rsi[lookbackRight] > ta.valuewhen(plFound, rsi[lookbackRight], 1) and _inRange(plFound[1])
priceLL = low[lookbackRight] < ta.valuewhen(plFound, low[lookbackRight], 1)
bullishDivergence = priceLL and rsiHL and plFound
// Bearish divergence
rsiLH = rsi[lookbackRight] < ta.valuewhen(phFound, rsi[lookbackRight], 1) and _inRange(phFound[1])
priceHH = high[lookbackRight] > ta.valuewhen(phFound, high[lookbackRight], 1)
bearishDivergence = priceHH and rsiLH and phFound
// Entry conditions
longCondition = bullishDivergence and rsi < 40
shortCondition = bearishDivergence and rsi > 60
// Convert pips to price for Gold (assuming 1 pip = 0.1 for XAUUSD)
stopLossPrice = stopLoss * 0.1
takeProfitPrice = takeProfit * 0.1
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL", "Long", stop=strategy.position_avg_price - stopLossPrice, limit=strategy.position_avg_price + takeProfitPrice)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("TP/SL", "Short", stop=strategy.position_avg_price + stopLossPrice, limit=strategy.position_avg_price - takeProfitPrice)
// Plotting
plot(rsi, "RSI", color=#7E57C2)
// plot(rsiMA, "RSI-based MA", color=color.yellow)
hline(60, "RSI Upper Band", color=#787B86)
// hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
hline(40, "RSI Lower Band", color=#787B86)
fill(hline(60), hline(40), color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
// Divergence visualization
plotshape(showDivergence and bullishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bullish Divergence", text="Bull", style=shape.labelup, location=location.absolute, color=color.green, textcolor=color.white)
plotshape(showDivergence and bearishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bearish Divergence", text="Bear", style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white)