Sumber daya yang dimuat... Pemuatan...

Sistem Pelacakan Sinyal Perdagangan Kuantitatif dan Optimisasi Strategi Multi-Exit

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

img

Gambaran umum

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan sinyal dan overlay LuxAlgo®. Ini terutama memulai posisi panjang dengan menangkap kondisi peringatan khusus dan mengelola posisi melalui beberapa sinyal keluar. Sistem ini menggunakan desain modular, mendukung berbagai kombinasi kondisi keluar, termasuk stop trailing cerdas, konfirmasi pembalikan tren, dan stop loss berbasis persentase tradisional. Selain itu, sistem ini mendukung skala posisi, memberikan fleksibilitas yang lebih besar dalam manajemen uang.

Prinsip Strategi

Logika inti mencakup komponen kunci berikut:

  1. Sistem sinyal masuk: Memicu sinyal masuk panjang melalui kondisi peringatan LuxAlgo® yang disesuaikan.
  2. Posisi Scaling: Fungsi skala opsional untuk meningkatkan posisi pada kepemilikan yang ada.
  3. Mekanisme keluar multi-lapisan:
    • Smart Trailing Stop: Memantau hubungan harga dengan garis trailing pintar
    • Trend Confirmation Exit: Termasuk sinyal konfirmasi penurunan dasar dan ditingkatkan
    • Sinyal Keluar Terbina: Menggunakan beberapa kondisi keluar yang melekat pada indikator
    • Stop Loss Tradisional: Mendukung pengaturan stop loss tetap berdasarkan persentase
  4. Manajemen Jendela Waktu: Menyediakan pengaturan rentang tanggal backtesting yang fleksibel.

Keuntungan Strategi

  1. Manajemen Risiko Sistematis: Mengontrol risiko penurunan secara efektif melalui mekanisme keluar multi-layer.
  2. Manajemen Posisi Fleksibel: Mendukung berbagai strategi skala, dapat disesuaikan dengan kondisi pasar.
  3. Kemampuan penyesuaian yang tinggi: Pengguna dapat secara bebas menggabungkan kondisi keluar yang berbeda untuk membuat sistem perdagangan yang dipersonalisasi.
  4. Desain Modular: Modul fungsional yang relatif independen memfasilitasi pemeliharaan dan optimalisasi.
  5. Dukungan Backtesting Lengkap: Menyediakan pengaturan parameter backtesting yang rinci dan validasi data historis.

Risiko Strategi

  1. Risiko ketergantungan sinyal: Strategi sangat bergantung pada kualitas sinyal indikator LuxAlgo®.
  2. Risiko Adaptabilitas Lingkungan Pasar: Kinerja strategi dapat bervariasi secara signifikan di berbagai kondisi pasar.
  3. Risiko Sensitivitas Parameter: Beberapa kombinasi kondisi keluar dapat menyebabkan keluar prematur atau kesempatan yang hilang.
  4. Risiko likuiditas: Masalah likuiditas pasar dapat mempengaruhi efektivitas eksekusi masuk dan keluar.
  5. Risiko Implementasi Teknis: Kebutuhan untuk memastikan operasi indikator dan strategi yang stabil untuk menghindari kegagalan teknis.

Arah Optimasi Strategi

  1. Optimasi Sistem Sinyal:
    • Memperkenalkan lebih banyak indikator teknis untuk konfirmasi sinyal
    • Mengembangkan mekanisme penyesuaian ambang sinyal adaptif
  2. Peningkatan Kontrol Risiko:
    • Menambahkan mekanisme stop loss yang beradaptasi dengan volatilitas
    • Mengembangkan sistem manajemen posisi dinamis
  3. Optimasi Kinerja:
    • Mengoptimalkan efisiensi perhitungan untuk mengurangi konsumsi sumber daya
    • Meningkatkan logika pemrosesan sinyal untuk mengurangi latensi
  4. Ekstensi Fungsi:
    • Tambahkan lebih banyak alat analisis lingkungan pasar
    • Mengembangkan kerangka kerja optimasi parameter yang lebih fleksibel

Ringkasan

Strategi ini menyediakan solusi komprehensif untuk perdagangan kuantitatif dengan menggabungkan sinyal berkualitas tinggi LuxAlgo® dengan sistem manajemen risiko multi-lapisan. Desain modular dan opsi konfigurasi fleksibelnya memberikan kemampuan beradaptasi dan skalabilitas yang baik. Meskipun ada beberapa risiko yang melekat, kinerja keseluruhan strategi memiliki ruang yang signifikan untuk perbaikan melalui optimalisasi dan penyempurnaan terus-menerus. Pengguna disarankan untuk memperhatikan perubahan kondisi pasar, menyesuaikan pengaturan parameter sesuai, dan mempertahankan pemantauan risiko terus-menerus dalam aplikasi praktis.


/*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 banyak