Esta estratégia é uma estratégia de rede de posições variável que segue a tendência e usa principalmente padrões EMA, RSI e engulfing para determinar a direção da tendência e o tempo de entrada. A estratégia ajusta as posições de stop-loss e take-profit com base no tamanho do corpo do padrão engulfing, permitindo aos usuários escolherem ir longo apenas, curto apenas ou ambos. Além disso, a estratégia fornece a opção de usar o MACD como um filtro de tendência.
A estratégia usa uma EMA de 200 períodos para determinar a direção geral da tendência. Quando o preço está acima da EMA, é considerado uma tendência de alta, e quando abaixo da EMA, é considerado uma tendência de queda. Um RSI de 9 períodos é usado para medir o impulso, com um RSI acima de 50 indicando um impulso de alta mais forte e abaixo de 50 indicando um impulso de baixa mais forte. A estratégia também usa padrões de engulfamento de alta e baixa como sinais de entrada. Quando os sinais de padrão de engulfamento da EMA, RSI e estão de acordo, a estratégia abre uma posição.
As posições stop-loss e take-profit são determinadas com base no tamanho do corpo do padrão de engulfamento. O stop-loss é definido em duas vezes o tamanho do corpo de engulfamento, com uma porcentagem mínima de stop-loss de 0,3% do preço de entrada para evitar freqüentes stop-outs devido a pequenas distâncias de stop-loss. A posição take-profit é definida multiplicando a distância stop-loss por uma relação risco-recompensa pré-definida para garantir uma relação risco-recompensa fixa. Além disso, a estratégia fornece a opção de usar o MACD como um filtro de tendência, considerando uma tendência de alta mais forte quando a linha MACD está acima da linha de sinal e uma tendência de baixa mais forte quando a linha MACD está abaixo da linha de sinal.
Seguimento de tendências: A estratégia utiliza múltiplos indicadores para determinar a tendência, ajudando a entrar nos estágios iniciais de formação de tendências e capturar os movimentos da tendência.
A estratégia permite que as posições de stop-loss e take-profit sejam ajustadas em função do tamanho do corpo do padrão de absorção, ampliando o intervalo de take-profit quando a tendência é forte e reduzindo o intervalo de stop-loss quando a tendência é fraca, permitindo uma gestão de posição flexível.
Os usuários podem personalizar a direção de negociação, as preferências de risco e outros parâmetros para atender às diferentes necessidades do usuário.
A opção de utilizar o MACD como filtro de tendência confirma ainda mais a força da tendência e melhora a precisão da entrada.
Identificação incorreta da tendência: Embora a estratégia utilize múltiplos indicadores para determinar a tendência, ainda pode haver casos em que a tendência é identificada incorretamente, levando a perdas.
Intervalo de estreitamento: se o corpo do padrão de engulfing for pequeno, as distâncias de stop-loss e take-profit serão muito próximas, levando a uma deterioração da relação risco/recompensa.
Optimização de parâmetros: os parâmetros ideais podem variar significativamente entre diferentes instrumentos e prazos, exigindo que os usuários testem e otimizem continuamente.
Identificação de tendências: considerar a introdução de ferramentas adicionais de confirmação de tendências, tais como bandas de Bollinger, índice direcional médio (ADX), etc., para melhorar a precisão da identificação de tendências.
Optimização do stop-loss e do take-profit: considerar a incorporação de indicadores relacionados com a volatilidade, como o ATR, para ajustar dinamicamente as distâncias de stop-loss e take-profit, reduzindo o risco associado a intervalos pequenos.
Dimensão da posição: ajustar dinamicamente o tamanho da posição com base na força da tendência, na rentabilidade da conta, etc., aumentando o tamanho da posição quando a tendência é forte e consistentemente lucrativa e reduzindo o custo de negociação frequente.
Coordenação de vários prazos e instrumentos: validar os sinais de tendência em todos os prazos e instrumentos para melhorar a precisão da identificação de tendências, diversificando o risco de um único instrumento ou período.
Esta estratégia de rede de posições variável de tendência funciona bem em mercados de tendência, usando vários indicadores para determinar a direção e a força da tendência, ajustando dinamicamente o tamanho de stop-loss, take-profit e posição para capturar tendências e alcançar retornos excessivos. No entanto, o desempenho da estratégia é médio em mercados pouco claros ou com flutuações frequentes. Portanto, ao usar esta estratégia, é crucial se concentrar na seleção de instrumentos de tendência e no ajuste de parâmetros conforme as condições do mercado mudam. Além disso, há espaço para uma otimização adicional na identificação de tendência, colocação de stop-loss e take-profit, dimensionamento de posição e coordenação multi-temporal e multi-instrumental.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © niosupetranmartinez //@version=5 strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true) // Inputs emaLen = input(200, 'EMA Length') rsiLen = input(9, 'RSI Length') trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"]) risk_reward_ratio = input(2, 'Risk Reward Ratio') useMacdFilter = input.bool(true, "Use MACD Filter") macdTimeframe = input("5", "MACD Timeframe") // EMA and RSI ema200 = ta.ema(close, emaLen) customRsi = ta.rsi(close, rsiLen) // MACD Filter [macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9)) // Majority Body Candle Identification Function isMajorityBodyCandle(candleOpen, candleClose, high, low) => bodySize = math.abs(candleClose - candleOpen) fullSize = high - low bodySize / fullSize > 0.6 // Engulfing Patterns isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low) isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low) // Entry Conditions with MACD Filter longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine) shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine) // Trade Execution var float stopLossPrice = na var float entryPrice = na // Long Entry if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(close - open) minimumStopLoss = entryPrice * 0.997 calculatedStopLoss = entryPrice - (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = entryPrice - stopLossPrice takeProfitPrice = entryPrice + (risk_reward_ratio * risk) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice) // Short Entry if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(open - close) minimumStopLoss = entryPrice * 1.003 calculatedStopLoss = entryPrice + (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = stopLossPrice - entryPrice takeProfitPrice = entryPrice - (risk_reward_ratio * risk) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice) // Plotting plot(ema200, color=color.blue, linewidth=2, title="EMA 200")