A estratégia é uma estratégia de negociação adaptativa baseada em um sistema de duas equilíbrios, que identifica os sinais de compra através do cruzamento de uma média móvel rápida (EMA25) com uma média móvel lenta (EMA100) e combina um objetivo de parada dinâmica e ganho para otimizar os efeitos comerciais. A estratégia adota uma mentalidade de negociação inovadora, com foco no controle de riscos enquanto garante ganhos, e é adequada para negociações de tendências de médio e longo prazo.
A lógica central da estratégia inclui três partes-chave: 1. Sistema de sinalização: utiliza a EMA25 para passar pela EMA100 para formar um sinal múltipla, que geralmente indica o início de uma tendência ascendente. 2. Controle de risco: com o ponto de stop-loss no ponto mais próximo do ponto mais baixo do EMA100, esta configuração efetivamente impede o prejuízo causado por falsos avanços. 3. Gestão de lucro: meta de lucro com risco de retorno de 1:3 e, quando o lucro de 2% é atingido, o ponto de parada é automaticamente ajustado para a linha de custo, para obter posições sem risco.
A estratégia possui características de melhor risco-recompensação através de um ponto de partida de captura de tendências cruzada de linha média, com mecanismos de gestão de perda e lucro dinâmicos. O design da estratégia considera plenamente as necessidades de combate real e possui uma forte praticidade. A estabilidade e adaptabilidade da estratégia podem ser ainda melhoradas através da direção de otimização sugerida.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with TP and SL (Buy only) and Break-even", overlay=true) // EMA sozlamalari emaFastLength = input.int(25, title="Fast EMA Length") emaSlowLength = input.int(100, title="Slow EMA Length") // Hisoblash emaFast = ta.ema(close, emaFastLength) emaSlow = ta.ema(close, emaSlowLength) // Kesishishni aniqlash bullishCross = ta.crossover(emaFast, emaSlow) // EMA 25 EMA 100 ni yuqoriga kesib o'tganda // EMA 100 tagidagi oxirgi qizil shamning tagini olish lastRedCandleLow = ta.valuewhen(close < open and close < emaSlow, low, 0) // EMA 100 pastidagi qizil shamning tagi // TP va SL darajalarini hisoblash longSL = lastRedCandleLow longTP = close + 3 * (close - longSL) // TP SL ga nisbatan 1:2 masofada // Savdoni ochish va 2% foyda bo'lganda SLni break-even ga o‘zgartirish if (bullishCross) strategy.entry("Buy", strategy.long) // Buy pozitsiyasini ochish strategy.exit("Exit Buy", "Buy", stop=longSL, limit=longTP) // SL va TP qo'yish // 2% foyda bo'lganda SLni break-even ga o'zgartirish if (strategy.position_size > 0) profitPercentage = (close - strategy.position_avg_price) / strategy.position_avg_price * 100 if (profitPercentage >= 2) strategy.exit("Exit Buy BE", "Buy", stop=strategy.position_avg_price) // SLni break-even ga o'zgartirish // Signalni ko'rsatish plotshape(bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // // TP va SL chizish // if (bullishCross) // line.new(x1=bar_index, y1=longSL, x2=bar_index+1, y2=longSL, color=color.red, width=1, extend=extend.none) // line.new(x1=bar_index, y1=longTP, x2=bar_index+1, y2=longTP, color=color.green, width=1, extend=extend.none) // label.new(bar_index, longSL, text="SL: " + str.tostring(longSL), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // label.new(bar_index, longTP, text="TP: " + str.tostring(longTP), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) // EMA chizish plot(emaFast, color=color.blue, title="Fast EMA (25)") plot(emaSlow, color=color.orange, title="Slow EMA (100)") // Alert qo'shish alertcondition(bullishCross, title="Buy Signal Alert", message="EMA 25 crossed above EMA 100! Buy Signal!")