Sumber dimuat naik... memuat...

Sistem Pengesanan Isyarat Dagangan Kuantitatif dan Optimisasi Strategi Multi-Exit

Penulis:ChaoZhang, Tarikh: 2024-12-13 11:39:06
Tag:

img

Ringkasan

Strategi ini adalah sistem dagangan kuantitatif berdasarkan isyarat dan overlay LuxAlgo®. Ia terutamanya memulakan kedudukan panjang dengan menangkap keadaan amaran tersuai dan menguruskan kedudukan melalui beberapa isyarat keluar. Sistem ini menggunakan reka bentuk modular, menyokong pelbagai kombinasi keadaan keluar, termasuk berhenti trailing pintar, pengesahan pembalikan trend, dan kerugian berhenti berasaskan peratusan tradisional. Di samping itu, sistem ini menyokong skala kedudukan, memberikan fleksibiliti yang lebih besar dalam pengurusan wang.

Prinsip Strategi

Logik teras merangkumi komponen utama berikut:

  1. Sistem Isyarat Masuk: Memicu isyarat masuk panjang melalui keadaan amaran LuxAlgo® yang disesuaikan.
  2. Pemasangan Posisi: Fungsi pemasangan pilihan untuk meningkatkan kedudukan pada pegangan sedia ada.
  3. Mekanisme Keluar Berbilang Lapisan:
    • Smart Trailing Stop: Memantau hubungan harga dengan garis trailing pintar
    • Penarikan Pengesahan Trend: Termasuk isyarat pengesahan penurunan asas dan dipertingkatkan
    • Isyarat Keluar Terbina: Menggunakan pelbagai keadaan keluar yang melekat pada penunjuk
    • Stop Loss Tradisional: Menyokong tetapan stop loss tetap berasaskan peratusan
  4. Pengurusan Jendela Masa: Menyediakan tetapan julat tarikh backtesting yang fleksibel.

Kelebihan Strategi

  1. Pengurusan Risiko Sistematik: Mengendalikan risiko penurunan secara berkesan melalui mekanisme keluar pelbagai lapisan.
  2. Pengurusan Posisi Fleksibel: Menyokong pelbagai strategi skala, dapat disesuaikan dengan keadaan pasaran.
  3. Kebolehsesuaian yang tinggi: Pengguna boleh menggabungkan secara bebas keadaan keluar yang berbeza untuk membuat sistem perdagangan peribadi.
  4. Reka bentuk modular: Modul fungsional yang agak bebas memudahkan penyelenggaraan dan pengoptimuman.
  5. Sokongan Backtesting Lengkap: Menyediakan tetapan parameter backtesting terperinci dan pengesahan data sejarah.

Risiko Strategi

  1. Risiko Kebergantungan Isyarat: Strategi sangat bergantung kepada kualiti isyarat penunjuk LuxAlgo®.
  2. Risiko penyesuaian persekitaran pasaran: Prestasi strategi boleh berbeza-beza secara ketara dalam keadaan pasaran yang berbeza.
  3. Risiko Sensitiviti Parameter: Pelbagai kombinasi keadaan keluar boleh membawa kepada keluar awal atau peluang yang hilang.
  4. Risiko Kecairan: Isu-isu kecairan pasaran boleh mempengaruhi keberkesanan pelaksanaan kemasukan dan keluar.
  5. Risiko Pelaksanaan Teknikal: Keperluan untuk memastikan operasi penunjuk dan strategi yang stabil untuk mengelakkan kegagalan teknikal.

Arahan Pengoptimuman Strategi

  1. Pengoptimuman Sistem Isyarat:
    • Memperkenalkan lebih banyak penunjuk teknikal untuk pengesahan isyarat
    • Membangunkan mekanisme penyesuaian ambang isyarat yang bersesuaian
  2. Peningkatan Kawalan Risiko:
    • Menambah mekanisme stop loss yang disesuaikan dengan turun naik
    • Membangunkan sistem pengurusan kedudukan dinamik
  3. Pengoptimuman Prestasi:
    • Mengoptimumkan kecekapan pengiraan untuk mengurangkan penggunaan sumber
    • Meningkatkan logik pemprosesan isyarat untuk mengurangkan ketinggalan
  4. Peluasan fungsi:
    • Tambah lebih banyak alat analisis persekitaran pasaran
    • Membangunkan rangka kerja pengoptimuman parameter yang lebih fleksibel

Ringkasan

Strategi ini menyediakan penyelesaian komprehensif untuk perdagangan kuantitatif dengan menggabungkan isyarat berkualiti tinggi LuxAlgo®® dengan sistem pengurusan risiko berbilang lapisan. Reka bentuk modular dan pilihan konfigurasi fleksibelnya memberikan kesesuaian dan skalabiliti yang baik. Walaupun terdapat beberapa risiko yang melekat, prestasi keseluruhan strategi mempunyai ruang yang signifikan untuk peningkatan melalui pengoptimuman dan penyempurnaan yang berterusan. Pengguna dinasihatkan untuk memberi perhatian kepada perubahan dalam keadaan pasaran, menyesuaikan tetapan parameter dengan sewajarnya, dan mengekalkan pemantauan risiko yang berterusan dalam aplikasi praktikal.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Chart0bserver
// This strategy is NOT from the LuxAlgo® developers.  We created this to compliment their hard work.  No association with LuxAlgo® is intended nor implied.

// Please visit https://chart.observer to test your Tradingview Strategies in our paper-trading sandbox environment. Webhook your alerts to our API.
// Past performance does not ensure future results.  This strategy provided with absolutely no warranty and is for educational purposes only

// The goal of this strategy is to enter a long position using the Custom Alert condition feature of LuxAlgo® Signals & Overlays™ indicator
// To trigger an exit from the long position, use one or more of the common exit signals which the Signals & Overlays™ indicator provides.
// You will need to connect those signals to this strategy in the dialog box.  
// We're calling this a "piggyback" strategy because the LuxAlgo® Signals & Overlays indicator must be present, and remain on the chart.
// The Signals and Overlays™ indicator is invite-only, and requires a paid subscription from LuxAlgo® - https://luxalgo.com/?rfsn=8404759.b37a73

//@version=6
strategy("Simple Backtester for LuxAlgo® Signals & Overlays™", "Simple Backtester for LuxAlgo® S&O ", true, pyramiding=3, default_qty_type = 'percent_of_equity', calc_on_every_tick = true, process_orders_on_close=false, calc_on_order_fills=true, default_qty_value = 33, initial_capital = 10000, currency = currency.USD, commission_type = format.percent, commission_value = 0.10 )

// Initialize a flag to track order placement
var bool order_placed = false

// Reset the flag at the start of each new bar
if (not na(bar_index) and bar_index != bar_index[1])
    order_placed := false

// === Inputs which the user needs to change in the configuration dialog to point to the corresponding LuxAlgo alerts === //
// === The Signals & Overlays indicator must be present on the chart in order for this to work === //
la_EntryAlert = input.source(close, "LuxAlgo® Custom Alert signal", "Replace 'close' with your LuxAlgo® entry signal. For example, try using their Custom Alert.", display=display.none, group="Enter Long Position")
useAddOnTrades = input.bool(false, "Add to your long position on LuxAlgo® signals", display=display.none, group="Add-On Trade Signal for Longs")
la_AddOnAlert = input.source(close, "Add to open longs with this signal", "Replace 'close' with your desired Add-On Trade Signal", display=display.none, group="Add-On Trade Signal for Longs")
la_SmartTrail = input.source(close, "LuxAlgo® Smart Trail", "Replace close with LuxAlgo® Smart Trail", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirm = input.source(close, "LuxAlgo® Any Bearish Confirmation", "Replace close with LuxAlgo® Any Bearish Confirmation", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirmPlus = input.source(close, "LuxAlgo® Bearish Confirmation+", "Replace close with LuxAlgo® Bearish Confirmation+", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BuiltInExits = input.source(close, "LuxAlgo® Bullish Exit", "Replace close with LuxAlgo® Bullish Exit", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_TrendCatcherDn = input.source(close, "LuxAlgo® Trend Catcher Down", "Replace close with LuxAlgo® Trend Catcher Down", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")

// === Check boxes alowing the user to select exit criteria from th long position === //
exitOnSmartTrail = input.bool(true, "Exit long trade on Smart Trail Switch Bearish", group="Exit Long Conditions")
exitOnBearishConf = input.bool(false, "Exit on Any Bearish Confirmation", group="Exit Long Conditions")
exitOnBearishConfPlus = input.bool(true, "Exit on Bearish Confirmation+", group="Exit Long Conditions")
exitOnBuiltInExits = input.bool(false, "Exit on Bullish Exits", group="Exit Long Conditions")
exitOnTrendCatcher = input.bool(false, "Exit on Trend Catcher Down", group="Exit Long Conditions")

// === Optional Stop Loss ===//
useStopLoss = input.bool(false, "Use a Stop Loss", group="Optional Stop Loss")
stopLossPercent = input.float(0.25, "Stop Loss %", minval=0.25, step=0.25, group="Optional Stop Loss")

// Use Lux Algo's signals as part of your strategy logic
buyCondition = la_EntryAlert > 0 

if useAddOnTrades and la_AddOnAlert > 0 and strategy.opentrades > 0 and not buyCondition
    buyCondition := true

sellCondition = false
sellComment = ""

if exitOnSmartTrail and ta.crossunder(close, la_SmartTrail)
    sellCondition := true
    sellComment := "Smart Trail"

if exitOnBearishConf and la_BearishConfirm == 1
    sellCondition := true
    sellComment := "Bearish"

if exitOnBearishConfPlus and la_BearishConfirmPlus == 1
    sellCondition := true
    sellComment := "Bearish+"

if exitOnBuiltInExits and la_BuiltInExits == 1
    sellCondition := true
    sellComment := "Bullish Exit"

if exitOnTrendCatcher and la_TrendCatcherDn == 1
    sellCondition := true
    sellComment := "Trnd Over"

// Stop Loss Calculation
stopLossMultiplyer = 1 - (stopLossPercent / 100)
float stopLossPrice = na
if strategy.position_size > 0
    stopLossPrice := strategy.position_avg_price * stopLossMultiplyer

// -----------------------------------------------------------------------------------------------------------//
// Back-testing Date Range code  ----------------------------------------------------------------------------//
// ---------------------------------------------------------------------------------------------------------//
fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12, group='Back-Testing Date Range')
fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, group='Back-Testing Date Range')
fromYear = input.int(defval=2024, title='From Year', minval=1970, group='Back-Testing Date Range')
thruMonth = 1 
thruDay = 1 
thruYear = 2112 

// === START/FINISH FUNCTION ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time
    time >= start and time <= finish ? true : false
// End Date range code -----//

if buyCondition and window() and not order_placed
    strategy.entry("Long", strategy.long)
    order_placed := true

if sellCondition and window() and not order_placed
    strategy.close("Long", comment=sellComment)
    order_placed := true

if useStopLoss and window()
    strategy.exit("Stop", "Long", stop=stopLossPrice)

Lebih lanjut