Strategi ini berdasarkan pada tren atas dan bawah Bollinger Bands, menilai harga melakukan lebih banyak apabila ia menembusi tren Bollinger Bands, dan kosong apabila ia menembusi tren Bollinger Bands, dan merupakan strategi jenis trend-following.
Strategi ini menggunakan lintasan tengah, lintasan atas, dan lintasan bawah dalam Brin Belt untuk menilai julat harga yang melampau. Lintasan tengah adalah purata bergerak sederhana harga penutupan 25 kitaran terakhir, dan lintasan atas dan bawah adalah jarak perbezaan piawai di bawah garis lintasan tengah.
Jika harga lebih rendah daripada garisan bawah, beli lebih banyak; jika harga lebih tinggi daripada garisan atas, jual kosong. Apabila lebih banyak, atur garis stop loss sebagai harga masuk kali ganda faktor stop loss, garis stop loss sebagai harga masuk kali ganda faktor stop stop.
Strategi ini juga menambah beberapa peraturan tambahan, seperti hanya membenarkan satu isyarat dalam tempoh 24 jam untuk mengelakkan transaksi yang tidak perlu.
Langkah kawalan risiko:
Strategi ini secara keseluruhannya adalah strategi trend-following yang mudah, menggunakan Brinband untuk menilai harga yang tidak normal dan mengikuti trend, terdapat ruang untuk pengoptimuman dalam pengoptimuman parameter, kawalan risiko dan penapisan isyarat, tetapi idea terasnya mudah dan jelas, sesuai untuk strategi pembelajaran permulaan.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)
var lastSellHour = 0
var disableAdditionalBuysThisDay = false
if(time > lastSellHour + 1000 * 60 * 60 * 6)
disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
disableAdditionalBuysThisDay := true
lastSellHour := time
source = close
//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)
plot(upper, color=color.white)
plot(lower, color=color.white)
strategy.initial_capital = 50000
if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)
if(strategy.position_size > 0)
strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
strategy.close("Long", when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")