
Strategi ini mengikuti strategi tren klasik dengan bentuk garpu emas dalam garis rata-rata EMA ganda, garpu mati dalam posisi kosong, dan menggunakan indikator ATR dan indikator ADX untuk pemfilteran tambahan, untuk melacak saat tren kuat, dan untuk mengendalikan risiko saat goyangan.
Strategi ini didasarkan pada:
Garis rata-rata EMA 8 periode yang lebih pendek dan Garis rata-rata EMA 20 periode yang lebih lama digunakan untuk membentuk sinyal garpu emas dan garpu mati. Garis rata-rata EMA sendiri memiliki sifat mengikuti tren.
Indikator ATR mencerminkan amplitudo fluktuasi baru-baru ini. Melalui normalisasi indikator ATR, Anda dapat secara dinamis menyesuaikan kondisi penyaringan EMA rata-rata, mengurangi persyaratan saat mengikuti tren yang kuat, meningkatkan persyaratan penyaringan saat terjadi gejolak, dan mengendalikan risiko.
Indikator ADX menilai kekuatan tren. Ketika nilai ADX lebih besar dari 30, dianggap terjadi tren yang kuat, dan pada saat itu tepat waktu menghentikan pertahanan kerugian.
Dalam pasar bull, Gold Fork melakukan lebih banyak, dan dalam pasar bear, Dead Fork melakukan lebih banyak.
Filter volume transaksi, masuk saat volume transaksi meningkat.
Indeks USD hanya menilai dolar AS yang kuat dan lemah, dan stop loss dan stop loss akan diperluas ketika dolar AS kuat.
Dengan menggunakan indikator super trend untuk menilai tren pasar secara keseluruhan, dan untuk membantu menentukan kapan harus melakukan lebih banyak shorting.
Strategi ini menggabungkan indikator tren dengan indikator getaran, memungkinkan untuk menyesuaikan parameter secara dinamis dan mengendalikan risiko sambil mengikuti tren.
EMA memiliki kelancaran yang efektif untuk menyaring penipuan.
Indikator ATR secara dinamis menyesuaikan kondisi penyaringan EMA linear-cross, sehingga strategi dapat beradaptasi secara fleksibel dengan lingkungan pasar yang berbeda.
Indeks ADX dan volume perdagangan digunakan sebagai indikator penilaian tambahan untuk menghindari kecemburuan dalam situasi yang bergolak.
Mengambil Indeks Dolar dan Indeks Tren Super untuk menilai tren besar dan meningkatkan akurasi pengambilan keputusan.
Parameter manajemen risiko akan disesuaikan secara otomatis dengan kekuatan dolar AS, dan stop loss dan stop loss akan diperbesar jika dolar AS kuat.
Dengan menggunakan sinyal trading Forex yang sederhana dan intuitif serta strategi stop loss dan stop loss yang mudah untuk diterapkan dan dilacak.
Sistem dua EMA eliminasi titik kritis tren yang dianggap tertinggal.
Pilihan yang salah dari parameter ATR dapat menyebabkan terlalu radikal atau konservatif.
Parameter indikator ADX perlu dioptimalkan, dan pilihan yang salah dari titik tinggi ADX dapat melewatkan tren.
Indeks dolar dan indikator supertrend mungkin memiliki kesalahan.
Stop loss yang terlalu kecil dapat meningkatkan kerugian; stop loss yang terlalu lebar dapat ditembus.
Kritik tren dapat dipertimbangkan dalam kombinasi dengan indikator lain seperti MACD.
Dengan menggunakan lebih banyak data historis untuk melatih ruang parameter ATR, menemukan rentang parameter optimal.
Uji parameter ADX yang berbeda, optimalkan penilaian ADX.
Ini akan menambah lebih banyak variabel untuk menilai indeks dolar AS dan tren pasar secara keseluruhan.
Berdasarkan data retrospektif, stop loss optimal dihitung.
Stop loss dapat dipertimbangkan sebagai stop loss bergerak atau stop loss bergoyang.
Terus mengoptimalkan ukuran dan periode kepemilikan.
Strategi ini mengintegrasikan sistem rata-rata EMA ganda klasik dengan beberapa indikator tambahan, melalui optimasi parameter otomatis, untuk mencapai strategi trend yang lebih lengkap. Strategi ini dapat beradaptasi secara fleksibel dengan perubahan lingkungan pasar, sambil mengontrol risiko dalam melacak tren. Namun, masih perlu tes dan pengoptimalan lebih lanjut untuk parameter stop loss dan indikator untuk mendapatkan keuntungan yang lebih baik dan stabil.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Refactored Advanced EMA Cross with Normalized ATR Filter, Controlling ADX", shorttitle="ALP V5", overlay=true)
// Initialize variables to track if a buy order has been placed and number of periods since the last buy
var bool hasBought = false
var int barCountSinceBuy = 0
// Define EMA periods
emaShort = ta.ema(close, 8)
emaLong = ta.ema(close, 20)
// Define ATR period and normalization
atrLength = 14
atrValue = ta.atr(atrLength)
maxHistoricalATR = ta.highest(atrValue, 20)
minHistoricalATR = ta.lowest(atrValue, 20)
normalizedATR = (atrValue - minHistoricalATR) / (maxHistoricalATR - minHistoricalATR)
// Define ADX parameters
adxValue = ta.rma(close, 14)
adxHighLevel = 30
isADXHigh = adxValue > adxHighLevel
// Initialize risk management variables
var float stopLossPercent = na
var float takeProfitPercent = na
var float trailingStop = na
// Calculate USD strength (simplified)
usd_strength = close / ta.ema(close, 50) - 1
// Adjust risk parameters based on USD strength
if (usd_strength > 0)
stopLossPercent := 3
takeProfitPercent := 6
else
stopLossPercent := 4
takeProfitPercent := 8
// Initialize position variable
var float positionPrice = na
// Volume filter
minVolume = ta.sma(volume, 14) * 1.5
isVolumeHigh = volume > minVolume
// Piyasa yönü için süper trend göstergesi
[supertrendValue, supertrendDirection] = ta.supertrend(4, 14) // Use a factor of 3 and ATR period of 10
bool isBullMarket = supertrendDirection < 0
bool isBearMarket = supertrendDirection > 0
// Yükselen piyasa için alım koşulu
buyConditionBull = isBullMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.2
// Düşen piyasa için alım koşulu
buyConditionBear = isBearMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.5
// Genel alım koşulu
buyCondition = buyConditionBull or buyConditionBear
// Yükselen ve düşen piyasalar için farklı satış koşulları
sellConditionBull = isBullMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellConditionBear = isBearMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
// Genel satış koşulu
sellCondition = sellConditionBull or sellConditionBear
// Buy condition
if (buyCondition)
strategy.entry("Buy", strategy.long)
positionPrice := close
hasBought := true // Set the flag to true when a buy order is placed
barCountSinceBuy := 0 // Reset the bar counter when a buy order is placed
// Increase the bar counter if a buy has been executed
if (hasBought)
barCountSinceBuy := barCountSinceBuy + 1
// Calculate stop-loss and take-profit levels
longStopLoss = positionPrice * (1 - stopLossPercent / 100)
longTakeProfit = positionPrice * (1 + takeProfitPercent / 100)
// Final Sell condition, now also checks if a buy has occurred before and if at least 5 periods have passed
finalSellCondition = sellCondition and hasBought and barCountSinceBuy >= 3 and isVolumeHigh
if (finalSellCondition)
strategy.close("Buy")
positionPrice := na
hasBought := false // Reset the flag when a sell order is placed
barCountSinceBuy := 0 // Reset the bar counter when a buy order is closed
// Implement stop-loss, take-profit, and trailing stop
strategy.exit("Stop Loss", "Buy", stop=longStopLoss)
strategy.exit("Take Profit", "Buy", limit=longTakeProfit)
//strategy.exit("Trailing Stop", "Buy", trail_price=close, trail_offset=trailingStop * close / 100)
var label l = na
if (buyCondition)
l := label.new(bar_index, high, text="buy triggered " + str.tostring(usd_strength))
label.delete(l[1])
if (finalSellCondition)
l := label.new(bar_index, high, text="sell triggered " + str.tostring(usd_strength))
label.delete(l[1])
// Plot signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=finalSellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")