
Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan pelbagai petunjuk teknikal, terutamanya menggabungkan purata bergerak hantu, penunjuk momentum dan tahap penyesuaian Fibonacci untuk membina kerangka perdagangan yang lengkap. Strategi ini menggunakan purata bergerak hantu untuk menentukan arah trend pasaran, digabungkan dengan penunjuk momentum untuk mengesahkan kekuatan isyarat, dan menggunakan tahap Fibonacci untuk menetapkan sasaran dan titik berhenti harga secara automatik untuk automasi pengurusan risiko.
Hantu purata bergerak (GMA): Ini adalah komponen utama strategi, yang memberikan isyarat trend harga yang lebih sensitif daripada purata bergerak tradisional melalui cara pengiraan khusus. Formula pengiraan khusus adalah: pertama, kira dua kali ganda purata bergerak berbobot separuh kitaran ((WMA) tolak purata bergerak berbobot sepanjang kitaran, dan kemudian aplikasikan semula satu kitaran kepada hasilnya sebagai akar kuasa dua purata bergerak berbobot kitaran asal.
Indeks KinerjaStrategi menggunakan perbezaan harga semasa dengan harga sebelum tempoh tertentu untuk mengukur pergerakan pasaran, dan diproses dengan rata-rata bergerak indeks ((EMA), kemudian disatukan dengan perbezaan piawai, menjadikan isyarat pergerakan lebih stabil dan boleh dipercayai.
Penghakiman Trend: Penarikan trend pasaran ditentukan dengan mengira slope pada purata bergerak hantu, dengan slope positif untuk menunjukkan trend naik, dan slope negatif untuk menunjukkan trend menurun.
Harga sasaran Fibonacci dan penutupanStrategi ini berdasarkan harga tertinggi dan harga terendah dalam tempoh pengembalian yang dikira pada tahap Fibonacci, menggunakan 0.618, 1.0 dan 1.618 sebagai harga sasaran, dan 0.382 sebagai tahap stop loss.
Syarat kemasukan:
Pengesahan trend dan momentum yang bergandaDengan menggabungkan purata bergerak hantu dan penunjuk momentum, strategi dapat mengurangkan isyarat palsu dengan berkesan, dan isyarat perdagangan hanya akan dicetuskan apabila kedua-dua penunjuk memenuhi syarat pada masa yang sama.
Pengurusan risiko yang bersesuaian: Menggunakan tahap Fibonacci untuk menetapkan harga sasaran dan titik berhenti secara automatik, kaedah ini menyesuaikan secara automatik mengikut turun naik pasaran, memberikan nisbah pulangan risiko yang sesuai dalam keadaan pasaran yang berbeza.
Papan mata perdagangan visual: Dashboard perdagangan yang dibina dalam strategi secara langsung memaparkan status trend, isyarat perdagangan, alasan masuk, dan maklumat penting seperti harga sasaran dan hentikan kerugian untuk membantu peniaga membuat keputusan dengan cepat.
Beradaptasi dengan turun naik pasaran: Rata-rata bergerak hantu lebih sensitif terhadap perubahan harga berbanding rata-rata bergerak tradisional, dapat mengenal pasti perubahan trend dengan lebih cepat, mengurangkan ketinggalan.
Peraturan perdagangan yang jelasStrategi ini menyediakan syarat kemasukan dan keluar yang jelas, mengurangkan penilaian subjektif, dan membantu peniaga mengekalkan disiplin.
Risiko perdagangan berlebihan: Dalam pasaran yang bergolak, harga mungkin sering melintasi purata bergerak hantu, menyebabkan terlalu banyak isyarat perdagangan. Penyelesaian adalah dengan menambah syarat penapis tambahan, seperti perdagangan hanya dalam trend yang jelas atau meningkatkan tempoh pengesahan isyarat.
Setup risiko stop lossPengecutan Fibonacci yang tetap mungkin tidak fleksibel dalam pasaran yang sangat bergolak, dan boleh menyebabkan kerugian terlalu longgar atau terlalu ketat. Adalah disyorkan untuk menyesuaikan kadar Fibonacci mengikut keadaan pasaran yang berbeza secara dinamik.
Kepekaan ParameterPrestasi strategi sangat bergantung kepada tetapan pelbagai parameter, seperti panjang GMA, kitaran momentum, dan lain-lain, dan mungkin memerlukan kombinasi parameter yang berbeza untuk pasaran dan jangka masa yang berbeza. Ujian semula disyorkan untuk mencari parameter yang optimum.
Tarikan TarikanWalaupun purata bergerak hantu lebih sensitif daripada purata bergerak tradisional, masih terdapat beberapa kelewatan dan mungkin kehilangan beberapa peluang pada awal trend. Anda boleh mempertimbangkan untuk menggabungkan indikator dengan tempoh yang lebih pendek untuk mengesan perubahan trend lebih awal.
Kecacatan pengesananTahap Fibonacci strategi adalah berdasarkan pengiraan data sejarah, mungkin terdapat bias ke hadapan. Ini harus diperhatikan dalam perdagangan sebenar dan pertimbangkan untuk menggunakan kaedah yang lebih dinamik untuk mengira tahap kritikal.
Optimasi parameter penyesuaian: Strategi menggunakan tetapan parameter tetap pada masa ini, mekanisme penyesuaian boleh diperkenalkan untuk menyesuaikan panjang GMA dan kitaran momentum secara automatik mengikut turun naik pasaran, supaya strategi mengekalkan prestasi yang optimum dalam keadaan pasaran yang berbeza.
Analisis pelbagai kerangka masa: Menambah analisis ke atas pelbagai bingkai masa, dan perdagangan dijalankan hanya apabila isyarat ke atas pelbagai bingkai masa adalah sama, yang dapat meningkatkan kualiti isyarat dan kadar kejayaan secara ketara.
Matlamat penghentian dinamikStrategi semasa menggunakan tahap Fibonacci tetap sebagai harga sasaran, dan boleh mempertimbangkan untuk menyesuaikan harga sasaran mengikut pergerakan pasaran yang tidak menentu, atau melaksanakan strategi tracking stop-loss untuk memaksimumkan potensi keuntungan.
Analisis jumlah transaksiPerdagangan hanya dilakukan apabila harga dan jumlah transaksi disahkan secara serentak untuk mengurangkan isyarat pecah palsu.
Pembelajaran Mesin: Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan syarat kemasukan dan pilihan parameter, meramalkan peluang perdagangan terbaik dan strategi pengurusan risiko melalui model latihan data sejarah.
Penunjuk emosi bersepadu: Menambah petunjuk sentimen pasaran, seperti indeks kadar turun naik atau petunjuk derivatif lain, untuk menyesuaikan tingkah laku strategi dalam keadaan pasaran yang melampau dan meningkatkan keupayaan pengurusan risiko.
Strategi sasaran harga dan hentian Fibonacci yang digabungkan dengan purata bergerak hantu adalah sistem perdagangan analisis teknikal yang komprehensif yang menyediakan kerangka perdagangan yang sistematik dengan menggabungkan pelbagai petunjuk dan teknologi. Kelebihan utama strategi ini adalah mekanisme pengesahan dua hala dan dinamik, serta sistem pengurusan risiko penyesuaian diri berdasarkan turun naik pasaran. Walaupun terdapat beberapa risiko yang wujud, seperti kepekaan parameter dan potensi perdagangan berlebihan, strategi ini dapat ditingkatkan dengan ketara dan keberkesanan dengan arah pengoptimuman yang dikemukakan.
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-01 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ghost MA + Momentum + Fib TP/SL + Dashboard", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
src = input(close, "Source")
gmaLength = input.int(20, "GMA Length")
momentumLength = input.int(20, "Momentum Length")
momentumSmoothing = input.int(10, "Momentum Smoothing")
swingLookback = input.int(50, "Fibonacci Swing Lookback")
// === GHOST MOVING AVERAGE ===
gma = ta.wma(2 * ta.wma(src, gmaLength / 2) - ta.wma(src, gmaLength), math.round(math.sqrt(gmaLength)))
plot(gma, title="Ghost MA", color=color.teal, linewidth=2)
// === MOMENTUM GHOST OSCILLATOR ===
momentum = src - src[momentumLength]
smoothMomentum = ta.ema(momentum, momentumSmoothing)
normalizedMomentum = smoothMomentum / ta.stdev(momentum, momentumLength)
// === MARKET TREND ===
gmaSlope = gma - gma[1]
marketTrend = gmaSlope > 0 ? "UPTREND" : "DOWNTREND"
// === SWING POINTS FOR FIBONACCI ===
highestHigh = ta.highest(high, swingLookback)
lowestLow = ta.lowest(low, swingLookback)
fibRange = highestHigh - lowestLow
entryPrice = close
// === FIBONACCI TP/SL LEVELS ===
tp1_long = entryPrice + (fibRange * 0.618)
tp2_long = entryPrice + (fibRange * 1.0)
tp3_long = entryPrice + (fibRange * 1.618)
sl_long = entryPrice - (fibRange * 0.382)
tp1_short = entryPrice - (fibRange * 0.618)
tp2_short = entryPrice - (fibRange * 1.0)
tp3_short = entryPrice - (fibRange * 1.618)
sl_short = entryPrice + (fibRange * 0.382)
// === STRATEGY CONDITIONS ===
longCond = ta.crossover(src, gma) and normalizedMomentum > 0
shortCond = ta.crossunder(src, gma) and normalizedMomentum < 0
if (longCond)
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL Long", from_entry="Long", limit=tp1_long, stop=sl_long)
if (shortCond)
strategy.entry("Short", strategy.short)
strategy.exit("TP/SL Short", from_entry="Short", limit=tp1_short, stop=sl_short)
// === SIGNAL LABELS ON CHART ===
if (longCond)
label.new(bar_index, low, "BUY\n" + str.tostring(close, "#.##"), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if (shortCond)
label.new(bar_index, high, "SELL\n" + str.tostring(close, "#.##"), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// === ALERT CONDITIONS ===
alertcondition(longCond, title="Buy Signal", message="Buy Signal Triggered: GMA Cross Up + Momentum Positive")
alertcondition(shortCond, title="Sell Signal", message="Sell Signal Triggered: GMA Cross Down + Momentum Negative")
// === DASHBOARD ===
var table dash = table.new(position.top_right, 1, 8, border_width=1)
if bar_index % 5 == 0
signal = longCond ? "BUY" : shortCond ? "SELL" : "WAIT"
reason = longCond ? "GMA↑ & Momentum+" : shortCond ? "GMA↓ & Momentum−" : "No Clear Signal"
timeframe = timeframe.period
sigColor = signal == "BUY" ? color.new(color.green, 20) : signal == "SELL" ? color.new(color.red, 20) : color.new(color.gray, 60)
trendColor = marketTrend == "UPTREND" ? color.new(color.green, 80) : color.new(color.red, 80)
table.cell(dash, 0, 0, "📊 GHOST TRADING DASHBOARD", text_color=color.black, bgcolor=color.lime, text_size=size.large)
table.cell(dash, 0, 1, "Trend: " + marketTrend, text_color=color.black, bgcolor=trendColor, text_size=size.normal)
table.cell(dash, 0, 2, "Timeframe: " + timeframe, text_color=color.black, bgcolor=color.purple, text_size=size.normal)
table.cell(dash, 0, 3, "Signal: " + signal + " @ " + str.tostring(close, "#.##"), text_color=color.black, bgcolor=sigColor, text_size=size.normal)
table.cell(dash, 0, 4, "Reason: " + reason, text_color=color.black, bgcolor=color.new(color.yellow, 60), text_size=size.normal)
table.cell(dash, 0, 5, signal == "BUY" ? "TP1: " + str.tostring(tp1_long, "#.##") +
" | TP2: " + str.tostring(tp2_long, "#.##") +
" | TP3: " + str.tostring(tp3_long, "#.##")
: signal == "SELL" ? "TP1: " + str.tostring(tp1_short, "#.##") +
" | TP2: " + str.tostring(tp2_short, "#.##") +
" | TP3: " + str.tostring(tp3_short, "#.##") : "-",
text_color=color.black, bgcolor=color.new(color.green, 80), text_size=size.normal)
table.cell(dash, 0, 6, "Reentry: " + str.tostring(gma, "#.##"), text_color=color.black, bgcolor=color.new(color.orange, 80), text_size=size.normal)
table.cell(dash, 0, 7, signal == "BUY" ? "SL: " + str.tostring(sl_long, "#.##") : signal == "SELL" ? "SL: " + str.tostring(sl_short, "#.##") : "-", text_color=color.black, bgcolor=color.new(color.red, 70), text_size=size.normal)