Chiến lược này là một hệ thống giao dịch thích nghi dựa trên một hệ thống trung bình động kép, xác định tín hiệu mua thông qua sự chéo chéo của trung bình động nhanh (EMA25) và trung bình động chậm (EMA100), kết hợp với các mục tiêu dừng lỗ và lợi nhuận năng động để tối ưu hóa hiệu suất giao dịch.
Logic cốt lõi của chiến lược bao gồm ba thành phần chính:
Chiến lược này nắm bắt các điểm khởi đầu xu hướng thông qua các chéo trung bình động, kết hợp với các cơ chế quản lý lỗ dừng và lợi nhuận năng động, đạt được các đặc điểm rủi ro-lợi nhuận thuận lợi.
/*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!")