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