Strategi perdagangan multi-kerangka waktu berdasarkan klasifikasi Lorenz

EMA CI HTF TA
Tanggal Pembuatan: 2024-07-31 11:49:32 Akhirnya memodifikasi: 2024-07-31 11:49:32
menyalin: 0 Jumlah klik: 673
1
fokus pada
1617
Pengikut

Strategi perdagangan multi-kerangka waktu berdasarkan klasifikasi Lorenz

Ringkasan

Strategi ini adalah sistem perdagangan multi-frame time frame berdasarkan klasifikasi Lorentz, yang menggabungkan harga target dan mekanisme stop loss dinamis. Ini menggunakan indeks moving average (EMA) dan indeks klasifikasi (CI) untuk mengidentifikasi tren pasar dan melakukan analisis silang pada frame waktu tinggi dan frame waktu saat ini. Strategi ini memaksimalkan keuntungan dengan menetapkan persentase target, sementara menggunakan mekanisme retrospektif untuk mengkonfirmasi efektivitas sinyal perdagangan.

Prinsip Strategi

Inti dari strategi ini adalah Klasifikasi Lorentz, yang menggabungkan Triple Moving Average (TMA) dan Classical Index (CI) untuk menghasilkan sinyal perdagangan. Langkah-langkahnya adalah sebagai berikut:

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

Strategi menghitung garis Lorentz pada frame waktu saat ini dan frame waktu yang lebih tinggi untuk memberikan perspektif pasar multidimensi. Sinyal perdagangan didasarkan pada persilangan harga dengan garis Lorentz, dan dikonfirmasi melalui mekanisme revisi. Sinyal beli dipicu ketika harga melewati garis Lorentz dan harga terendah dalam periode revisi berada di bawah garis Lorentz.

Strategi ini juga memperkenalkan mekanisme target harga, yang menentukan titik keluar berdasarkan persentase target yang ditetapkan pengguna. Pada saat yang sama, ia juga mengimplementasikan stop loss dinamis untuk mengendalikan risiko.

Keunggulan Strategis

  1. Analisis multi-frame waktu: Dengan menggabungkan garis Lorentz pada frame waktu saat ini dan yang lebih tinggi, strategi dapat menangkap tren pasar yang lebih komprehensif dan mengurangi sinyal palsu.

  2. Klasifikasi Lorentz mampu beradaptasi dengan cepat terhadap perubahan pasar, memberikan kemampuan untuk mengenali tren yang sensitif.

  3. Mekanisme konfirmasi sinyal: Menggunakan periode review untuk mengkonfirmasi sinyal perdagangan, secara efektif mengurangi probabilitas perdagangan yang salah.

  4. Optimalisasi target harga: Dengan menetapkan target persentase, strategi dapat memaksimalkan keuntungan dalam kondisi yang menguntungkan.

  5. Manajemen risiko: Menggunakan mekanisme stop loss dinamis untuk mengontrol risiko setiap transaksi.

  6. Visualisasi dan statistik: Strategi menyediakan tampilan grafik yang intuitif dan statistik perdagangan yang memudahkan pedagang untuk menganalisis dan mengoptimalkan kinerja strategi.

  7. Fleksibilitas: Beberapa parameter yang dapat disesuaikan memungkinkan trader untuk mengoptimalkan sesuai dengan kondisi pasar yang berbeda dan preferensi pribadi.

Risiko Strategis

  1. Sensitivitas parameter: kinerja strategi sangat bergantung pada pilihan parameter input, pengaturan parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang penting.

  2. Ketergantungan pada kondisi pasar: Dalam pasar yang bergejolak, strategi dapat menghasilkan sinyal palsu yang sering, yang menyebabkan kerugian berturut-turut.

  3. Risiko slippage: Dalam pasar yang berfluktuasi cepat, harga eksekusi aktual dapat berbeda secara signifikan dari harga sinyal.

  4. Risiko over-optimisasi: over-penyesuaian parameter untuk menyesuaikan data historis dapat menyebabkan over-fitting, mempengaruhi kinerja real-time masa depan.

  5. Gagal teknis: Tergantung pada perhitungan indikator teknis yang rumit, kegagalan sistem atau kesalahan data dapat menyebabkan keputusan perdagangan yang salah.

Untuk mengurangi risiko ini, disarankan untuk:

  • Ini adalah salah satu cara yang paling efektif untuk memantau dan mengevaluasi.
  • Menggunakan manajemen posisi dan pengendalian risiko yang tepat.
  • Pemeriksaan rutin dan penyesuaian parameter strategi untuk menyesuaikan dengan kondisi pasar yang berubah.
  • Menerapkan mekanisme pengelolaan dan pemantauan kesalahan yang solid.

Arah optimasi strategi

  1. Penyesuaian parameter dinamis: Mekanisme penyesuaian parameter adaptif yang memungkinkan penyesuaian panjang EMA dan threshold secara otomatis sesuai dengan volatilitas pasar.

  2. Menambahkan filter: memperkenalkan indikator teknis tambahan atau indikator dasar sebagai filter, meningkatkan kualitas sinyal.

  3. Integrasi pembelajaran mesin: Mengoptimalkan pilihan parameter dan proses pembuatan sinyal menggunakan algoritma pembelajaran mesin.

  4. Analisis relevansi multi-varietas: Mempertimbangkan data dari beberapa varietas terkait, memberikan perspektif pasar yang lebih komprehensif.

  5. Integrasi peristiwa berita: Menambahkan fungsi analisis peristiwa berita untuk menyesuaikan tindakan strategis selama publikasi data ekonomi penting.

  6. Adaptasi volatilitas: Persentase target dan level stop loss disesuaikan dengan dinamika volatilitas pasar.

  7. Meningkatkan manajemen risiko: Menerapkan strategi manajemen posisi dan kontrol risiko yang lebih kompleks, seperti penyesuaian posisi berdasarkan volatilitas.

Tujuan dari orientasi optimasi ini adalah untuk meningkatkan fleksibilitas dan stabilitas strategi, sehingga dapat mempertahankan kinerja yang baik dalam berbagai kondisi pasar.

Meringkaskan

Strategi target jangka waktu multi-frame yang diklasifikasikan oleh Lorenz adalah sistem perdagangan komprehensif yang menggabungkan metode analisis teknis canggih dan mekanisme manajemen risiko cerdas. Strategi ini berpotensi untuk mencapai kinerja perdagangan yang stabil di berbagai kondisi pasar melalui analisis jangka waktu multi-frame, identifikasi tren dinamis, dan optimasi harga target. Namun, strategi ini juga menghadapi tantangan seperti sensitivitas parameter dan ketergantungan pasar.

Kode 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))