
Strategi ini menggunakan indikator Bollinger Bands untuk menentukan sama ada harga memasuki kawasan overbought dan oversold, dan digabungkan dengan indikator RSI untuk menentukan sama ada ada terdapat peluang untuk membalikkan semula, membuat ruang kosong apabila kawasan overbought membentuk garpu mati, dan berhenti ketika harga naik melebihi jalur Bollinger Bands.
Strategi ini berdasarkan kepada prinsip-prinsip berikut:
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai risiko berikut:
Anda boleh mengurangkan risiko dengan:
Strategi ini boleh dioptimumkan dengan:
Strategi ini secara keseluruhannya adalah strategi perdagangan garis pendek cepat yang tipikal di kawasan overbought. Ia menggunakan jalur Burin untuk menentukan titik jual beli, sinyal penapisan RSI. Ia mengawal tahap risiko dengan menghentikan kerugian yang munasabah. Ia boleh meningkatkan keberkesanan dengan pengoptimuman parameter, indikator gabungan, menambah logik pembukaan kedudukan dan sebagainya.
/*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)