
A estratégia utiliza a dupla linha de equilíbrio EMA para formar um forco de ouro para fazer mais, um forco morto para fazer menos e seguir a estratégia clássica da tendência, e usa o indicador ATR e o indicador ADX para filtragem adicional, para rastrear quando há uma tendência forte e controlar o risco em caso de um tremor.
A estratégia baseia-se principalmente nos seguintes pontos:
O uso de um curto de 8 períodos EMA média e um longo de 20 períodos EMA média para formar um sinal de forquilha e forquilha. A EMA média em si tem a natureza de seguir a tendência.
O indicador ATR reflete a amplitude de flutuação recente. Através da normalização do indicador ATR, é possível ajustar dinamicamente as condições de filtragem do cruzamento equilátero do EMA, reduzindo os requisitos quando um forte trend é seguido e aumentando os requisitos de filtragem em situações de choque, controlando o risco.
O indicador ADX determina a força da tendência. Quando o ADX é maior que 30, é considerado uma tendência forte, e a defesa de perda é interrompida.
Combinando tendências de alta e baixa, julgue o momento de fazer mais ações em branco. No mercado de touros, o forro dourado faz mais, no mercado de ursos, o forro morto faz ações em branco.
Filtração de volume de transações, para entrar quando o volume de transações aumenta.
O índice de USD simplesmente determina a força do dólar e a amplitude de stop loss e stop loss quando o dólar é forte.
A combinação de indicadores de super tendências para avaliar a tendência geral do mercado, auxiliando a avaliação de quando fazer mais curto prazo.
A estratégia combina os indicadores de tendência e os indicadores de choque, permitindo ajustar os parâmetros de forma dinâmica e controlar os riscos enquanto se segue a tendência.
O sistema de dupla linha de equilíbrio do EMA é usado para julgar a tendência. O EMA é suave e pode filtrar efetivamente as falsas rupturas.
O indicador ATR ajusta dinamicamente as condições de filtragem de cruzamento linear da EMA, permitindo que a estratégia se adapte de forma flexível a diferentes condições de mercado.
O indicador ADX e o volume de transações são indicadores auxiliares para evitar a manipulação em situações de turbulência.
O índice do dólar e o indicador de super tendências são usados para avaliar as grandes tendências e melhorar a precisão da tomada de decisões.
Os parâmetros de gerenciamento de risco são automaticamente ajustados para a força do dólar e os stop loss e stop loss são amplificados quando o dólar é forte.
A estratégia de Stop Loss Stop Loss é fácil de implementar e de rastrear, usando sinais de negociação simples e intuitivos.
O sistema de dupla linha de equilíbrio da EMA elimina os pontos críticos da tendência e determina o atraso.
A escolha incorreta dos parâmetros ATR pode levar a ser extremamente radical ou conservador.
Os parâmetros do indicador ADX precisam ser otimizados, e a escolha inadequada dos pontos altos do ADX pode perder a tendência.
O índice do dólar e o indicador de tendências super podem estar errados.
O limite de perda muito pequeno pode aumentar os prejuízos; o limite de perda muito amplo pode ser ajustado.
Pode-se considerar a combinação de outros indicadores, como o MACD, para determinar os pontos críticos de tendência.
Treine o espaço de parâmetros ATR com mais dados históricos para encontrar o melhor intervalo de parâmetros.
Teste diferentes parâmetros de ADX, otimize o julgamento do ponto alto do ADX.
Adicionar mais variáveis para avaliar o índice do dólar e a tendência geral do mercado.
Calculou-se o máximo de stop loss com base em dados de retrospectiva.
Pode-se considerar a transformação do stop loss em stop loss móvel ou stop loss oscilante.
Continuar a otimizar o tamanho das aberturas e o ciclo de detenção.
A estratégia integra o clássico sistema de dupla linha de equilíbrio EMA com vários indicadores auxiliares, com otimização automática dos parâmetros, para uma estratégia de acompanhamento de tendências mais completa. Ela é capaz de se adaptar flexivelmente às mudanças no ambiente do mercado, controlando o risco enquanto segue a tendência.
/*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")