Strategi perdagangan bingkai berbilang masa berdasarkan klasifikasi Lorenz

EMA CI HTF TA
Tarikh penciptaan: 2024-07-31 11:49:32 Akhirnya diubah suai: 2024-07-31 11:49:32
Salin: 0 Bilangan klik: 673
1
fokus pada
1617
Pengikut

Strategi perdagangan bingkai berbilang masa berdasarkan klasifikasi Lorenz

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan jangka masa berbilang berdasarkan klasifikasi Lorentz, yang menggabungkan harga sasaran dan mekanisme hentian dinamik. Ia menggunakan purata bergerak indeks (EMA) dan indeks klasifikasi (CI) untuk mengenal pasti trend pasaran dan melakukan analisis silang pada jangka masa tinggi dan jangka masa semasa. Strategi ini memaksimumkan keuntungan dengan menetapkan peratusan sasaran, sambil menggunakan mekanisme retrospektif untuk mengesahkan keberkesanan isyarat perdagangan.

Prinsip Strategi

Inti strategi ini adalah Klasifikasi Lorentz, yang menggabungkan Triple Moving Average (TMA) dan Klasifikasi Indeks (CI) untuk menghasilkan isyarat perdagangan. Langkah-langkahnya adalah seperti berikut:

  1. Hitung EMA tiga kali: EMA1, EMA2 dan EMA3
  2. Pengiraan indeks klasifikasi ((CI): CI = (EMA1 - EMA2) / (0.015 * EMA ((((EMA1 - EMA2 , panjang)) * 100。
  3. Garis Lorentz = EMA3 + CI。

Strategi ini mengira garis Lorentz pada jangka masa semasa dan jangka masa yang lebih tinggi untuk memberikan perspektif pasaran yang berbilang dimensi. Isyarat perdagangan didasarkan pada persilangan harga dengan garis Lorentz dan disahkan melalui mekanisme pertimbangan balik. Isyarat beli dicetuskan apabila harga melintasi garis Lorentz dan harga terendah dalam tempoh pertimbangan balik adalah di bawah garis Lorentz; isyarat jual sebaliknya.

Strategi ini juga memperkenalkan mekanisme harga sasaran, yang menentukan titik keluar berdasarkan peratusan sasaran yang ditetapkan oleh pengguna. Pada masa yang sama, ia juga mewujudkan stop loss dinamik untuk mengawal risiko.

Kelebihan Strategik

  1. Analisis jangka masa berbilang: Dengan menggabungkan garis Lorentz pada jangka masa semasa dan lebih tinggi, strategi dapat menangkap trend pasaran yang lebih menyeluruh dan mengurangkan isyarat palsu.

  2. Pengenalan Trend Dinamik: Klasifikasi Lorenz mampu menyesuaikan diri dengan cepat dengan perubahan pasaran, memberikan keupayaan untuk mengenal pasti trend yang sensitif.

  3. Mekanisme pengesahan isyarat: menggunakan tempoh semak semula untuk mengesahkan isyarat dagangan, berkesan mengurangkan kemungkinan perdagangan yang salah.

  4. Pengoptimuman harga sasaran: Dengan menetapkan peratusan sasaran, strategi dapat memaksimumkan keuntungan dalam keadaan baik.

  5. Pengurusan risiko: Memperkenalkan mekanisme hentian dinamik untuk mengawal risiko setiap dagangan.

  6. Visualisasi dan statistik: Strategi menyediakan paparan carta dan statistik perdagangan yang intuitif untuk memudahkan pedagang menganalisis dan mengoptimumkan prestasi strategi.

  7. Fleksibiliti: Pelbagai parameter yang boleh disesuaikan membolehkan peniaga mengoptimumkan mengikut keadaan pasaran yang berbeza dan keutamaan peribadi.

Risiko Strategik

  1. Sensitiviti parameter: prestasi strategi sangat bergantung kepada pilihan parameter input, dan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau kehilangan peluang penting.

  2. Kepercayaan keadaan pasaran: Dalam pasaran yang bergolak, strategi mungkin menghasilkan isyarat palsu yang kerap, yang menyebabkan kerugian berturut-turut.

  3. Risiko tergelincir: Dalam pasaran yang berfluktuasi dengan cepat, harga pelaksanaan sebenar mungkin berbeza dengan harga isyarat.

  4. Risiko terlalu optimum: penyesuaian parameter yang berlebihan untuk menyesuaikan data sejarah boleh menyebabkan overfit, yang mempengaruhi prestasi cakera hidup masa depan.

  5. Kerosakan teknikal: Keputusan perdagangan yang salah mungkin disebabkan oleh kerosakan sistem atau kesilapan data yang bergantung kepada pengiraan petunjuk teknikal yang rumit.

Untuk mengurangkan risiko ini, disyorkan untuk:

  • Mengadakan pengkajian sejarah dan ujian ke hadapan.
  • Menggunakan pengurusan kedudukan yang sesuai dan langkah-langkah kawalan risiko.
  • Semak dan sesuaikan parameter strategi secara berkala untuk menyesuaikan diri dengan keadaan pasaran yang berubah.
  • Menerapkan mekanisme pengendalian dan pemantauan yang kukuh.

Arah pengoptimuman strategi

  1. Penyesuaian parameter dinamik: Mekanisme penyesuaian parameter adaptasi yang dapat menyesuaikan panjang EMA dan nilai tebing secara automatik mengikut turun naik pasaran.

  2. Menambah penapis: memperkenalkan penapis untuk penapis tambahan atau penapis asas untuk meningkatkan kualiti isyarat.

  3. Integrasi pembelajaran mesin: Mengoptimumkan pemilihan parameter dan proses penjanaan isyarat menggunakan algoritma pembelajaran mesin.

  4. Analisis perkaitan pelbagai varieti: mengambil kira data pelbagai varieti yang berkaitan, memberikan perspektif pasaran yang lebih menyeluruh.

  5. Penyatuan peristiwa berita: Menambah fungsi analisis peristiwa berita untuk menyesuaikan tindakan strategi semasa data ekonomi penting dikeluarkan.

  6. Penyesuaian turun naik: Persentase sasaran dan paras hentian disesuaikan mengikut pergerakan turun naik pasaran.

  7. Meningkatkan pengurusan risiko: Menerapkan strategi pengurusan kedudukan dan kawalan risiko yang lebih kompleks, seperti penyesuaian kedudukan berdasarkan turun naik.

Arahan pengoptimuman ini bertujuan untuk meningkatkan fleksibiliti dan kestabilan strategi, yang membolehkan ia mengekalkan prestasi yang baik dalam keadaan pasaran yang berbeza.

ringkaskan

Strategi sasaran jangka masa pelbagai yang dikategorikan oleh Lawrence adalah sistem perdagangan komprehensif yang menggabungkan kaedah analisis teknikal canggih dan mekanisme pengurusan risiko yang cerdas. Dengan analisis jangka masa berbilang, pengenalan trend dinamik dan pengoptimuman harga sasaran, strategi ini berpotensi untuk mencapai prestasi perdagangan yang stabil dalam pelbagai keadaan pasaran. Walau bagaimanapun, ia juga menghadapi cabaran seperti kepekaan parameter dan ketergantungan pasaran. Dengan pengoptimuman dan pengurusan risiko yang berterusan, pedagang dapat memanfaatkan sepenuhnya kelebihan strategi ini sambil mengawal potensi risiko dengan berkesan.

Kod sumber strategi
/*backtest
start: 2023-07-31 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lorenzian Classification Strategy with Target and Multi-Timeframe", overlay=true)

// Input parameters
length = input.int(5, "Lorenzian Length", minval=1)
threshold = input.float(1.0, "Threshold", step=0.1)
lookback = input.int(3, "Lookback Candles", minval=1, maxval=20)
targetPercentage = input.float(1.5, "Target Percentage (%)", step=0.1) // Target percentage for exit
higherTimeframe = input.timeframe("D", "Higher Timeframe") // Higher timeframe for multi-timeframe analysis

// Lorenzian Classification calculation for current timeframe
ema1 = ta.ema(hlc3, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)

d = ema1 - ema2
ci = d / (0.015 * ta.ema(math.abs(d), length)) * 100

lorenzian = ema3 + ci

// Lorenzian Classification calculation for higher timeframe
hlc3_htf = request.security(syminfo.tickerid, higherTimeframe, (high + low + close)/3 )
ema1_htf = ta.ema(hlc3_htf, length)
ema2_htf = ta.ema(ema1_htf, length)
ema3_htf = ta.ema(ema2_htf, length)

d_htf = ema1_htf - ema2_htf
ci_htf = d_htf / (0.015 * ta.ema(math.abs(d_htf), length)) * 100

lorenzian_htf = ema3_htf + ci_htf

// Signal generation
crossUp = ta.crossover(close, lorenzian)
crossDown = ta.crossunder(close, lorenzian)

// Determine color based on price position relative to the line
lineColor = close > ema3 ? color.green : color.red
lineColorH = close > ema3_htf ? color.blue : color.red

// Plot the line with dynamic color
plot(ema3, color=lineColor, title="EMA3", linewidth=2)
plot(ema3_htf, color=lineColorH, title="EMA3 HTF", linewidth=2)

// Function to check for opposite movement
oppositeMove(isLong) =>
    if isLong
        lowest = ta.lowest(low, lookback)
        lowest < lorenzian[lookback]
    else
        highest = ta.highest(high, lookback)
        highest > lorenzian[lookback]

// Generate buy and sell signals
buySignal = crossUp and oppositeMove(true)
sellSignal = crossDown and oppositeMove(false)

// Calculate and manage target price
var float targetPrice = na
var float plotTargetPrice = na
var float entryPrice = na

// Variables to track trade outcomes
var int targetMet = 0
var int targetNotMet = 0
var int totalTrades = 0

if (buySignal)
    strategy.entry("Buy", strategy.long)
    entryPrice := close
    targetPrice := entryPrice * (1 + targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    entryPrice := close
    targetPrice := entryPrice * (1 - targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

// Check if target price is met to exit
if (not na(targetPrice))
    if (strategy.position_size > 0 and high >= targetPrice) // Long position exit condition
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size > 0 and low < entryPrice * (1 - targetPercentage/100)) // Stop loss for long
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1
    
    if (strategy.position_size < 0 and low <= targetPrice) // Short position exit condition
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size < 0 and high > entryPrice * (1 + targetPercentage/100)) // Stop loss for short
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1

// Reset plotTargetPrice when position is closed
if (strategy.position_size == 0)
    plotTargetPrice := na

// Plot signals and target price
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small)
plot(plotTargetPrice, color=color.yellow, title="Target Price", style=plot.style_circles, linewidth=2)

// Add alerts
alertcondition(buySignal, title="Buy Signal", message="Lorenzian Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="Lorenzian Sell Signal")

// Calculate success percentage
successPercentage = totalTrades > 0 ? (targetMet / totalTrades) * 100 : 0

// Create a table to display trade outcomes
var table tradeStats = table.new(position.top_right, 2, 3, border_width=1)
table.cell(tradeStats, 0, 0, "Targets Met", bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 0, "Targets Missed", bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 1, str.tostring(targetMet), bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 1, str.tostring(targetNotMet), bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 2, "Success Rate", bgcolor=color.new(color.blue, 30))
table.cell(tradeStats, 1, 2, str.tostring(successPercentage, "#.##") + "%", bgcolor=color.new(color.blue, 30))