Penjejakan isyarat dagangan kuantitatif dan sistem pengoptimuman strategi keluar yang pelbagai


Tarikh penciptaan: 2024-12-13 11:39:06 Akhirnya diubah suai: 2024-12-13 11:39:06
Salin: 2 Bilangan klik: 367
1
fokus pada
1617
Pengikut

Penjejakan isyarat dagangan kuantitatif dan sistem pengoptimuman strategi keluar yang pelbagai

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan isyarat LuxAlgo® dan indikator overlay. Ia membuka kedudukan berbilang dengan menangkap keadaan amaran tersuai, dan menggabungkan beberapa isyarat keluar untuk menguruskan pegangan. Sistem ini menggunakan reka bentuk modular yang menyokong penggunaan gabungan pelbagai keadaan keluar, termasuk tracking smart stop loss, pengesahan trend reversal, dan peratusan stop loss tradisional.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Sistem isyarat kemasukan: mencetuskan isyarat kemasukan berganda melalui keadaan amaran LuxAlgo® yang disesuaikan.
  2. Pengurusan Penyimpanan: fungsi penyimpanan boleh diaktifkan secara pilihan untuk menambah kedudukan berdasarkan kedudukan sedia ada.
  3. Mekanisme keluar bertingkat:
    • Hentikan Tracking Smart: Hubungan Antara Harga Pemantauan dan Talian Tracking Smart
    • Pengesahan tren keluar: isyarat pengesahan kosong untuk versi asas dan peningkatan
    • Isyarat keluar terbina dalam: menggunakan pelbagai keadaan keluar yang terdapat pada tali pengarah
    • Stop loss tradisional: menyokong tetapan stop loss tetap berdasarkan peratusan
  4. Pengurusan tetingkap masa: menyediakan fungsi penyetempatan julat tarikh yang fleksibel.

Kelebihan Strategik

  1. Pengurusan risiko sistematik: Mengendalikan risiko penurunan dengan berkesan melalui mekanisme keluar bertingkat.
  2. Pengurusan kedudukan yang fleksibel: menyokong pelbagai strategi kenaikan dan penurunan kedudukan, boleh disesuaikan dengan keadaan pasaran yang dinamik.
  3. Kemudahan penyesuaian yang tinggi: Pengguna bebas untuk menggabungkan syarat keluar yang berbeza untuk membuat sistem transaksi yang diperibadikan.
  4. Reka bentuk modular: setiap modul fungsi agak bebas, memudahkan penyelenggaraan dan pengoptimuman.
  5. Sokongan pengembalian lengkap: menyediakan tetapan parameter pengembalian terperinci, menyokong pengesahan data sejarah.

Risiko Strategik

  1. Risiko ketergantungan isyarat: Strategi bergantung kepada kualiti isyarat dari penunjuk LuxAlgo®.
  2. Risiko adaptasi persekitaran pasaran: Prestasi strategi mungkin berbeza dalam keadaan pasaran yang berbeza.
  3. Risiko sensitiviti parameter: gabungan pelbagai syarat keluar boleh menyebabkan keluar terlalu awal atau kehilangan peluang.
  4. Risiko kecairan: Apabila pasaran kurang kecairan, ia boleh menjejaskan pelaksanaan masuk dan keluar.
  5. Risiko pencapaian teknikal: keperluan untuk memastikan operasi yang stabil dari petunjuk dan strategi untuk mengelakkan kegagalan teknikal.

Arah pengoptimuman strategi

  1. Optimasi sistem isyarat:
    • Memperkenalkan lebih banyak petunjuk teknikal untuk pengesahan isyarat
    • Membangunkan mekanisme penyesuaian tunjangan isyarat yang bersesuaian
  2. Pengendalian risiko dipertingkatkan:
    • Mekanisme penangguhan kerugian yang menyesuaikan diri dengan kadar turun naik
    • Membangunkan sistem pengurusan kedudukan yang dinamik
  3. Optimasi prestasi:
    • Mengoptimumkan kecekapan pengiraan dan mengurangkan penggunaan sumber
    • Peningkatan logik pemprosesan isyarat, mengurangkan kelewatan
  4. Perkakasan tambahan:
    • Menambah alat analisis persekitaran pasaran
    • Membangunkan kerangka optimasi parameter yang lebih fleksibel

ringkaskan

Strategi ini menawarkan penyelesaian lengkap untuk perdagangan kuantitatif dengan menggabungkan isyarat berkualiti tinggi LuxAlgo® dan sistem pengurusan risiko bertingkat. Reka bentuk modular dan pilihan konfigurasi fleksibel menjadikannya sangat mudah disesuaikan dan dapat diperluas. Walaupun terdapat beberapa risiko yang wujud, terdapat ruang untuk meningkatkan prestasi keseluruhan strategi dengan pengoptimuman dan penyempurnaan yang berterusan.

Kod sumber strategi
/*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)