Strategi perdagangan breakout yang dapat diskalakan menghasilkan sinyal perdagangan ketika harga melanggar level support dan resistance utama yang diidentifikasi oleh perubahan harga. Ini adalah strategi breakout yang sangat fleksibel dan dapat diperluas. Strategi ini dapat disesuaikan dengan kerangka waktu yang berbeda dengan menyesuaikan parameter dan dapat dengan mudah mengintegrasikan filter tambahan dan mekanisme manajemen risiko untuk optimasi.
Strategi pertama menggunakanswings()
fungsi untuk menghitung swing high dan low berdasarkan periode lookback.swingLookback
sinyal panjang dipicu ketika harga melanggar di atas swing tinggi, dan sinyal pendek dipicu ketika harga melanggar di bawah swing rendah.
Secara khusus, sinyal panjang dipicu ketika harga penutupan lebih besar atau sama dengan harga swing high.
Strategi ini juga menetapkan target penghentian berdasarkanstopTargetPercent
parameter untuk menentukan tingkat stop loss. Misalnya, stop loss panjang dapat ditetapkan pada 5% di bawah swing high, dan stop loss pendek dapat ditetapkan pada 5% di atas swing low.
Keuntungan dari strategi ini adalah fleksibilitas untuk menyesuaikan periode lookback untuk mengontrol frekuensi perdagangan. Periode lookback yang lebih pendek membuatnya lebih sensitif terhadap breakout dan meningkatkan frekuensi perdagangan. Periode lookback yang lebih lama mengurangi sensitivitas dan frekuensi perdagangan tetapi mungkin kehilangan peluang. Menemukan periode lookback yang optimal sangat penting untuk mengoptimalkan strategi.
Pengurangan:
Strategi ini dapat ditingkatkan dengan beberapa cara:
Uji nilai periode lookback yang berbeda untuk menemukan parameter optimal.
Uji kerangka waktu yang berbeda seperti 5m, 15m, 1h untuk menentukan kerangka waktu terbaik.
Optimalkan persentase stop loss untuk menyeimbangkan potensi keuntungan vs manajemen risiko.
Tambahkan filter seperti volume, volatilitas untuk mengurangi pengaturan yang lebih rendah.
Mengintegrasikan lebih banyak mekanisme manajemen risiko seperti trailing stop, mengambil keuntungan.
Optimasi parameter melalui analisis berjalan maju dan pembelajaran mesin.
Memperkenalkan AI / pembelajaran mesin untuk optimasi otomatis parameter.
Strategi perdagangan breakout yang dapat diskalakan adalah sistem breakout yang kuat dan dapat disesuaikan. Sangat mudah digunakan dan sangat mudah beradaptasi dengan menyesuaikan lookback dan menambahkan filter. Ini dapat dengan mudah mengintegrasikan manajemen risiko untuk pengendalian risiko. Dengan optimasi parameter dan integrasi pembelajaran mesin, strategi dapat berevolusi dari waktu ke waktu untuk beradaptasi dengan perubahan pasar. Secara keseluruhan, ini adalah strategi breakout universal yang direkomendasikan.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m 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/ // © deperp //@version=5 // strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0) // Backtest Time Period useDateFilter = input.bool(true, title="Begin Backtest at Start Date", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2020"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true swingLookback = input.int(20, title="Swing Lookback", minval=3) stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1) // Calculate lockback swings swings(len) => var highIndex = bar_index var lowIndex = bar_index var swingHigh = float(na) var swingLow = float(na) upper = ta.highest(len) lower = ta.lowest(len) if high[len] > upper highIndex := bar_index[len] swingHigh := high[len] if low[len] < lower lowIndex := bar_index[len] swingLow := low[len] [swingHigh, swingLow, highIndex, lowIndex] // Strategy logic [swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback) longCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortCondition = inTradeWindow and (ta.crossunder(close, swingLow)) if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) longStopTarget = close * (1 + stopTargetPercent / 100) shortStopTarget = close * (1 - stopTargetPercent / 100) strategy.exit("Long Stop Target", "Long", limit=longStopTarget) strategy.exit("Short Stop Target", "Short", limit=shortStopTarget) // Plot break lines // line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right) // line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right) // Alert conditions for entry and exit longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow)) longExitCondition = close >= longStopTarget shortExitCondition = close <= shortStopTarget alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position") alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position") alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position") alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")