Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên Mức trung bình chuyển động biểu thức 5 ngày (EMA), phân tích mối quan hệ giữa giá và EMA để nắm bắt xu hướng thị trường. Chiến lược này kết hợp điều chỉnh năng động các mục tiêu dừng lỗ và lợi nhuận, sử dụng quản lý vị trí dựa trên tỷ lệ phần trăm và xem xét chi phí giao dịch, làm cho nó rất thực tế và linh hoạt.
Chiến lược này dựa trên sự tương tác giữa giá và EMA 5 ngày để xác định các điểm đầu vào. Cụ thể, tín hiệu dài được tạo ra khi mức cao của giai đoạn trước thấp hơn EMA và giai đoạn hiện tại cho thấy sự đột phá. Chiến lược cũng bao gồm một điều kiện bổ sung tùy chọn yêu cầu giá đóng phải cao hơn giai đoạn trước để tăng độ tin cậy của tín hiệu. Để kiểm soát rủi ro, chiến lược cung cấp hai loại phương pháp dừng lỗ: dừng lỗ động dựa trên mức thấp trước và dừng lỗ điểm cố định. Mục tiêu lợi nhuận được thiết lập năng động dựa trên tỷ lệ rủi ro-lợi nhuận tiềm năng để đảm bảo lợi nhuận giao dịch.
Đây là một chiến lược theo xu hướng được thiết kế tốt với logic rõ ràng, nắm bắt hiệu quả xu hướng thị trường thông qua sự kết hợp của chỉ số EMA và hành động giá. Chiến lược có các cơ chế toàn diện để kiểm soát rủi ro và quản lý lợi nhuận trong khi cung cấp nhiều hướng tối ưu hóa, chứng minh giá trị thực tế mạnh mẽ và có thể cải thiện.
/*backtest start: 2024-12-29 00:00:00 end: 2025-01-05 00:00:00 period: 30m basePeriod: 30m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - PowerOfStocks 5EMA", overlay=true) // Inputs enableSL = input.bool(false, title="Enable Extra SL") usl = input.int(defval=5, title="SL Distance in Points", minval=1, maxval=100) riskRewardRatio = input.int(defval=3, title="Risk to Reward Ratio", minval=3, maxval=25) showSell = input.bool(true, title="Show Sell Signals") showBuy = input.bool(true, title="Show Buy Signals") buySellExtraCond = input.bool(false, title="Buy/Sell with Extra Condition") startDate = input(timestamp("2018-01-01 00:00"), title="Start Date") endDate = input(timestamp("2069-12-31 23:59"), title="End Date") // EMA Calculation ema5 = ta.ema(close, 5) // Plot EMA plot(ema5, "EMA 5", color=color.new(#882626, 0), linewidth=2) // Variables for Buy var bool longTriggered = na var float longStopLoss = na var float longTarget = na // Variables for Sell (used for signal visualization but no actual short trades) var bool shortTriggered = na var float shortStopLoss = na var float shortTarget = na // Long Entry Logic if true if (showBuy) longCondition = high[1] < ema5[1] and high[1] < high and (not buySellExtraCond or close > close[1]) if (longCondition and not longTriggered) entryPrice = high[1] stopLoss = enableSL ? low[1] - usl * syminfo.mintick : low[1] target = enableSL ? entryPrice + (entryPrice - stopLoss) * riskRewardRatio : high[1] + (high[1] - low[1]) * riskRewardRatio // Execute Buy Order strategy.entry("Buy", strategy.long, stop=entryPrice) longTriggered := true longStopLoss := stopLoss longTarget := target label.new(bar_index, entryPrice, text="Buy@ " + str.tostring(entryPrice), style=label.style_label_up, color=color.green, textcolor=color.white) // Short Signal Logic (Visual Only) if (true) if (showSell) shortCondition = low[1] > ema5[1] and low[1] > low and (not buySellExtraCond or close < close[1]) if (shortCondition and not shortTriggered) entryPrice = low[1] stopLoss = enableSL ? high[1] + usl * syminfo.mintick : high[1] target = enableSL ? entryPrice - (stopLoss - entryPrice) * riskRewardRatio : low[1] - (high[1] - low[1]) * riskRewardRatio // Visual Signals Only label.new(bar_index, entryPrice, text="Sell@ " + str.tostring(entryPrice), style=label.style_label_down, color=color.red, textcolor=color.white) shortTriggered := true shortStopLoss := stopLoss shortTarget := target // Exit Logic for Buy if longTriggered // Stop-loss Hit if low <= longStopLoss strategy.close("Buy", comment="SL Hit") longTriggered := false // Target Hit if high >= longTarget strategy.close("Buy", comment="Target Hit") longTriggered := false // Exit Logic for Short (Signals Only) if shortTriggered // Stop-loss Hit if high >= shortStopLoss shortTriggered := false // Target Hit if low <= shortTarget shortTriggered := false