
Эта стратегия сочетает в себе двойной золотой крест EMA, стандартизированный фильтр шума ATR и индикатор тренда ADX, чтобы предоставить трейдерам более надежный сигнал покупки. Эта стратегия объединяет несколько индикаторов, которые фильтруют ложные сигналы и идентифицируют более надежные торговые возможности.
Эта стратегия использует 8-циклические и 20-циклические ЭМА для построения двойной золотой кросс-системы ЭМА. Покупательный сигнал генерируется, когда короткие ЭМА пересекают длинные ЭМА.
Кроме того, в стратегии есть несколько вспомогательных параметров для фильтрации:
14 циклов ATR, после стандартизированной обработки, фильтруют чрезмерные колебания цен на рынке.
14 циклов ADX, используется для определения силы тренда. Только в сильных тенденциях рассматриваются торговые сигналы.
14 циклов SMA, отфильтрованные в периоды с меньшим количеством сделок.
4⁄14 Циклический индикатор супер тренда, который определяет направление рынка.
В конечном итоге EMA-золотой кросс запускает сигнал покупки только после удовлетворения условий направления тренда, стандартизации ATR, ADX и объема продаж.
Стратегия включает в себя несколько показателей, таких как EMA, ATR, ADX и Super Trend, которые дополняют друг друга, создавая более сильную систему фильтрации сигналов с высокой надежностью.
Параметры ATR, такие как стандартизированная убыль, убыль ADX и период удержания позиции могут быть оптимизированы в соответствии с реальными обстоятельствами, и стратегия имеет большую гибкость.
Используйте различные параметры для определения свободных рынков с помощью показателя Super Trend, чтобы избежать упущенных возможностей.
Сочетание параметров стратегии сложное и сложное для оптимизации, требует большого количества обратной связи, чтобы найти оптимальные параметры.
Несмотря на множественную фильтрацию, существует риск ошибочного срабатывания из-за задержки по природе показателя. Стоп-стоп-теория должна быть полностью рассмотрена.
В зависимости от множества индикаторов и колебаний, частота стратегических сделок будет относительно низкой, возможно, в течение длительного времени без торгов.
Найти оптимальную комбинацию параметров показателя с помощью большого количества данных обратной связи.
На основе большого количества исторических данных алгоритмы машинного обучения автоматически оптимизируют параметры стратегии, обеспечивая адаптивность стратегии.
Вместе с другими показателями, определяющими структуру рынка, настроения и другие факторы, это позволит нам создать разнообразные стратегии.
В комплексе данная стратегия учитывает тенденции, волатильность и количественные факторы, формируя торговую систему с помощью фильтрации с использованием нескольких показателей и регулирования параметров. В комплексе данная стратегия обладает высокой надежностью, что позволяет повысить эффективность торговли стратегией путем дальнейшей оптимизации ее комбинации параметров и моделирования.
/*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")