
Strategi ini menggabungkan dua EMA Gold Cross, penapis kebisingan ATR standard dan penunjuk trend ADX untuk memberi peniaga isyarat pembelian yang lebih dipercayai. Strategi ini menggabungkan beberapa penunjuk untuk menyaring isyarat palsu dan mengenal pasti peluang perdagangan yang lebih dipercayai.
Strategi ini menggunakan EMA 8 kitaran dan 20 kitaran untuk membina sistem silang EMA emas ganda. Ia menghasilkan isyarat beli apabila EMA kitaran pendek melintasi EMA kitaran panjang.
Selain itu, beberapa penunjuk tambahan telah disediakan untuk penapisan:
14 ATR kitaran, yang disusun secara standard untuk menyaring turun naik harga yang terlalu kecil di pasaran.
14 Periode ADX, yang digunakan untuk mengenal pasti kekuatan trend. Hanya dalam trend yang kuat, isyarat perdagangan akan dipertimbangkan.
14 kitaran jumlah transaksi SMA, penapisan masa yang lebih kecil jumlah transaksi.
Indeks Super Trend 4⁄14 kitaran, menilai arah pasaran kosong.
EMA Gold Cross akhirnya akan mencetuskan isyarat beli selepas memenuhi arah trend, nilai standard ATR, nilai ADX dan syarat kuantiti.
Strategi ini mengintegrasikan pelbagai petunjuk seperti EMA, ATR, ADX, Super Trend, dan lain-lain, membentuk sistem penapisan isyarat yang lebih kuat dengan kebolehpercayaan yang lebih tinggi.
ATR standardisasi nilai terhad, ADX nilai terhad, tempoh pegangan dan lain-lain parameter boleh disesuaikan dengan keadaan sebenar, strategi fleksibiliti yang lebih tinggi.
Untuk menilai pasaran kosong melalui indikator Super Trend, gunakan kriteria parameter yang berbeza untuk pasaran kosong untuk mengelakkan kehilangan peluang.
Kombinasi parameter strategi adalah kompleks, pengoptimuman lebih sukar, dan banyak pengulangan diperlukan untuk mencari parameter yang optimum.
Walaupun terdapat banyak penapisan, terdapat risiko untuk mencetuskan kesilapan kerana sifat indikator yang terbelakang. Perlu dipertimbangkan sepenuhnya teori hentikan kerugian.
Terkesan dengan pelbagai indikator dan gelombang, frekuensi perdagangan strategi akan lebih rendah dan mungkin tidak ada perdagangan dalam jangka masa yang panjang.
Mencari kombinasi optimum parameter penunjuk melalui banyak data pengesanan semula.
Berdasarkan banyak data sejarah, algoritma pembelajaran mesin digunakan untuk mengoptimumkan parameter strategi secara automatik, untuk mewujudkan fleksibiliti strategi.
Dengan lebih banyak indikator untuk menentukan struktur pasaran, emosi dan lain-lain, ia akan memperkaya pelbagai strategi.
Strategi ini mengambil kira faktor trend, turun naik dan kuantiti untuk membentuk sistem perdagangan melalui penapisan pelbagai indikator dan penyesuaian parameter. Secara keseluruhan, strategi ini mempunyai kebolehpercayaan yang tinggi, yang dapat meningkatkan kecekapan perdagangan strategi dengan mengoptimumkan lagi kombinasi parameter dan cara pemodelan.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Description:
//This strategy is a refactored version of an EMA cross strategy with a normalized ATR filter and ADX control.
//It aims to provide traders with signals for long positions based on market conditions defined by various indicators.
//How it Works:
//1. EMA: Uses short (8 periods) and long (20 periods) EMAs to identify crossovers.
//2. ATR: Uses a 14-period ATR, normalized to its 20-period historical range, to filter out noise.
//3. ADX: Uses a 14-period RMA to identify strong trends.
//4. Volume: Filters trades based on a 14-period SMA of volume.
//5. Super Trend: Uses a Super Trend indicator to identify the market direction.
//How to Use:
//- Buy Signal: Generated when EMA short crosses above EMA long, and other conditions like ATR and market direction are met.
//- Sell Signal: Generated based on EMA crossunder and high ADX value.
//Originality and Usefulness:
//This script combines EMA, ATR, ADX, and Super Trend indicators to filter out false signals and identify more reliable trading opportunities.
//USD Strength is not working, just simulated it as PSEUDO CODE: [close>EMA(50)]
//Strategy Results:
//- Account Size: $1000
//- Commission: Not considered
//- Slippage: Not considered
//- Risk: Less than 5% per trade
//- Dataset: Aim for more than 100 trades for sufficient sample size
//Note: This script should be used for educational purposes and should not be considered as financial advice.
//Chart:
//- The script's output is plotted as Buy and Sell signals on the chart.
//- No other scripts are included for clarity.
//- Have tested with 30mins period
//- You are encouraged to play with parameters, let me know if you
//@version=5
strategy("Advanced EMA Cross with Normalized ATR Filter, Controlling ADX", shorttitle="ALP V5", overlay=true )
// Initialize variables
var bool hasBought = false
var int barCountSinceBuy = 0
// Define EMA periods
emaShort = ta.ema(close, 8)
emaLong = ta.ema(close, 20)
// Define ATR parameters
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
// Calculate USD strength
// That's not working as usd strenght, since I couldn't manage to get usd strength
//I've just simulated it as if the current close price is above 50 days average (it's likely a bullish trend), usd is strong (usd_strenth variable is positive)
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
// Market direction using Super Trend indicator
[supertrendValue, supertrendDirection] = ta.supertrend(4, 14)
bool isBullMarket = supertrendDirection < 0
bool isBearMarket = supertrendDirection > 0
// Buy conditions for Bull and Bear markets
buyConditionBull = isBullMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.2
buyConditionBear = isBearMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.5
buyCondition = buyConditionBull or buyConditionBear
// Sell conditions for Bull and Bear markets
sellConditionBull = isBullMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellConditionBear = isBearMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellCondition = sellConditionBull or sellConditionBear
// Final Buy and Sell conditions
if (buyCondition)
strategy.entry("Buy", strategy.long)
positionPrice := close
hasBought := true
barCountSinceBuy := 0
if (hasBought)
barCountSinceBuy := barCountSinceBuy + 1
// Stop-loss and take-profit levels
longStopLoss = positionPrice * (1 - stopLossPercent / 100)
longTakeProfit = positionPrice * (1 + takeProfitPercent / 100)
// Final Sell condition
finalSellCondition = sellCondition and hasBought and barCountSinceBuy >= 3 and isVolumeHigh
if (finalSellCondition)
strategy.close("Buy")
positionPrice := na
hasBought := false
barCountSinceBuy := 0
// Implement stop-loss and take-profit
strategy.exit("Stop Loss", "Buy", stop=longStopLoss)
strategy.exit("Take Profit", "Buy", limit=longTakeProfit)
// 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")