이 전략은 볼링거 밴드와 상대적 강도 지수 (RSI) 를 결합하여 구매 및 판매 신호를 생성합니다. 가격은 하부 볼링거 밴드 아래로 넘어가고 RSI는 지정된 하위 수준 아래로 떨어지면 구매 신호가 발생합니다. 가격이 상부 볼링거 밴드 위에 넘어가고 RSI는 지정된 상위 수준을 넘어서면 판매 신호가 발생합니다. 또한 전략은 피라미드 포지션 관리에 유리한 빈번한 거래를 피하기 위해 구매 간격 매개 변수를 도입합니다.
이 전략은 슬기롭게 두 가지 고전적인 기술 지표인 볼린저 밴드 (Bollinger Bands) 와 RSI (RSI) 를 결합한다. 트렌드 기회를 포착하기 위해 이중 확인 메커니즘을 활용한다. 동시에, 전략은 수익을 최적화하면서 위험을 제어하기 위한 피라미드 포지션 구축 방법을 도입한다. 그러나, 전략은 또한 트렌드 지속 위험, 매개 변수 최적화 위험, 블랙 스완 이벤트 위험과 같은 위험에 직면한다. 미래에, 전략은 스톱 로스 및 영리 취득, 동적 매개 변수 최적화, 그리고 다른 지표와 결합하여 더 이상 최적화 될 수 있다. 전반적으로, 이것은 더 이상의 탐구와 연습을 가치가 있는 명확하고 논리적으로 엄격한 양적 거래 전략이다.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //@version=4 strategy(overlay=true, shorttitle="cakes'Strategy For RSI", default_qty_type = strategy.percent_of_equity, initial_capital = 100000, default_qty_value = 100, pyramiding = 0, title="cakes'Strategy", currency = 'USD') ////////// ** Inputs ** ////////// // Stoploss and Profits Inputs v1 = input(true, title="GoTradePlz") ////////// ** Indicators ** ////////// // RSI len = 14 src = close up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) // Bollinger Bands length1 = 20 src1 = close mult1 = 1.0 basis1 = sma(src1, length1) dev1 = mult1 * stdev(src1, length1) upper1 = basis1 + dev1 lower1 = basis1 - dev1 ////////// ** Triggers and Guards ** ////////// // 输入 RSILowerLevel1 = input(30, title="RSI 下限水平") RSIUpperLevel1 = input(70, title="RSI 上限水平") // 购买间隔 buyInterval = input(5, title="购买间隔(K线数量)") // 跟踪购买间隔 var int lastBuyBar = na lastBuyBar := na(lastBuyBar[1]) ? bar_index : lastBuyBar // 策略信号 BBBuyTrigger1 = close < lower1 BBSellTrigger1 = close > upper1 rsiBuyGuard1 = rsi < RSILowerLevel1 rsiSellGuard1 = rsi > RSIUpperLevel1 Buy_1 = BBBuyTrigger1 and rsiBuyGuard1 and (bar_index - lastBuyBar) >= buyInterval Sell_1 = BBSellTrigger1 and rsiSellGuard1 if (Buy_1) lastBuyBar := bar_index strategy.entry("Long", strategy.long, when = Buy_1, alert_message = "Buy Signal!") strategy.close("Long", when = Sell_1, alert_message = "Sell Signal!")