Strategi Perdagangan Breakout dengan Scalability

Penulis:ChaoZhang, Tarikh: 2023-10-30 17:25:17
Tag:

img

Ringkasan

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.

Cara Ia Bekerja

Strategi ini mula-mula menggunakanswings()Fungsi untuk mengira swing tinggi dan rendah berdasarkan tempoh melihat kembali.swingLookbackIsyarat 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 berdasarkanstopTargetPercentparameter 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.

Kelebihan

  • Logik pecah mudah, mudah difahami dan dilaksanakan
  • Tempoh melihat kembali membolehkan mengoptimumkan parameter dan mengawal kekerapan perdagangan
  • Mudah mengintegrasikan stop loss, trailing stop dan pengurusan risiko lain
  • Sangat boleh diperluaskan untuk menambah penapis dan meningkatkan keuntungan
  • Berlaku untuk mana-mana jangka masa untuk dagangan intraday atau swing

Risiko dan Pengurangan

  • Tempoh semakan yang terlalu pendek boleh menyebabkan overtrading
  • Tempoh yang terlalu lama boleh kehilangan peluang perdagangan
  • Stop loss yang terlalu luas mengurangkan potensi keuntungan
  • Stop loss terlalu ketat boleh berhenti keluar dengan kerap

Pengurangan:

  • Uji tempoh melihat balik yang berbeza untuk mencari parameter optimum
  • Mengoptimumkan tahap stop loss untuk mengimbangi keuntungan vs kawalan risiko
  • Tambah penangguhan atau penangguhan lampu gantung untuk mengunci keuntungan
  • Tambah penapis untuk meningkatkan kualiti isyarat perdagangan
  • Mengoptimumkan parameter melalui backtesting

Peluang Peningkatan

Strategi ini boleh ditingkatkan dengan beberapa cara:

  1. Uji nilai tempoh melihat balik yang berbeza untuk mencari parameter optimum.

  2. Uji jangka masa yang berbeza seperti 5m, 15m, 1h untuk menentukan jangka masa yang terbaik.

  3. Mengoptimumkan peratusan stop loss untuk mengimbangi potensi keuntungan berbanding pengurusan risiko.

  4. Tambah penapis seperti kelantangan, volatiliti untuk mengurangkan persediaan yang rendah.

  5. Mengintegrasikan lebih banyak mekanisme pengurusan risiko seperti berhenti, mengambil keuntungan.

  6. Pengoptimuman parameter melalui analisis maju dan pembelajaran mesin.

  7. Memperkenalkan AI / pembelajaran mesin untuk pengoptimuman automatik parameter.

Kesimpulan

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")

Lebih lanjut