Strategi perdagangan breakout yang boleh diskalakan menghasilkan isyarat perdagangan apabila harga memecahkan tahap sokongan dan rintangan utama yang dikenal pasti oleh perubahan harga. Ini adalah strategi breakout yang sangat fleksibel dan boleh diperluas. Strategi ini boleh disesuaikan dengan jangka masa yang berbeza dengan menyesuaikan parameter dan dapat dengan mudah mengintegrasikan penapis tambahan dan mekanisme pengurusan risiko untuk pengoptimuman.
Strategi ini mula-mula menggunakanswings()
Fungsi untuk mengira swing tinggi dan rendah berdasarkan tempoh melihat kembali.swingLookback
Isyarat panjang diaktifkan apabila harga memecahkan di atas swing tinggi, dan isyarat pendek diaktifkan apabila harga memecahkan di bawah swing rendah.
Khususnya, isyarat panjang diaktifkan apabila harga penutupan lebih besar daripada atau sama dengan harga tinggi ayunan. isyarat pendek diaktifkan apabila harga penutupan kurang daripada atau sama dengan harga rendah ayunan.
Strategi ini juga menetapkan sasaran hentian berdasarkanstopTargetPercent
parameter untuk menentukan tahap stop loss. Sebagai contoh, stop loss panjang boleh ditetapkan pada 5% di bawah swing tinggi, dan stop loss pendek boleh ditetapkan pada 5% di atas swing rendah.
Kelebihan strategi ini adalah fleksibiliti untuk menyesuaikan tempoh melihat balik untuk mengawal kekerapan perdagangan. Tempoh melihat balik yang lebih pendek menjadikannya lebih sensitif terhadap gangguan dan meningkatkan kekerapan perdagangan. Tempoh melihat balik yang lebih lama mengurangkan kepekaan dan kekerapan perdagangan tetapi mungkin terlepas peluang. Mencari tempoh melihat balik yang optimum adalah penting untuk mengoptimumkan strategi.
Pengurangan:
Strategi ini boleh ditingkatkan dengan beberapa cara:
Uji nilai tempoh melihat balik yang berbeza untuk mencari parameter optimum.
Uji jangka masa yang berbeza seperti 5m, 15m, 1h untuk menentukan jangka masa yang terbaik.
Mengoptimumkan peratusan stop loss untuk mengimbangi potensi keuntungan berbanding pengurusan risiko.
Tambah penapis seperti kelantangan, volatiliti untuk mengurangkan persediaan yang rendah.
Mengintegrasikan lebih banyak mekanisme pengurusan risiko seperti berhenti, mengambil keuntungan.
Pengoptimuman parameter melalui analisis maju dan pembelajaran mesin.
Memperkenalkan AI / pembelajaran mesin untuk pengoptimuman automatik parameter.
Strategi perdagangan breakout yang boleh diskalakan adalah sistem breakout yang kukuh dan boleh disesuaikan. Ia mudah digunakan dan sangat dapat disesuaikan dengan menyesuaikan kemunculan semula dan menambahkan penapis. Ia boleh dengan mudah mengintegrasikan pengurusan risiko untuk kawalan risiko. Dengan pengoptimuman parameter dan integrasi pembelajaran mesin, strategi dapat berkembang dari masa ke masa untuk menyesuaikan diri dengan pasaran yang berubah. Secara keseluruhan, ia adalah strategi breakout universal yang disyorkan.
/*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")