Đây là một chiến lược theo xu hướng dựa trên nhiều khung thời gian EMA chéo nhau. Chiến lược chủ yếu dựa trên các mối quan hệ chéo nhau giữa 20, 50, và 200 giai đoạn Chỉ số trung bình chuyển động (EMA) và mối quan hệ giá-EMA để xác định các điểm nhập cảnh, trong khi kết hợp tỷ lệ phần trăm dựa trên mức lợi nhuận và dừng lỗ để quản lý rủi ro. Chiến lược này đặc biệt hiệu quả trên các khung thời gian lớn hơn như biểu đồ 1 giờ, hàng ngày và hàng tuần.
Lý thuyết cốt lõi dựa trên một hệ thống đa trung bình động và phân tích hành động giá:
Đây là một xu hướng được thiết kế tốt theo chiến lược với logic rõ ràng. Thông qua sự kết hợp của nhiều chỉ số kỹ thuật, nó đảm bảo cả độ tin cậy chiến lược và các giải pháp quản lý rủi ro rõ ràng. Chiến lược đặc biệt phù hợp với các biểu đồ khung thời gian lớn hơn và có những lợi thế độc đáo trong việc nắm bắt xu hướng trung bình đến dài hạn. Thông qua các hướng tối ưu hóa được đề xuất, có chỗ để cải thiện hơn nữa. Các nhà giao dịch được khuyên nên kiểm tra kỹ lưỡng chiến lược trong một hệ thống kiểm tra lại trước khi giao dịch trực tiếp và điều chỉnh các tham số theo các đặc điểm cụ thể của công cụ giao dịch.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross Strategy with Targets and Fill", overlay=true) // Define EMAs ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // Plot EMAs (hidden) plot(ema20, color=color.blue, title="EMA 20", display=display.none) plot(ema50, color=color.red, title="EMA 50", display=display.none) plot(ema200, color=color.green, title="EMA 200", display=display.none) // Define the conditions priceCrossAboveEMA20 = ta.crossover(close, ema20) priceCloseAboveEMA20 = close > ema20 ema20AboveEMA50 = ema20 > ema50 ema50AboveEMA200 = ema50 > ema200 // Buy condition buyCondition = priceCrossAboveEMA20 and priceCloseAboveEMA20 and ema20AboveEMA50 and ema50AboveEMA200 // Plot buy signals plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Declare and initialize variables for take profit and stop loss levels var float longTakeProfit = na var float longStopLoss = na var float buyPrice = na // Update levels and variables on buy condition if (buyCondition) // Enter a new buy position strategy.entry("Buy", strategy.long) // Set new take profit and stop loss levels longTakeProfit := strategy.position_avg_price * 1.10 // Target is 10% above the buy price longStopLoss := strategy.position_avg_price * 0.95 // Stop loss is 5% below the buy price buyPrice := strategy.position_avg_price // Plot levels for the new trade plotTakeProfit = plot(longTakeProfit, color=color.green, title="Take Profit", linewidth=1, offset=-1) plotStopLoss = plot(longStopLoss, color=color.red, title="Stop Loss", linewidth=1, offset=-1) plotBuyPrice = plot(buyPrice, color=color.blue, title="Buy Price", linewidth=1, offset=-1) // Fill areas between buy price and take profit/stop loss levels fill(plotBuyPrice, plotTakeProfit, color=color.new(color.green, 90), title="Fill to Take Profit") // Light green fill to target fill(plotBuyPrice, plotStopLoss, color=color.new(color.red, 90), title="Fill to Stop Loss") // Light red fill to stop loss // Exit conditions strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=longTakeProfit, stop=longStopLoss)