Xu hướng EMA ba lần theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-12-20 15:00:44
Tags:

img

Tổng quan

Triple EMA Trend Following Strategy là một chiến lược rất phù hợp để theo dõi xu hướng thị trường. Nó sử dụng ba EMA của các giai đoạn khác nhau làm tín hiệu giao dịch để thiết lập các vị trí dài hoặc ngắn khi có sự xác nhận xu hướng đầy đủ.

Ưu điểm của chiến lược này là nó có thể giảm các tín hiệu sai và đảm bảo sức mạnh xu hướng đầy đủ trước khi nhập vào một vị trí. Đồng thời, nó có một hệ thống dừng lỗ thích nghi có thể dừng lại dựa trên biến động thị trường, do đó đạt được quản lý rủi ro tốt hơn.

Chiến lược logic

Logic đầu vào

Chiến lược này sử dụng các EMA 7-, 14 và 21 giai đoạn làm chỉ số tín hiệu đầu vào.

Thiết kế này có thể giảm tín hiệu sai và đảm bảo xu hướng đủ rõ ràng trước khi vào.

Phương pháp dừng lỗ

Chiến lược này sử dụng một hệ thống dừng lỗ thích nghi dựa trên ATR và giảm tối đa. Nó tính biến động giá trong thời gian thực và thiết lập các đường dừng lỗ phù hợp. Cụ thể, nó tính toán một số lần số nhất định của ATR như vùng đệm dừng lỗ.

Trong một xu hướng tăng, đường dừng lỗ sẽ di chuyển lên với mức cao mới, với hiệu ứng theo đuổi tốt. Khi giá giảm trở lại điểm thấp của vùng đệm, đường dừng lỗ sẽ được kích hoạt để đóng các vị trí. Điều này có thể kiểm soát rủi ro dừng lỗ theo điều kiện thị trường.

Phương pháp thu lợi nhuận

Chiến lược này sử dụng phương pháp lấy lợi nhuận theo tỷ lệ phần trăm cố định. Sau khi mở một vị trí, một đường lấy lợi nhuận sẽ được đặt ở một tỷ lệ phần trăm nhất định trên giá nhập cảnh. Khi giá tăng lên đến đường lấy lợi nhuận, vị trí sẽ được đóng để lấy lợi nhuận.

Lợi ích của tỷ lệ lợi nhuận cố định này là nó cho phép đặt trước mức lợi nhuận mục tiêu sẽ thỏa mãn việc thoát khỏi một khi đạt được. Nó cũng tránh rủi ro giá giảm lại. tỷ lệ lợi nhuận có thể được điều chỉnh khi cần thiết.

Phân tích lợi thế

  • Có thể giảm tín hiệu sai và đảm bảo xu hướng giá tương đối mạnh sau khi mở các vị trí
  • Sử dụng sự chồng chéo của các khoảng thời gian EMA để nhanh chóng nắm bắt xu hướng thị trường
  • Hệ thống dừng lỗ thích nghi có thể kiểm soát rủi ro dựa trên biến động
  • Tỷ lệ lợi nhuận cố định đáp ứng mục tiêu lợi nhuận trước khi ra khỏi
  • Phương pháp dừng lỗ dựa trên ATR và rút tiền tối đa có thể tối ưu hóa dựa trên điều kiện thị trường
  • Dễ dàng điều chỉnh phong cách chiến lược bằng cách thay đổi các tham số

Phân tích rủi ro

  • Trong các thị trường khác nhau, EMA có thể tạo ra các đường chéo thường xuyên, dễ bị mắc kẹt
  • Lợi nhuận cố định không thể điều chỉnh dựa trên điều kiện thị trường, có thể bỏ lỡ lợi nhuận lớn hơn hoặc tăng lỗ
  • Sau khi dừng theo dõi dừng lỗ, không thể theo dõi mức cao mới một lần nữa, giá giảm có thể làm tăng tổn thất
  • Trong xu hướng bùng nổ một mặt, tỷ lệ lợi nhuận cố định có thể quá bảo thủ, không đạt được đủ lợi nhuận

Có thể tránh mở các vị trí mù quáng trên thị trường biến động bằng cách kết hợp với các chỉ số đánh giá xu hướng; cũng có thể sử dụng các phương pháp chuyển động lợi nhuận hoặc tỷ lệ lợi nhuận để làm cho các phương pháp lợi nhuận linh hoạt hơn.

Hướng dẫn tối ưu hóa

Chiến lược cũng có thể được tối ưu hóa trong các khía cạnh sau:

  1. Sử dụng nhiều chỉ số hơn để xác định thời gian nhập cảnh, chẳng hạn như MACD, KD vv, tránh bị mắc kẹt trong thị trường biến động.

  2. Cố gắng di chuyển lấy lợi nhuận, hoặc tỷ lệ lợi nhuận lấy lợi nhuận phương pháp, để làm cho lấy lợi nhuận phương pháp linh hoạt hơn.

  3. Thêm cơ chế theo dõi giảm xuống phương pháp dừng lỗ, cho phép theo dõi các điểm thấp hơn một lần nữa khi giá giảm lại, do đó kiểm soát rủi ro.

  4. Điều chỉnh các tham số thời gian EMA dựa trên các đặc điểm của các sản phẩm khác nhau, tối ưu hóa đánh giá xu hướng.

  5. Thêm mô-đun kích thước vị trí, có thể điều chỉnh theo kích thước giao dịch dựa trên tỷ lệ sử dụng quỹ.

Kết luận

Triple EMA Trend Following Strategy là một chiến lược theo xu hướng rất thực tế. Nó có khả năng đánh giá xu hướng mạnh mẽ, đồng thời cũng có cơ chế lấy lợi nhuận và dừng lỗ thích nghi có thể tự động quản lý lệnh. Từ góc độ tối ưu hóa, các hệ thống lấy lợi nhuận và dừng lỗ có thể được cải thiện hơn nữa để điều chỉnh dựa trên điều kiện thị trường thời gian thực.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)


//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))

Take_profit= ((input (4))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)

go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)



closeLong = close > longTakeProfit or crossunder(close, vStop)



//Entry 
strategy.entry(id="long", long = true, when = go_long and window())



//Exit
strategy.close("long", when = closeLong and window())

plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)



Thêm nữa