이 전략은 가격이 과잉 매입 지역으로 진입했는지 여부를 결정하기 위해 볼링거 밴드를 활용하고 콜백 기회를 식별하기 위해 RSI 지표를 결합합니다. 과잉 매입 지역에서 죽음의 십자가가 형성되면 짧아지고 가격이 다시 볼링거 상단보다 상승하면 멈춥니다.
이 전략은 다음과 같은 원칙에 기초합니다.
이 전략의 장점:
이 전략의 위험:
위험은 다음과 같이 최소화 될 수 있습니다.
이 전략은 다음과 같이 개선될 수 있습니다.
요약하자면, 이것은 전형적인 과잉 구매 빠른 단편 스칼핑 전략입니다. 거래 입력을 위해 볼링거 밴드 및 신호를 필터하기 위해 RSI를 활용합니다. 위험은 신중한 스톱 로스 배치로 관리됩니다. 추가 개선은 매개 변수 조정, 지표 추가, 무역 논리 확장 등으로 발생할 수 있습니다.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Coinrule strategy("Bollinger Band Below Price with RSI", overlay=true, initial_capital=1000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=70, commission_type=strategy.commission.percent, commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0) notInTrade = strategy.position_size <= 0 //Bollinger Bands Indicator length = input.int(20, minval=1) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) // RSI inputs and calculations lengthRSI = 14 RSI = ta.rsi(close, lengthRSI) // Configure trail stop level with input options longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 // Determine trail stop loss prices //longStopPrice = 0.0 shortStopPrice = 0.0 //longStopPrice := if strategy.position_size > 0 //stopValue = close * (1 - longTrailPerc) //math.max(stopValue, longStopPrice[1]) //else //0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 //Entry and Exit strategy.entry(id="short", direction=strategy.short, when=ta.crossover(close, upper) and RSI < 70 and timePeriod and notInTrade) if (ta.crossover(upper, close) and RSI > 70 and timePeriod) strategy.exit(id='close', limit = shortStopPrice)