
Strategi ini menggunakan persilangan dua rata-rata bergerak sebagai sinyal perdagangan, dan difilterkan dalam kombinasi dengan indikator BB bandwidth dan indikator energi dinamis khusus untuk meningkatkan keandalan sinyal persilangan MA dan mengurangi sinyal palsu.
Dengan menggunakan 50 siklus EMA dan 200 siklus SMA membentuk sinyal dead fork.
Ketika harga sedang naik, permintaan harga di atas garis 200 dan nilai indikator energi dinamis yang disesuaikan kurang dari 25 menghasilkan sinyal beli.
Ketika harga sedang dalam tren turun, meminta harga di bawah garis 200 dan nilai indikator energi dinamis khusus lebih besar dari 75 untuk menghasilkan sinyal jual.
Indikator energi motorik yang dapat disesuaikan memetakan jarak antara garis tengah BB dan jalur atas dan bawah ke dalam kisaran 0-100. Pengolahan penggabungan dilakukan dengan memetakan jarak statistik maksimum dan minimum.
Indikator energi dinamis dapat mencerminkan informasi posisi harga relatif terhadap gelombang, mengatur nilai terobosan untuk memfilter, dapat secara efektif mengurangi silang palsu.
Menggunakan EMA dan SMA untuk menangkap tren garis tengah dan panjang.
Meningkatkan indikator energi kinetik untuk memfilter, lebih dapat diandalkan, mengurangi sinyal palsu.
Jarak BB ke atas dan ke bawah jalur mencerminkan intensitas fluktuasi, dikombinasikan dengan statistik retrospektif untuk pengolahan standar, menghindari ketergantungan parameter.
Dapat disesuaikan dengan siklus EMA dan SMA dan nilai terendah indikator energi kinetik, sesuai dengan lingkungan pasar yang berbeda.
Strategi yang jelas dan mudah dimengerti, parameter yang dapat disesuaikan, dan praktis.
EMA dan SMA sendiri mengalami keterlambatan dan kemungkinan kehilangan peluang untuk short-line.
Pada dasarnya, crossover adalah strategi untuk melacak tren, dan tidak cocok untuk situasi gempa.
Nilai terendah indikator energi dinamis memerlukan pengukuran ulang untuk menentukan parameter yang tepat, dan ada risiko optimasi kurva.
Strategi rata-rata siklus besar, keuntungan relatif stabil tetapi keuntungan mutlak mungkin terbatas.
Siklus rata-rata dapat dipersingkat sesuai kebutuhan, atau penambahan indikator lain untuk membantu penilaian dan meningkatkan adaptasi strategi.
Uji kombinasi garis rata yang berbeda untuk mencari parameter optimal.
Menambahkan penilaian tambahan seperti MACD, KD, dll.
Optimalkan parameter indikator energi kinetik, seperti siklus mundur, ruang lingkup pemetaan, dll.
Menambahkan mekanisme stop loss untuk mengendalikan risiko.
Parameter varietas yang tidak konsisten dapat dipertimbangkan untuk mengambil karakteristik pembelajaran mesin.
Menambahkan indikator energi untuk menghindari sinyal silang yang tidak masuk akal.
Strategi ini mengintegrasikan siklus trend tracking dan penyaringan ganda indikator energi dinamis kustom dalam satu, memiliki keandalan tinggi, dan nilai nyata yang kuat. Dengan parameter optimasi dan penguatan indikator teknologi tambahan, diharapkan untuk mendapatkan kinerja yang lebih baik. Strategi ini baru, dapat memberikan referensi untuk strategi pelacakan tren lainnya, dan merupakan tambahan yang berharga dalam perpustakaan strategi perdagangan kuantitatif.
/*backtest
start: 2023-10-26 00:00:00
end: 2023-10-27 13:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="EMA Difference Mapping with Trades", shorttitle="EMA Diff Map", overlay=false)
// Inputs
emaLength = input(20, "EMA Length")
stdDevLength = input(2, "Standard Deviation Length")
priceSource = close
takeProfitPoints = input(1000, title="Take Profit (in Points)")
stopLossPoints = input(2500, title="Stop Loss (in Points)")
// Calculate EMA
ema = ema(priceSource, emaLength)
// Calculate Standard Deviation
stdDev = stdev(priceSource, stdDevLength)
// Calculate differences
diff1 = (ema + stdDev) - ema
diff2 = ema - (ema - stdDev)
// Calculate min and max differences from last year
lookbackPeriod = 504 // Number of trading days in a year
minDiff1 = lowest(diff1, lookbackPeriod)
maxDiff1 = highest(diff1, lookbackPeriod)
minDiff2 = lowest(diff2, lookbackPeriod)
maxDiff2 = highest(diff2, lookbackPeriod)
// Map differences based on requirements
mappedDiff1 = 50 + 50 * ((diff1 - minDiff1) / (maxDiff1 - minDiff1))
mappedDiff2 = 50 - 50 * ((diff2 - minDiff2) / (maxDiff2 - minDiff2))
// Combine mapped differences into a single line
mappedLine = if close > ema
mappedDiff1
else
mappedDiff2
// Plot 'mappedLine' in the main chart area conditionally
plot(mappedLine, title="EMA Difference Mapping", color=(close > ema ? color.blue : na), style=plot.style_line, linewidth=2)
// Calculate the 50EMA and 200SMA
ema50 = ema(close, 50)
sma200 = sma(close, 200)
// Plot the 50EMA and 200SMA on the main chart
plot(ema50, color=color.blue, title="50 SMA", linewidth=2)
plot(sma200, color=color.red, title="200 SMA", linewidth=2)
// Initialize trade variables
var bool waitingForBuy = na
var bool waitingForSell = na
var bool buyConditionMet = false
var bool sellConditionMet = false
if not sellConditionMet and crossunder(ema50, sma200)
sellConditionMet := true
waitingForBuy := false
if sellConditionMet
waitingForSell := true
sellConditionMet := false
if waitingForSell and close < sma200 and mappedLine > 75
strategy.entry("Sell", strategy.short)
strategy.exit("Sell Exit", "Sell", profit=takeProfitPoints, loss=stopLossPoints)
waitingForSell := false
// Define the strategy conditions and execute trades
if not buyConditionMet and crossover(ema50, sma200)
buyConditionMet := true
waitingForSell := false
if buyConditionMet
waitingForBuy := true
buyConditionMet := false
if waitingForBuy and close > sma200 and mappedLine < 25
strategy.entry("Buy", strategy.long)
strategy.exit("Buy Exit", "Buy", profit=takeProfitPoints, loss=stopLossPoints)
waitingForBuy := false