Chiến lược lợi nhuận hiệu quả theo đợt chuyển động (Momentum Swing Effective Profit Strategy) là một chiến lược giao dịch định lượng được thiết kế để nắm bắt các cơ hội lợi nhuận trong thị trường tài chính trung hạn bằng cách tích hợp các nguyên tắc giao dịch chuyển động và các chỉ số đợt chuyển động. Chiến lược sử dụng một sự kết hợp các chỉ số kỹ thuật bao gồm trung bình động, tín hiệu chéo và phân tích khối lượng để tạo ra các tín hiệu mua và bán. Mục tiêu là xác định xu hướng thị trường và tận dụng đợt chuyển động giá để kiếm lợi nhuận.
Tín hiệu mua được xác định bởi nhiều yếu tố bao gồm A1, A2, A3, XG và WeeklySlope.
Điều kiện A1: Kiểm tra các mối quan hệ giá cụ thể, xác minh tỷ lệ giá cao nhất với giá đóng cửa nhỏ hơn 1,03, tỷ lệ giá mở cửa với giá thấp nhất nhỏ hơn 1,03, và tỷ lệ giá cao nhất với giá đóng cửa trước đó lớn hơn 1,06. Điều kiện này tìm kiếm một mô hình cụ thể cho thấy đà tăng tiềm năng.
A2 Điều kiện: Kiểm tra mối quan hệ giá liên quan đến giá đóng cửa, xác minh tỷ lệ giá đóng cửa với giá mở cửa lớn hơn 1,05 hoặc tỷ lệ giá đóng cửa với giá đóng cửa trước đó lớn hơn 1,05. Điều kiện này tìm kiếm các dấu hiệu của chuyển động và động lực giá tăng.
Điều kiện A3: Tập trung vào khối lượng, kiểm tra xem khối lượng hiện tại có vượt quá khối lượng cao nhất trong 60 giai đoạn qua không.
Điều kiện XG: Kết hợp các điều kiện A1 và A2 và kiểm tra xem chúng có đúng cho cả thanh hiện tại và thanh trước đó hay không. Nó cũng xác minh tỷ lệ giá đóng cửa với 5-thời gian EMA vượt qua trên 9-thời gian SMA của cùng một tỷ lệ. Điều kiện này giúp xác định tín hiệu mua tiềm năng khi nhiều yếu tố liên kết, chỉ ra đà tăng mạnh và điểm nhập tiềm năng.
Nhân tố xu hướng hàng tuần: Tính toán độ nghiêng của SMA 50 giai đoạn trên một khung thời gian hàng tuần. Nó kiểm tra xem độ nghiêng có dương tính không, chỉ ra xu hướng tăng tổng thể hàng tuần. Điều kiện này cung cấp xác nhận bổ sung rằng cổ phiếu đang có xu hướng tăng.
Khi tất cả các điều kiện này được đáp ứng, điều kiện mua được kích hoạt, cho thấy thời gian thuận lợi để vào một vị trí dài.
Điều kiện bán là tương đối đơn giản trong chiến lược:
Tín hiệu bán: Điều kiện bán chỉ đơn giản là kiểm tra xem giá đóng cửa có vượt dưới đường EMA 10 giai đoạn không. Khi điều kiện này được đáp ứng, nó chỉ ra một sự đảo ngược hoặc suy yếu tiềm năng của đà tăng giá, và một tín hiệu bán được tạo ra.
Chiến lược Lợi nhuận hiệu quả chuyển động động tích hợp các nguyên tắc giao dịch chuyển động và các chỉ số động lực thông qua tối ưu hóa tham số và tích hợp điều kiện, đạt được lợi nhuận đáng kể trong backtests. Nó nắm bắt các xu hướng trung hạn tốt nhưng nên nhận thức được rủi ro đảo ngược xu hướng.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © fzj20020403 //@version=5 strategy("Slight Swing Momentum Strategy.", overlay=true) // Position Status Definition var inPosition = false // Moving Average Definition ma60 = ta.sma(close, 60) // A1 Condition Definition A1 = high / close < 1.03 and open / low < 1.03 and high / close[1] > 1.06 // A2 Condition Definition A2 = close / open > 1.05 or close / close[1] > 1.05 // A3 Condition Definition highestVol = ta.highest(volume, 60) A3 = ta.crossover(volume, highestVol[1]) // B1 Condition Definition ema5 = ta.ema(close, 5) B1 = close / ema5 // XG Condition Definition A1andA2 = (A1 and A2) and (A1[1] and A2[1]) XG = ta.crossover(B1, ta.sma(B1, 9)) // Weekly Trend Factor Definition weeklyMa = ta.sma(close, 50) weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0 // Buy Signal using XG Condition buySignal = A1 and close > ma60 or A2 and A3 and XG and close > ma60 and weeklySlope // Sell Signal Condition sellSignal = close < ta.ema(close, 10) // Buy and Sell Conditions buyCondition = buySignal and not inPosition sellCondition = sellSignal and inPosition // Execute Buy and Sell Operations if (buyCondition) strategy.entry("Buy", strategy.long) inPosition := true if (sellCondition) strategy.close("Buy") inPosition := false // Stop Loss and Take Profit Levels stopLoss = strategy.position_avg_price * 0.5 takeProfit = strategy.position_avg_price * 1.30 // Apply Stop Loss and Take Profit Levels if inPosition strategy.exit("Long Stop Loss", "Buy", stop=stopLoss) strategy.exit("Long Take Profit", "Buy", limit=takeProfit) // Plot Buy and Sell Signal Shapes plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small) plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small) // EMA Variable Definition ema = ta.ema(close, 5) // Plot Indicator Line plot(ema, color=color.green, title="EMA")