Ini adalah strategi perdagangan jangka pendek yang didasarkan pada channel breakout. Ini menggunakan breakout dari saluran
Strategi ini pertama-tama menghitung tertinggi tinggi dan terendah rendah selama periode tertentu untuk membangun rel atas dan bawah saluran.
Jika harga pecah di atas rel atas, pergi panjang. Jika harga pecah di bawah rel bawah, pergi pendek.
Gunakan stop loss bergerak untuk mengendalikan risiko. Stop loss diatur di garis tengah saluran.
Ada dua aturan keluar opsional: kembali ke garis tengah atau ikuti stop loss bergerak. Yang pertama menyadari keuntungan dengan cepat sementara yang terakhir mengontrol risiko.
Periode saluran dan parameter lainnya dapat disesuaikan untuk mengoptimalkan strategi untuk kondisi pasar yang berbeda.
Hanya memantau hubungan harga-saluran dan mengikuti aturan untuk perdagangan.
Perdagangan di sepanjang tren, tidak ada risiko kontra-tren.
Saluran yang jelas dan intuitif memberikan sinyal masuk yang jelas.
Margin keuntungan yang baik, dapat mencapai pengembalian yang memuaskan dalam kebanyakan kasus.
Banyak parameter yang dapat disesuaikan untuk optimasi di pasar yang berbeda.
Penembusan mungkin gagal, ada risiko terperangkap.
Saluran membutuhkan waktu untuk terbentuk, tidak cocok untuk pasar yang terikat jangkauan.
Kembali ke stop loss tengah mungkin terlalu konservatif, tidak dapat mempertahankan tren.
Optimasi parameter membutuhkan data historis, overfit mungkin dalam perdagangan langsung.
Perdagangan secara mekanis dari titik-titik breakout dapat meningkatkan frekuensi perdagangan dan biaya slippage.
Evaluasi saluran dari periode yang berbeda dan pilih yang optimal.
Uji kembali ke tengah dan bergerak stop loss untuk menemukan mekanisme keluar yang lebih baik.
Optimalkan persentase stop loss untuk mengurangi kemungkinan dihentikan.
Tambahkan filter tren untuk menghindari perdagangan breakout yang tidak tepat.
Pertimbangkan untuk meningkatkan ukuran posisi tetapi mengontrol risiko.
Secara keseluruhan ini adalah strategi breakout jangka pendek yang matang. Ini memiliki aturan masuk yang jelas, pengendalian risiko yang tepat, dan bekerja dengan baik secara umum. Peningkatan lebih lanjut dapat dicapai melalui penyesuaian parameter. Tetapi keterbatasan yang melekat harus dicatat, penyesuaian yang diperlukan untuk pasar yang berbeda. Jika digunakan secara sistematis, itu harus memberikan keuntungan keseluruhan yang konsisten.
/*backtest start: 2022-10-18 00:00:00 end: 2023-10-24 00:00:00 period: 1d basePeriod: 1h 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/ // Strategy testing and optimisation for free Bitmex trading bot // © algotradingcc //@version=4 strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075) //Options buyPeriod = input(13, "Channel Period for Long position") sellPeriod = input(18, "Channel Period for Short position") isMiddleExit = input(true, "Is exit on Base Line?") takeProfit = input(46, "Take Profit (%) for position") stopLoss = input(9, "Stop Loss (%) for position") // Test Start startYear = input(2005, "Test Start Year") startMonth = input(1, "Test Start Month") startDay = input(1, "Test Start Day") startTest = timestamp(startYear,startMonth,startDay,0,0) //Test End endYear = input(2050, "Test End Year") endMonth = input(12, "Test End Month") endDay = input(30, "Test End Day") endTest = timestamp(endYear,endMonth,endDay,23,59) timeRange = time > startTest and time < endTest ? true : false // Long&Short Levels BuyEnter = highest(buyPeriod) BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod) SellEnter = lowest(sellPeriod) SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod) // Plot Data plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter") plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50) plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter") plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50) // Calc Take Profits & Stop Loss TP = 0.0 SL = 0.0 if strategy.position_size > 0 TP := strategy.position_avg_price*(1 + takeProfit/100) SL := strategy.position_avg_price*(1 - stopLoss/100) if strategy.position_size > 0 and SL > BuyExit BuyExit := SL if strategy.position_size < 0 TP := strategy.position_avg_price*(1 - takeProfit/100) SL := strategy.position_avg_price*(1 + stopLoss/100) if strategy.position_size < 0 and SL < SellExit SellExit := SL // Long Position if timeRange and strategy.position_size <= 0 strategy.entry("Long", strategy.long, stop = BuyEnter) strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0) // Short Position if timeRange and strategy.position_size >= 0 strategy.entry("Short", strategy.short, stop = SellEnter) strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0) // Close & Cancel when over End of the Test if time > endTest strategy.close_all() strategy.cancel_all()