
Strategi perdagangan dinamik trend bertingkat dengan sistem pengurusan risiko ATR adalah strategi perdagangan dalam masa pendek, yang direka khas untuk jangka masa 15 minit. Strategi ini menggabungkan dengan bijak isyarat tingkah laku harga dari corak pembalikan grafik dan pengesahan dinamik MACD untuk mengenal pasti titik masuk perdagangan yang berkemungkinan tinggi. Strategi ini menggunakan tahap berhenti dan keuntungan yang dinamik berdasarkan ATR untuk menguruskan risiko dan memaksimumkan pulangan, dapat disesuaikan dengan turun naik pasaran semasa.
Prinsip teras strategi ini adalah untuk menangkap peluang perdagangan pada peringkat awal perubahan trend pasaran melalui sistem pengesahan dua kali ganda yang menggabungkan bentuk harga dan petunjuk teknikal. Secara khusus, strategi ini didasarkan pada beberapa komponen utama berikut:
Pengiktirafan bentuk grafik:
Kemajuan MACD disahkan:
Sinyal dagangan dihasilkan:
Pengurusan Risiko:
Mekanisme pengesahan bertingkat ini memastikan kebolehpercayaan isyarat perdagangan, sementara sistem pengurusan risiko ATR menyesuaikan parameter pulangan risiko mengikut turun naik pasaran sebenar, menjadikan strategi ini sangat fleksibel.
Dengan mengkaji kod strategi ini secara mendalam, beberapa kelebihan utama dapat diringkaskan:
Mekanisme pengesahan dua kaliGabungan pergerakan harga (MACD) dengan tingkah laku harga (MACD) dapat mengurangkan isyarat palsu dan meningkatkan kadar kejayaan perdagangan. Strategi hanya akan mencetuskan perdagangan jika dua kaedah analisis bebas memberikan isyarat yang sama pada masa yang sama.
Pengurusan risiko dinamikTahap stop dan profit berdasarkan ATR dapat disesuaikan secara automatik dengan turun naik pasaran, mengelakkan masalah ketidaksesuaian yang disebabkan oleh bilangan titik tetap. Pada masa turun naik yang lebih besar, stop lebih longgar; pada masa turun naik yang lebih kecil, stop lebih ketat.
Maklumat visual yang jelasStrategi: Merakamkan isyarat dagangan dan tahap harga utama pada carta (harga masuk, stop loss, sasaran keuntungan) yang membolehkan peniaga memahami logik dagangan dan pengurusan risiko secara langsung.
Tetapan parameter yang fleksibelStrategi membolehkan pengguna menyesuaikan parameter MACD, kitaran pengiraan ATR dan penggandaan stop loss/profit, yang boleh dioptimumkan mengikut keutamaan risiko peribadi dan keadaan pasaran tertentu.
Pengurusan kewangan bersepaduDengan menggunakan peratusan nilai aset bersih untuk menentukan saiz kedudukan, strategi ini mempunyai fungsi pengurusan wang asas yang membantu mengawal risiko setiap perdagangan.
Walaupun strategi ini direka dengan baik, terdapat beberapa risiko dan batasan yang berpotensi:
Isyarat palsu dalam pasaran yang bergolakDalam pasaran penumpuan yang tidak mempunyai trend yang jelas, MACD mungkin menghasilkan isyarat silang yang kerap, yang dikombinasikan dengan corak grafik yang boleh menyebabkan perdagangan berlebihan dan kerugian berturut-turut.
Risiko tergelincir di bawah peristiwa pasaran yang melampauPasaran mungkin melompat dengan cepat semasa berita utama atau peristiwa Black Swan, menyebabkan harga pelaksanaan Hentian Kerosakan sebenar jauh di bawah tahap yang ditetapkan.
Masalah kesesuaian pengoptimuman parameterTerlalu banyak optimumkan parameter MACD dan penggandaan ATR boleh menyebabkan strategi berfungsi dengan baik pada data sejarah, tetapi tidak berfungsi dengan baik dalam keadaan pasaran masa depan.
Kekurangan mekanisme pemprosesan isyarat berterusanApabila beberapa isyarat perdagangan muncul secara berturut-turut, strategi tidak mempunyai logik pemprosesan yang jelas, yang boleh menyebabkan perdagangan berlebihan atau kehilangan titik masuk yang lebih baik.
Berdasarkan analisis di atas, strategi ini boleh dioptimumkan dalam beberapa aspek:
Tambah penapis trendMemperkenalkan komponen pengiktirafan trend (seperti arah purata bergerak atau petunjuk ADX), hanya berdagang di arah trend yang telah disahkan, mengelakkan terlalu banyak isyarat dalam pasaran yang bergolak. Ini dapat meningkatkan ketepatan strategi dan mengurangkan perdagangan rugi yang disebabkan oleh isyarat palsu.
Optimumkan masa kemasukanStrategi semasa: K baris berikutnya yang dibuka selepas isyarat muncul, mungkin terlepas tahap harga yang optimum. Anda boleh mempertimbangkan untuk menggunakan tiket harga terhad untuk masuk ke kawasan harga tertentu, atau merancang mekanisme masuk yang lebih halus.
Membuat sebahagian daripada mekanisme keuntungan: Apabila harga mencapai tahap keuntungan tertentu (seperti 1 × ATR), pertimbangan boleh dibuat untuk melonggarkan saham dengan sebahagian terus memegang harga sasaran yang lebih tinggi. Dengan cara ini, keuntungan boleh dibenarkan sambil memastikan keuntungan asas.
Filter masaBeberapa pasaran mempunyai lebih banyak turun naik dan kecairan pada masa perdagangan tertentu. Anda boleh menambah syarat penapisan masa untuk mencari isyarat perdagangan hanya pada masa pasaran yang paling aktif (seperti pasaran Eropah dan Amerika yang bertindih).
Indeks Sentimen Pasaran BersepaduMemperkenalkan penunjuk kadar turun naik (seperti kadar perubahan VIX atau ATR) untuk menilai keadaan pasaran semasa, secara automatik menyesuaikan tahap hentian atau kekerapan perdagangan pada masa turun naik yang melampau.
Pengurusan wang yang optimum: Menerapkan algoritma pengurusan wang yang lebih kompleks, seperti Kaedah Kelly atau kaedah nisbah risiko tetap, menyesuaikan saiz kedudukan secara dinamik berdasarkan kemenangan sejarah strategi dan perbandingan keuntungan / kerugian.
Strategi perdagangan dinamik trend bertingkat dan sistem pengurusan risiko ATR adalah sistem perdagangan jangka pendek yang dirancang dengan baik yang menyediakan kaedah penjanaan isyarat perdagangan yang boleh dipercayai dengan menggabungkan analisis corak grafik dan pengesahan dinamik MACD. Sistem pengurusan risiko dinamiknya yang berasaskan ATR membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza, dan maklum balas visual yang jelas dan fungsi penanda membantu pedagang memahami dan melaksanakan rancangan perdagangan dengan lebih baik.
Walaupun terdapat beberapa risiko yang berpotensi, seperti isyarat palsu dalam pasaran yang bergolak dan skim dalam keadaan pasaran yang melampau, masalah-masalah ini dapat dikurangkan dengan berkesan dengan langkah-langkah pengoptimuman yang disyorkan, seperti menambah penapis trend, mengoptimumkan mekanisme kemasukan, melaksanakan beberapa strategi keuntungan dan mengintegrasikan indikator sentimen pasaran.
Secara keseluruhannya, strategi ini menyediakan kerangka perdagangan yang tersusun untuk peniaga jangka pendek dalam sehari, yang menggabungkan unsur-unsur penting analisis teknikal, pengurusan risiko dan visualisasi pelaksanaan. Dengan menetapkan parameter yang munasabah dan melaksanakan langkah-langkah pengoptimuman yang disyorkan, peniaga dapat meningkatkan lagi kestabilan dan keuntungan strategi.
/*backtest
start: 2025-06-20 00:00:00
end: 2025-07-20 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
//@version=5
strategy("Gold 15m Candle + MACD Strategy with SL/TP & Price Levels", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === MACD Settings ===
fastLength = input.int(12, title="MACD Fast Length")
slowLength = input.int(26, title="MACD Slow Length")
signalSmoothing = input.int(9, title="MACD Signal Smoothing")
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
macdBullish = ta.crossover(macdLine, signalLine)
macdBearish = ta.crossunder(macdLine, signalLine)
// === Candlestick Patterns ===
// Bullish Engulfing
bullishEngulfing = close[1] < open[1] and close > open and close > open[1] and open < close[1]
// Bearish Engulfing
bearishEngulfing = close[1] > open[1] and close < open and close < open[1] and open > close[1]
// Hammer (bullish)
hammer = close > open and (high - low) > 2 * (open - close) and (close - low) / (0.001 + high - low) > 0.6
// Shooting Star (bearish)
shootingStar = open > close and (high - low) > 2 * (open - close) and (high - open) / (0.001 + high - low) > 0.6
// === Entry Signals ===
longSignal = (bullishEngulfing or hammer) and macdBullish
shortSignal = (bearishEngulfing or shootingStar) and macdBearish
// === ATR-Based SL/TP ===
atrLen = input.int(14, title="ATR Length")
atr = ta.atr(atrLen)
slMultiplier = input.float(1.5, title="Stop Loss (x ATR)")
tpMultiplier = input.float(2.0, title="Take Profit (x ATR)")
// Variables to hold current trade levels
var float entryPrice = na
var float stopLossPrice = na
var float takeProfitPrice = na
// === Execute Entry and calculate levels on next bar after signal ===
if longSignal
strategy.entry("Long", strategy.long)
entryPrice := close // Entry price at signal candle close (approximate next candle open)
stopLossPrice := entryPrice - slMultiplier * atr
takeProfitPrice := entryPrice + tpMultiplier * atr
strategy.exit("Long Exit", from_entry="Long", stop=stopLossPrice, limit=takeProfitPrice)
if shortSignal
strategy.entry("Short", strategy.short)
entryPrice := close
stopLossPrice := entryPrice + slMultiplier * atr
takeProfitPrice := entryPrice - tpMultiplier * atr
strategy.exit("Short Exit", from_entry="Short", stop=stopLossPrice, limit=takeProfitPrice)
// === Plot Signals ===
plotshape(longSignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Plot Entry, SL, TP Levels ===
plot(entryPrice, title="Entry Price", color=color.yellow, style=plot.style_linebr, linewidth=2)
plot(stopLossPrice, title="Stop Loss", color=color.red, style=plot.style_linebr, linewidth=2)
plot(takeProfitPrice, title="Take Profit", color=color.green, style=plot.style_linebr, linewidth=2)
// === Labels for price levels on chart ===
if (strategy.position_size > 0)
label.new(bar_index, entryPrice, text="Entry: " + str.tostring(entryPrice, format.mintick), color=color.yellow, style=label.style_label_left, yloc=yloc.price, size=size.small)
label.new(bar_index, stopLossPrice, text="SL: " + str.tostring(stopLossPrice, format.mintick), color=color.red, style=label.style_label_left, yloc=yloc.price, size=size.small)
label.new(bar_index, takeProfitPrice, text="TP: " + str.tostring(takeProfitPrice, format.mintick), color=color.green, style=label.style_label_left, yloc=yloc.price, size=size.small)
else if (strategy.position_size < 0)
label.new(bar_index, entryPrice, text="Entry: " + str.tostring(entryPrice, format.mintick), color=color.yellow, style=label.style_label_left, yloc=yloc.price, size=size.small)
label.new(bar_index, stopLossPrice, text="SL: " + str.tostring(stopLossPrice, format.mintick), color=color.red, style=label.style_label_left, yloc=yloc.price, size=size.small)
label.new(bar_index, takeProfitPrice, text="TP: " + str.tostring(takeProfitPrice, format.mintick), color=color.green, style=label.style_label_left, yloc=yloc.price, size=size.small)