Strategi ini didasarkan pada rel atas dan bawah Bollinger Bands untuk menentukan kapan harga menerobos rel atas Bollinger Bands untuk pergi panjang dan menerobos rel bawah untuk pergi pendek.
Strategi ini menggunakan rel tengah / atas / bawah Bollinger Band untuk menentukan kisaran harga ekstrim. Rel tengah adalah rata-rata bergerak sederhana dari harga penutupan selama 25 periode terakhir. Rel atas dan bawah adalah satu penyimpangan standar di atas dan di bawah rel tengah.
Jika harga di bawah rel bawah, pergi panjang. Jika harga di atas rel atas, pergi pendek. Saat pergi panjang, atur stop loss ke harga masuk dikalikan dengan faktor stop loss dan ambil keuntungan ke harga masuk dikalikan dengan faktor take profit.
Strategi ini juga menggabungkan beberapa aturan tambahan, seperti hanya mengizinkan satu sinyal per 24 jam untuk menghindari perdagangan yang tidak perlu.
Manajemen Risiko:
Singkatnya, ini adalah strategi pelacakan tren sederhana menggunakan Bollinger Bands untuk menentukan harga abnormal dan melacak tren. Ada ruang untuk perbaikan dalam optimasi parameter, kontrol risiko dan penyaringan sinyal, tetapi ide inti sederhana dan jelas, membuatnya cocok sebagai strategi pemula untuk belajar.
/*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")