Chiến lược pullback trung bình động theo dõi các giao dịch chéo của các giá trung bình động, và xác định các cơ hội pullback để thực hiện các giao dịch ngược xu hướng khi các đường chéo vàng xảy ra.
Cốt lõi của chiến lược này bao gồm hai đường trung bình động - đường EMA 14 ngày và đường SMA 56 ngày. Nó kích hoạt tín hiệu mua khi đường EMA 14 ngày vượt qua đường SMA 56 ngày từ dưới. Sau đó, chiến lược nhìn lại 20 ngày để tìm mức thấp dao động như hỗ trợ. Kết hợp với giá đóng tại điểm chéo, các đường rút Fibonacci được vẽ ra, với đường rút 1.272 như đường vào và 0.618 như đường ra. Do đó, chiến lược thiết lập một điểm vào để đi ngắn sau khi đường vàng vượt qua, và kiếm lợi nhuận nếu giá thực sự rút lại đường 0.618.
Các bước chính của chiến lược này là:
Điều trên giải thích quy trình làm việc chính và logic đằng sau chiến lược giảm giá này.
Những lợi thế chính của chiến lược giảm giá trung bình động này là:
Tóm lại, đây là một phương pháp rất phù hợp cho giao dịch ngắn hạn theo kiểu đảo ngược trung bình. Nó nắm bắt cơ hội rút lui để kiếm lợi nhuận. Chiến lược này cũng đơn giản và trực tiếp để thực hiện.
Mặc dù có lợi, cũng có một số rủi ro cần lưu ý cho chiến lược này:
Để giảm thiểu rủi ro, chúng tôi có thể thiết lập một khung thời gian dừng lỗ ngắn để kiểm soát lỗ; cũng tối ưu hóa phạm vi đường rút để nhắm đến mục tiêu lợi nhuận hợp lý.
Vẫn còn nhiều chỗ để tối ưu hóa chiến lược rút lui trung bình động này:
Kiểm tra các thiết lập tham số khác nhau trên các mục như thời gian trung bình chuyển động, ngày xem lại, số Fibonacci nhân vv để tìm tối ưu;
Thêm các cơ chế dừng lỗ như dừng nhiều lần hoặc dừng lại để kiểm soát tốt hơn rủi ro;
Thiết lập các chỉ số khác như các bộ lọc để tránh các điều kiện thị trường không phù hợp;
Tối ưu hóa quy tắc quản lý rủi ro và quy mô vị trí.
Thông qua thử nghiệm và tối ưu hóa nghiêm ngặt, cải tiến đáng kể có thể đạt được cho chiến lược giao dịch này.
Chiến lược thu hồi trung bình động là một chiến lược giao dịch ngắn hạn rất thực tế. Nó nắm bắt các cơ hội đảo ngược trung bình khi giá giảm trong ngắn hạn. Ý tưởng chiến lược đơn giản và dễ hiểu. Vẫn còn những rủi ro cần phải giải quyết thông qua tối ưu hóa và kiểm soát rủi ro. Nhìn chung đây là một chiến lược định lượng đầy hứa hẹn xứng đáng với nghiên cứu và ứng dụng thêm.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MAC Pullback", overlay=true) // Setting up timeperiod for testing startPeriodYear = input(2014, "Backtest Start Year") startPeriodMonth = input(1, "Backtest Start Month") startPeriodDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0) stopPeriodYear = input(2035, "Backtest Stop Year") stopPeriodMonth = input(12, "Backtest Stop Month") stopPeriodDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0) // Moving Averages ema14 = ema(close, 14) ema28 = ema(close, 28) sma56 = sma(close, 56) // Plot plot(ema14, title="ema14", linewidth=2, color=green) plot(ema28, title="ema28", linewidth=2, color=red) plot(sma56, title="sma56", linewidth=3, color=blue) // Strategy goLong = cross(ema14, sma56) and ema14 > ema28 goShort = cross(ema14, sma56) and ema14 < ema28 // Locate Swing Lows leftBars = input(20) rightBars=input(20) swinglow = pivotlow(close, leftBars, rightBars) plot(swinglow, style=cross, linewidth=8, color=#00FF00, offset=-rightBars) if goLong == true and time >= testPeriodStart and time <= testPeriodStop // We try to make sure that we're catching the first Pullback after the crossover if ema14[12] < sma56[12] pivotpoint = lowest(40)[0] //lowest value of the month as our swing low // We calculate a Fib 1.272 extension (from the previous swing low to // the crossover long entry's open) and use this as our entry target to short the Pullback extensiontarget = ((close[1] - pivotpoint) * 1.27) + pivotpoint shorttarget = ((close[1] - pivotpoint) * 0.618) + pivotpoint strategy.order("Pullback", strategy.short, 5.0, limit=extensiontarget) // I would like to use a trailing stop but for know we just hope to get // filled if the pullback reaches all the way down to the 0.618. // We also place a tight stop loss since we trying to short an uptrend strategy.exit("Pullback Exit", "Pullback", limit=shorttarget, loss=400)