
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.
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:
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.
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.
Pengenalan Trend Dinamik: Klasifikasi Lorenz mampu menyesuaikan diri dengan cepat dengan perubahan pasaran, memberikan keupayaan untuk mengenal pasti trend yang sensitif.
Mekanisme pengesahan isyarat: menggunakan tempoh semak semula untuk mengesahkan isyarat dagangan, berkesan mengurangkan kemungkinan perdagangan yang salah.
Pengoptimuman harga sasaran: Dengan menetapkan peratusan sasaran, strategi dapat memaksimumkan keuntungan dalam keadaan baik.
Pengurusan risiko: Memperkenalkan mekanisme hentian dinamik untuk mengawal risiko setiap dagangan.
Visualisasi dan statistik: Strategi menyediakan paparan carta dan statistik perdagangan yang intuitif untuk memudahkan pedagang menganalisis dan mengoptimumkan prestasi strategi.
Fleksibiliti: Pelbagai parameter yang boleh disesuaikan membolehkan peniaga mengoptimumkan mengikut keadaan pasaran yang berbeza dan keutamaan peribadi.
Sensitiviti parameter: prestasi strategi sangat bergantung kepada pilihan parameter input, dan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau kehilangan peluang penting.
Kepercayaan keadaan pasaran: Dalam pasaran yang bergolak, strategi mungkin menghasilkan isyarat palsu yang kerap, yang menyebabkan kerugian berturut-turut.
Risiko tergelincir: Dalam pasaran yang berfluktuasi dengan cepat, harga pelaksanaan sebenar mungkin berbeza dengan harga isyarat.
Risiko terlalu optimum: penyesuaian parameter yang berlebihan untuk menyesuaikan data sejarah boleh menyebabkan overfit, yang mempengaruhi prestasi cakera hidup masa depan.
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:
Penyesuaian parameter dinamik: Mekanisme penyesuaian parameter adaptasi yang dapat menyesuaikan panjang EMA dan nilai tebing secara automatik mengikut turun naik pasaran.
Menambah penapis: memperkenalkan penapis untuk penapis tambahan atau penapis asas untuk meningkatkan kualiti isyarat.
Integrasi pembelajaran mesin: Mengoptimumkan pemilihan parameter dan proses penjanaan isyarat menggunakan algoritma pembelajaran mesin.
Analisis perkaitan pelbagai varieti: mengambil kira data pelbagai varieti yang berkaitan, memberikan perspektif pasaran yang lebih menyeluruh.
Penyatuan peristiwa berita: Menambah fungsi analisis peristiwa berita untuk menyesuaikan tindakan strategi semasa data ekonomi penting dikeluarkan.
Penyesuaian turun naik: Persentase sasaran dan paras hentian disesuaikan mengikut pergerakan turun naik pasaran.
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.
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.
/*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))