Strategi dagangan aliran dinamik berbilang penunjuk: SuperTrend, ADX dan sistem analisis komprehensif delta kecairan

PSAR supertrend ADX Liquidity Delta ATR 趋势交易 波段策略 风险管理 技术指标
Tarikh penciptaan: 2025-05-15 16:37:32 Akhirnya diubah suai: 2025-05-15 16:37:32
Salin: 1 Bilangan klik: 476
2
fokus pada
319
Pengikut

Strategi dagangan aliran dinamik berbilang penunjuk: SuperTrend, ADX dan sistem analisis komprehensif delta kecairan Strategi dagangan aliran dinamik berbilang penunjuk: SuperTrend, ADX dan sistem analisis komprehensif delta kecairan

Gambaran keseluruhan

Strategi ini merupakan satu set sistem perdagangan analisis teknikal yang komprehensif untuk mengenal pasti peluang perdagangan gelombang yang berkemungkinan tinggi dengan menggabungkan pelbagai petunjuk. Sistem ini adalah berdasarkan kepada petunjuk SuperTrend sebagai penapis arah trend, digabungkan dengan ADX (Indeks Arah Rata-rata) untuk mengesahkan kekuatan trend, dan menggunakan analisis Delta Kecairan (Liquidity Delta) untuk menganalisis ketidakseimbangan tekanan jual beli, untuk menghasilkan isyarat masuk dan keluar dengan tepat dalam pelbagai persekitaran pasaran.

Prinsip Strategi

Strategi ini membentuk isyarat dagangan dengan bekerja bersama dengan empat petunjuk teras berikut:

  1. Indeks SuperTrend: Sebagai penapis arah trend utama, tetapan pengoptimuman ((faktor: 3.0, kitaran ATR: 10) digunakan untuk mengimbangi tindak balas dan kebolehpercayaan. Diiktiraf sebagai tren naik apabila harga berada di atas garis SuperTrend; Diiktiraf sebagai tren menurun apabila harga berada di bawah garis SuperTrend.

  2. Indeks ADX: Digunakan untuk mengesahkan kekuatan trend semasa, menyaring di luar slaid atau keadaan pasaran yang berantakan. Strategi menggunakan cara pelaksanaan tersuai, mengira gelombang sebenar, bergerak ke arah positif dan negatif, dan akhirnya menghasilkan nilai ADX. Apabila nilai ADX lebih tinggi daripada tetes yang ditetapkan (default 25), yang menunjukkan adanya trend yang kuat, sistem akan lebih cenderung untuk menghasilkan perdagangan isyarat.

  3. Indeks Delta KecairanAnalisis ketidakseimbangan tekanan beli dan jual dalam jumlah yang diperdagangkan, mengira jumlah beli dan beli, dan mendapatkan nilai delta akhir melalui satu siri pengolahan standardisasi dan kelancaran. Ia menghasilkan isyarat plus apabila nilai delta melebihi paras paras positif dan isyarat minus apabila ia berada di bawah paras negatif, untuk mengesahkan arah trend dan potensi pembalikan.

  4. Indeks PSAR(Optional): boleh digunakan sebagai pengesahan tambahan perubahan trend, dan dimatikan secara lalai untuk mengurangkan penapisan isyarat. Apabila harga lebih tinggi daripada titik PSAR, ia dianggap sebagai trend naik; apabila harga lebih rendah daripada titik PSAR, ia dianggap sebagai trend menurun.

Logik dagangan menghasilkan isyarat komposit dengan menggabungkan semua penunjuk yang diaktifkan. Isyarat pembelian atau penjualan akhir dihasilkan apabila semua penunjuk menunjuk ke arah yang sama. Sebagai contoh, sistem hanya akan menghasilkan isyarat pembelian apabila syarat PSAR, syarat SuperTrend, syarat ADX dan syarat Delta Liquiditi dipenuhi.

Kelebihan Strategik

Strategi ini mempunyai beberapa kelebihan yang ketara:

  1. Sistem pengesahan pelbagai dimensiDengan mengintegrasikan pelbagai jenis penunjuk teknikal, pengesahan dagangan dalam pelbagai dimensi dari trend, kekuatan dan jumlah transaksi, risiko isyarat palsu dikurangkan dengan ketara, dan ketepatan dagangan ditingkatkan.

  2. Sangat boleh menyesuaikan diriStrategi: membolehkan pengguna untuk memilih arah perdagangan secara fleksibel dan mengaktifkan / menonaktifkan petunjuk tertentu, membolehkan sistem menyesuaikan diri dengan pelbagai keadaan pasaran dan pelbagai jenis perdagangan.

  3. Kawalan risiko yang ketatPendahuluan: Pendahuluan dan penangguhan yang dibina dalam peratusan tetap, memastikan setiap perdagangan mempunyai had risiko dan sasaran keuntungan yang telah ditentukan, melindungi keselamatan dana dengan berkesan.

  4. Mengambil kira kos transaksi sebenarModel strategi termasuk komisen ((0.035%) dan titik slippage ((2 mata) dalam pengiraan, menjadikan keputusan pengesanan semula lebih sesuai dengan keadaan perdagangan sebenar.

  5. Isyarat perdagangan visual: Memberi anak panah isyarat beli / jual yang jelas, dengan saiz yang boleh disesuaikan, mudah dikenali dengan cepat di carta.

  6. Panel maklumat: Dinamik menunjukkan penunjuk dan tetapan risiko yang aktif pada masa ini, memberikan maklum balas segera mengenai status operasi strategi.

  7. Pengurusan kedudukan konservatif: Secara lalai menggunakan 5% faedah sebagai saiz kedudukan setiap perdagangan, untuk mengelakkan kehilangan wang yang disebabkan oleh perdagangan berlebihan.

Risiko Strategik

Walaupun strategi ini dirancang secara menyeluruh, terdapat risiko yang berpotensi:

  1. Kepekaan ParameterPrestasi strategi sangat bergantung kepada parameter penunjuk, terutamanya faktor SuperTrend dan ADX Threshold, di mana pengoptimuman parameter yang berbeza mungkin diperlukan dalam keadaan pasaran yang berbeza, atau ia boleh menyebabkan perdagangan berlebihan atau kehilangan peluang penting.

  2. Risiko ketinggalan zamanOleh kerana penggunaan pelbagai petunjuk purata bergerak, isyarat mungkin terlewat, yang menyebabkan masuk atau keluar tidak tepat pada masanya dalam pasaran yang berbalik dengan cepat.

  3. Risiko berkaitanTerdapat kemungkinan terdapat kaitan dalaman antara pelbagai penunjuk teknikal, yang bermaksud bahawa pengesahan yang seolah-olah bebas mungkin berasal dari penunjuk berdasarkan model matematik yang serupa, yang mengurangkan nilai sebenar pengesahan berganda.

  4. Risiko yang terlalu optimumPrestasi yang baik dalam tempoh 2021-2033 tidak semestinya bermakna prestasi yang sama dalam pasaran masa depan, terutamanya jika parameter ini adalah hasil pengoptimuman berlebihan terhadap data sejarah.

Penyelesaian:

  • Mengkaji semula dan menyesuaikan parameter penunjuk secara berkala untuk memastikan ia masih sesuai dengan keadaan pasaran semasa
  • Pertimbangkan untuk menambah penunjuk berdasarkan prinsip yang berbeza, seperti penunjuk emosi atau penunjuk asas, mengurangkan hubungan antara penunjuk teknikal
  • Menerapkan strategi hentikan kerugian yang dinamik, seperti menjejaki hentikan kerugian, untuk lebih beradaptasi dengan turun naik pasaran
  • Ujian langsung dengan modal kecil untuk mengesahkan prestasi strategi di bawah keadaan pasaran yang berbeza

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan:

  1. Pengaturan parameter dinamikMekanisme untuk menyesuaikan faktor SuperTrend dan penurunan nilai ADX secara automatik berdasarkan turun naik pasaran, membolehkan strategi untuk menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza. Sebagai contoh, faktor SuperTrend yang lebih kecil digunakan dalam pasaran turun naik rendah dan faktor yang lebih besar digunakan dalam pasaran turun naik tinggi.

  2. Penapis masaMenambah mekanisme penapisan berasaskan masa untuk mengelakkan dagangan pada masa yang dikenali sebagai turun naik atau turun naik yang tinggi, seperti hujung minggu di pasaran cryptocurrency atau pengumuman data ekonomi penting di pasaran forex.

  3. Analisis pelbagai kerangka masaPengesahan trend pada bingkai masa yang lebih tinggi: Sebagai contoh, hanya masuk ke dalam perdagangan apabila arah trend garisan matahari selaras dengan bingkai masa perdagangan semasa. Ini dapat meningkatkan peluang kemenangan strategi dengan ketara.

  4. Strategi Hentikan Kerosakan Pintar: Ganti perhentian peratusan tetap dengan perhentian dinamik berdasarkan ATR atau kedudukan sokongan / rintangan, lebih baik mencerminkan keadaan pasaran yang sebenarnya bergolak, mengurangkan perhentian yang dicetuskan oleh bunyi pasaran.

  5. Penambahan penapis kemasukanPertimbangan untuk menambah syarat penapisan seperti penilaian RSI overbought atau ujian sempadan Brinks, hanya masuk pada tahap harga yang lebih baik, meningkatkan kualiti masuk.

  6. Pengurusan wang yang lebih baikPengurusan kedudukan dinamik berdasarkan prestasi strategi semasa dan keadaan pasaran, meningkatkan kedudukan secara beransur-ansur apabila strategi berfungsi dengan baik dan mengurangkan kedudukan apabila ketidakpastian meningkat.

  7. Pembelajaran Mesin: Menggunakan teknologi pembelajaran mesin untuk mengoptimumkan pembahagian berat indikator, menyesuaikan kepentingan setiap indikator secara automatik dalam pembentukan isyarat akhir mengikut keadaan pasaran yang berbeza.

ringkaskan

Strategi perdagangan trend dinamik multi-indikator membina sistem perdagangan yang komprehensif dan fleksibel yang sesuai untuk perdagangan gelombang dalam pelbagai persekitaran pasaran dengan mengintegrasikan beberapa petunjuk teknikal seperti SuperTrend, ADX, dan Delta Likuiditi. Kelebihan utama strategi ini adalah mekanisme pengesahan isyarat berbilang dimensi dan kerangka pengurusan risiko yang ketat, yang dapat menyaring bunyi pasaran dengan berkesan dan melindungi dana perdagangan. Walau bagaimanapun, pengguna perlu memperhatikan risiko yang berpotensi seperti sensitiviti parameter dan metrik lag, dan menilai semula prestasi strategi secara berkala.

Sistem ini mempunyai potensi untuk meningkatkan lagi keuntungan dan kestabilan dengan melaksanakan arah pengoptimuman yang disyorkan, seperti penyesuaian parameter dinamik, analisis bingkai masa berbilang dan strategi berhenti rugi pintar. Akhirnya, strategi ini memberikan peniaga kuantitatif dengan rangka kerja yang kukuh yang boleh disesuaikan dan diperluas mengikut keutamaan risiko dan pandangan pasaran individu.

Kod sumber strategi
/*backtest
start: 2025-01-27 00:00:00
end: 2025-05-14 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TiamatCrypto

//@version=6
// ====================================================================================
// Multi-Indicator Swing Trading Strategy [TIAMATCRYPTO]v6
// ====================================================================================
// DESCRIPTION:
// This strategy uses a combination of technical indicators to identify swing trading
// opportunities in various markets. The default settings are optimized for daily
// timeframes on cryptocurrency and forex markets.
// 
// RECOMMENDED DEFAULT SETTINGS:
// - Trading direction: Both (performs well in trending and ranging markets)
// - Position size: 5% (conservative position sizing to manage risk)
// - Stop Loss: 2% (conservative risk management for capital preservation)
// - Take Profit: 4% (realistic profit target with 1:2 risk-reward ratio)
// - Initial capital: $10,000 (realistic starting account size)
// - Timeframe: 2m (best performance on 2m charts)
// - Testing period: 2021-2033 (provides sufficient sample size of trades)
// ====================================================================================

strategy("Multi-Indicator Swing [TIAMATCRYPTO]v6", overlay=true, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=5, 
     initial_capital=10000, commission_type=strategy.commission.percent, 
     commission_value=0.035, slippage=2)

// === BASIC SETTINGS ===
// Backtesting time period set directly in the code for realistic testing
var startDateInput = timestamp("2021-01-01T00:00:00")
var endDateInput = timestamp("2033-12-31T23:59:59")
var inDateRange = time >= startDateInput and time <= endDateInput

// Trading direction settings
tradeDirection = input.string("Both", "Trading Direction", options=["Long Only", "Short Only", "Both"], group="Basic Settings")

// === INDICATOR SWITCHES ===
// PSAR is now disabled by default
usePSAR = input.bool(false, "Use PSAR", group="Indicator Switches")
useSupertrend = input.bool(true, "Use Supertrend", group="Indicator Switches")
useADX = input.bool(true, "Use ADX", group="Indicator Switches")
useLiquidityDelta = input.bool(true, "Use Liquidity Delta", group="Indicator Switches")

// === INDICATOR SETTINGS SECTION ===
// PSAR Settings
// Default PSAR settings are conservative and work well across multiple markets
psarStart = input.float(0.02, "PSAR Initial Value", minval=0.01, maxval=0.1, step=0.01, group="PSAR Settings")
psarIncrement = input.float(0.02, "PSAR Increment", minval=0.01, maxval=0.1, step=0.01, group="PSAR Settings")
psarMaximum = input.float(0.2, "PSAR Maximum", minval=0.1, maxval=0.5, step=0.05, group="PSAR Settings")

// Supertrend Settings
// Factor 3.0 provides a good balance between sensitivity and false signals
atrPeriod = input.int(10, "SuperTrend ATR Period", minval=1, maxval=50, group="SuperTrend Settings")
factor = input.float(3.0, "SuperTrend Multiplier", minval=1, maxval=10, step=0.1, group="SuperTrend Settings")

// ADX Settings
// ADX threshold of 25 is standard for identifying strong trends
adxLength = input.int(14, "ADX Length", minval=1, maxval=50, group="ADX Settings")
adxThreshold = input.int(25, "ADX Trend Strength Threshold", minval=10, maxval=50, group="ADX Settings")

// Liquidity Delta Settings
// These settings help identify significant volume imbalances for trend confirmation
deltaLength = input.int(14, "Liquidity Delta Length", minval=1, maxval=50, group="Liquidity Delta")
deltaSmooth = input.int(3, "Delta Smoothing", minval=1, maxval=20, group="Liquidity Delta")
deltaThreshold = input.float(0.5, "Delta Signal Threshold", minval=0.1, maxval=5, step=0.1, group="Liquidity Delta")

// Risk Management Settings
// Conservative settings to ensure capital preservation
useStopLoss = input.bool(true, "Use Stop Loss", group="Risk Management")
useTakeProfit = input.bool(true, "Use Take Profit", group="Risk Management")
stopLossPercent = input.float(2.0, "Stop Loss (%)", minval=0.5, maxval=5, step=0.1, group="Risk Management")
takeProfitPercent = input.float(4.0, "Take Profit (%)", minval=1.0, maxval=10, step=0.1, group="Risk Management")

// Visualization Settings
signalSize = input.string("Normal", "Signal Size", options=["Small", "Normal", "Large"], group="Visualization")
buyColor = input.color(color.green, "Buy Signal Color", group="Visualization")
sellColor = input.color(color.red, "Sell Signal Color", group="Visualization")

// === INDICATOR CALCULATIONS ===
// All remaining indicators set to initialize as true when their respective switch is off

// PSAR Calculations
psar = ta.sar(psarStart, psarIncrement, psarMaximum)
psarCondition = not usePSAR or (close > psar)
psarSellCondition = not usePSAR or (close < psar)

// Supertrend Calculations
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
supertrendCondition = not useSupertrend or (supertrendDirection > 0)
supertrendSellCondition = not useSupertrend or (supertrendDirection < 0)

// ADX Calculations - custom implementation
trueRange = math.max(high - low, math.abs(high - close[1]), math.abs(low - close[1]))
smoothedTrueRange = ta.sma(trueRange, adxLength)
dmPlus = high > high[1] ? math.max(high - high[1], 0) : 0
dmMinus = low[1] > low ? math.max(low[1] - low, 0) : 0
smoothedDmPlus = ta.sma(dmPlus, adxLength)
smoothedDmMinus = ta.sma(dmMinus, adxLength)
diPlus = smoothedTrueRange > 0 ? 100 * smoothedDmPlus / smoothedTrueRange : 0
diMinus = smoothedTrueRange > 0 ? 100 * smoothedDmMinus / smoothedTrueRange : 0
dx = (diPlus + diMinus) > 0 ? math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100 : 0
adxValue = ta.sma(dx, adxLength)
adxCondition = not useADX or (adxValue > adxThreshold)

// Liquidity Delta Calculations
bidVolume = close < open ? volume : volume * (high - close) / (high - low + 0.000001)
askVolume = close > open ? volume : volume * (close - low) / (high - low + 0.000001)
deltaRaw = bidVolume - askVolume
deltaAvg = ta.sma(deltaRaw, deltaLength)
deltaNormalized = deltaAvg / ta.sma(volume, deltaLength)
deltaSmoothed = ta.ema(deltaNormalized, deltaSmooth)

// Delta Signals
bullishDelta = deltaSmoothed > deltaThreshold
bearishDelta = deltaSmoothed < -deltaThreshold
deltaCondition = not useLiquidityDelta or bullishDelta
deltaSellCondition = not useLiquidityDelta or bearishDelta

// === TRADING LOGIC ===
// Buy signal - combination of all active indicators
buySignal = psarCondition and supertrendCondition and adxCondition and deltaCondition

// Sell signal - combination of all active indicators
sellSignal = psarSellCondition and supertrendSellCondition and adxCondition and deltaSellCondition

// Apply trading direction
isLongAllowed = tradeDirection == "Long Only" or tradeDirection == "Both"
isShortAllowed = tradeDirection == "Short Only" or tradeDirection == "Both"
finalBuySignal = buySignal and isLongAllowed
finalSellSignal = sellSignal and isShortAllowed

// === POSITION ENTRY WITH RISK MANAGEMENT ===
// Conservative position management with defined risk parameters
if finalBuySignal and inDateRange
    strategy.entry("Long", strategy.long)

    // Conditional setting of stop-loss and take-profit
    if useStopLoss or useTakeProfit
        stopLevel = useStopLoss ? close * (1 - stopLossPercent / 100) : na
        takeProfitLevel = useTakeProfit ? close * (1 + takeProfitPercent / 100) : na
        strategy.exit("Long Exit", "Long", stop=stopLevel, limit=takeProfitLevel)

if finalSellSignal and inDateRange
    strategy.entry("Short", strategy.short)

    // Conditional setting of stop-loss and take-profit
    if useStopLoss or useTakeProfit
        stopLevel = useStopLoss ? close * (1 + stopLossPercent / 100) : na
        takeProfitLevel = useTakeProfit ? close * (1 - takeProfitPercent / 100) : na
        strategy.exit("Short Exit", "Short", stop=stopLevel, limit=takeProfitLevel)

// === SIGNAL VISUALIZATION ===
// Creating separate signals for different sizes
buySmallSignal = finalBuySignal and signalSize == "Small"
buyNormalSignal = finalBuySignal and signalSize == "Normal"
buyLargeSignal = finalBuySignal and signalSize == "Large"

sellSmallSignal = finalSellSignal and signalSize == "Small"
sellNormalSignal = finalSellSignal and signalSize == "Normal"
sellLargeSignal = finalSellSignal and signalSize == "Large"

// Draw signals for each size
plotshape(buySmallSignal and inDateRange, title="Buy Small", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.small)
plotshape(buyNormalSignal and inDateRange, title="Buy Normal", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.normal)
plotshape(buyLargeSignal and inDateRange, title="Buy Large", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.large)

plotshape(sellSmallSignal and inDateRange, title="Sell Small", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.small)
plotshape(sellNormalSignal and inDateRange, title="Sell Normal", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.normal)
plotshape(sellLargeSignal and inDateRange, title="Sell Large", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.large)

// === INFORMATION PANEL ===
// Building list of active indicators
indList = ""
indList := usePSAR ? indList + "PSAR, " : indList
indList := useSupertrend ? indList + "SuperT, " : indList
indList := useADX ? indList + "ADX, " : indList
indList := useLiquidityDelta ? indList + "Delta" : indList

// Remove last comma if it exists
if str.endswith(indList, ", ")
    indList := str.substring(indList, 0, str.length(indList) - 2)

// Building risk management text
riskText = ""
if useStopLoss and useTakeProfit
    riskText := str.tostring(stopLossPercent, "#.#") + "% SL, " + str.tostring(takeProfitPercent, "#.#") + "% TP"
else if useStopLoss
    riskText := str.tostring(stopLossPercent, "#.#") + "% SL"
else if useTakeProfit
    riskText := str.tostring(takeProfitPercent, "#.#") + "% TP"
else
    riskText := "Disabled"

// Display strategy information
var table infoTable = table.new(position.top_right, 2, 5, border_width=1)
table.cell(infoTable, 0, 0, "Strategy:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 0, "Multi-Indicator Swing", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 1, "Period:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 1, "2021-2023", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 2, "Direction:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 2, tradeDirection, bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 3, "Indicators:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 3, indList, bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 4, "Risk Management:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 4, riskText, bgcolor=color.new(color.blue, 90), text_color=color.white)