Chiến lược thoái lui trung bình động


Ngày tạo: 2023-12-19 11:55:25 sửa đổi lần cuối: 2023-12-19 11:55:25
sao chép: 1 Số nhấp chuột: 719
1
tập trung vào
1621
Người theo dõi

Chiến lược thoái lui trung bình động

Tổng quan

Chiến lược kéo ngược đường trung bình di chuyển là một chiến lược giao dịch định lượng theo dõi sự giao thoa của giá cổ phiếu với đường trung bình di chuyển để xác định xem có cơ hội kéo ngược hay không, và nếu có, hãy thực hiện hoạt động ngược. Chiến lược này sử dụng đường kéo ngược Fibonacci để thiết lập điểm vào thị trường và điểm dừng lỗ để nắm bắt sự kéo ngược của giá trong ngắn hạn.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên hai đường trung bình di chuyển: EMA 14 ngày và SMA 56 ngày. Khi EMA 14 ngày đi qua SMA 56 ngày từ phía dưới tạo ra tín hiệu mua. Sau đó, mã sẽ quay trở lại ngày 20 để tìm một mức thấp như là hỗ trợ, sau đó kết hợp với giá gần điểm đi qua để vẽ đường kéo Fibonacci, với đường kéo 1.272 lần như là entrance, đường kéo 0.618 lần như là exit.

Toàn bộ chiến lược được chia thành một vài bước:

  1. Đánh giá EMA 14 ngày, SMA 56 ngày;
  2. Xác định liệu có tín hiệu vàng qua SMA trên EMA hay không;
  3. Tôi không thể nói rằng tôi đã làm được điều đó.
  4. Sử dụng điểm thấp và vị trí của điểm gai vàng để vẽ đường Fibonacci;
  5. Đặt điểm vào trống trên đường kéo 1.272 lần;
  6. Đặt điểm dừng ở 0.618 vòng quay.

Đây là quy trình và nguyên tắc hoạt động chính của chiến lược. Chiến lược này có thể nắm bắt cơ hội để kiếm lợi nhuận khi giá có một sự đảo ngược ngắn hạn.

Lợi thế chiến lược

Chiến lược này có một số ưu điểm:

  1. Ý tưởng chiến lược rõ ràng, đơn giản, dễ hiểu và dễ thực hiện;
  2. Theo lý thuyết Fibonacci, các điểm đầu vào và điểm dừng sẽ giúp kiểm soát rủi ro tốt hơn.
  3. Có thể nắm bắt cơ hội để có được lợi nhuận đơn lẻ tốt hơn trong thời gian ngắn;
  4. Chỉ cần một tín hiệu moving average fork mới có thể khởi động, điều kiện không khắc nghiệt.

Nhìn chung, chiến lược này rất phù hợp để thực hiện giao dịch đảo ngược ngắn hạn, có thể nắm bắt cơ hội này khi thị trường có một sự đảo ngược nhất định. Thực hiện chiến lược cũng khá đơn giản và trực tiếp.

Rủi ro chiến lược

Mặc dù có những ưu điểm riêng, nhưng có một số rủi ro cần lưu ý:

  1. Vì chúng tôi đang giảm giá theo chiều ngược, nếu thị trường tiếp tục tăng, chúng tôi sẽ phải đối mặt với những tổn thất lớn.
  2. Nếu giá tăng quá nhỏ, bạn sẽ không thể kiếm được lợi nhuận. Nếu giá tăng quá nhỏ, bạn sẽ không thể đạt được mức dừng và không thể kiếm được lợi nhuận.
  3. Có thể có nguy cơ thiết lập quá cao. Đường kéo trở lại được thiết lập quá cao, không thể bị chạm vào để tạo cơ hội mạo hiểm.

Đối với các rủi ro trên, chúng ta có thể thiết lập thời gian dừng lỗ ngắn hơn, kiểm soát chặt chẽ các tổn thất đơn lẻ; đồng thời tối ưu hóa phạm vi của đường kéo trở lại, thiết lập lợi nhuận mục tiêu hợp lý, do đó tránh một phần rủi ro.

Hướng tối ưu hóa

Có rất nhiều cách để tối ưu hóa chiến lược này, chủ yếu là từ những khía cạnh sau:

  1. Kiểm tra các thiết lập tham số khác nhau, chẳng hạn như độ dài chu kỳ của đường trung bình di chuyển, số ngày quay ngược, số lần quay ngược, v.v., để tìm các tham số tối ưu;

  2. Tăng cơ chế dừng lỗ, có thể sử dụng dừng lỗ nhiều lần hoặc dừng lỗ di chuyển, để kiểm soát rủi ro tốt hơn;

  3. Kết hợp với các chỉ số khác của FILTER, tránh giao dịch trong môi trường thị trường không phù hợp;

  4. Tối ưu hóa quản lý vốn, thiết lập kích thước vị trí hợp lý và lỗ hổng rủi ro.

Bằng cách thử nghiệm và tối ưu hóa các tham số, chiến lược này có thể được cải thiện hơn nữa để có được hiệu suất giao dịch ổn định hơn.

Tóm tắt

Chiến lược kéo ngược đường trung bình di chuyển là một chiến lược giao dịch đường ngắn rất thực tế. Nó có thể nắm bắt cơ hội đảo ngược giá trong thời gian ngắn, giao dịch thông qua các điểm nhập cảnh và điểm dừng được thiết lập trước. Ý tưởng chiến lược rõ ràng, đơn giản, dễ hiểu và thực hiện.

Mã nguồn chiến lược
/*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)