
Cette stratégie combine une double croix d’or EMA, un filtre de bruit ATR normalisé et un indicateur de tendance ADX pour fournir aux traders un signal d’achat plus fiable. La stratégie intègre plusieurs indicateurs pour filtrer les faux signaux et identifier des opportunités de négociation plus fiables.
Cette stratégie utilise les EMA de 8 cycles et de 20 cycles pour construire un système de croisement bi-or des EMA. Un signal d’achat est généré lorsque les EMA de courte période traversent les EMA de longue période.
En outre, la stratégie a mis en place plusieurs indicateurs auxiliaires pour le filtrage:
14 cycles ATR, après traitement normalisé, filtrant les fluctuations de prix excessives sur le marché.
14 périodes ADX, force utilisée pour identifier une tendance. Les signaux de négociation ne sont pris en compte que dans une tendance forte.
14 cycles de volumes SMA, filtrage des points de temps avec moins de volumes.
L’indicateur de Super Trend de la période 4⁄14 est utilisé pour déterminer la direction du marché de l’hyperfluorure.
Une fois que la direction de la tendance, la valeur standardisée ATR, la valeur ADX et les conditions de rendement sont satisfaites, le croisement d’or EMA déclenche finalement un signal d’achat.
La stratégie intègre plusieurs indicateurs tels que l’EMA, l’ATR, l’ADX et le Super Trend, qui se complètent pour former un système de filtrage de signal plus puissant et plus fiable.
Les paramètres ATR, ADX et période de détention peuvent être ajustés en fonction de la situation réelle et la stratégie est plus flexible.
Pour juger de la surpopulation à l’aide de l’indicateur Super Trend, utilisez différents critères de paramètres pour la surpopulation afin d’éviter de rater des opportunités.
Les combinaisons de paramètres stratégiques sont complexes, difficiles à optimiser et nécessitent beaucoup de retours d’expérience pour trouver les paramètres optimaux.
Malgré les filtres multiples, il existe un risque de déclenchement erroné en raison de l’état de retard de l’indicateur. La théorie de l’arrêt des pertes doit être pleinement prise en compte.
La fréquence des transactions stratégiques est faible, et il est possible qu’il n’y ait pas de transactions pendant une période prolongée, sous l’effet de multiples indicateurs et de vagues.
Trouver la combinaison optimale de paramètres d’indicateur à partir d’une grande quantité de données de retour.
Les algorithmes d’apprentissage automatique optimisent les paramètres de la stratégie sur la base d’une grande quantité de données historiques et permettent une adaptation de la stratégie.
La diversité des stratégies est enrichie par la combinaison de plus d’indicateurs pour juger de la structure du marché, de l’humeur, etc.
Cette stratégie est synthétisée en tenant compte des facteurs de tendance, de volatilité et de quantité, et forme un système de négociation grâce à un filtrage multi-indicateurs et à un ajustement des paramètres. De manière synthétisée, la stratégie est très fiable et peut améliorer l’efficacité des transactions de la stratégie en optimisant davantage sa combinaison de paramètres et sa modélisation.
/*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")