Chiến lược giao dịch chéo ngắn hạn, trung hạn và dài hạn của EMA

Tác giả:ChaoZhang, Ngày: 2023-11-24 13:33:21
Tags:

img

Chiến lược này tạo ra tín hiệu giao dịch dựa trên ba đường trung bình động theo cấp số nhân (EMA) với các khoảng thời gian khác nhau: EMA ngắn hạn với khoảng thời gian 5 ngày, EMA trung hạn với khoảng thời gian 8 ngày và EMA dài hạn với khoảng thời gian 13 ngày. Nó đi dài khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn, và đi ngắn khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn.

Chiến lược logic

Chiến lược này đánh giá xu hướng thị trường bằng cách tính toán EMA của các giai đoạn khác nhau. EMA ngắn hạn phản ánh giá trung bình của vài ngày gần đây trong khi EMA trung hạn và dài hạn phản ánh giá trung bình trong các khung thời gian dài hơn. Sự chéo chéo của EMA ngắn hạn so với EMA trung hạn và dài hạn báo hiệu sự đột phá tăng của giá, vì vậy một vị trí dài được thực hiện. Ngược lại, khi EMA ngắn hạn vượt qua dưới hai vị trí khác, nó báo hiệu sự đột phá giảm giá vì vậy một vị trí ngắn được thực hiện.

Đặc biệt, chiến lược này đồng thời tính toán EMA 5 ngày, 8 ngày và 13 ngày. Nó tạo ra tín hiệu dài khi EMA 5 ngày vượt qua EMA 8 ngày và 13 ngày; nó tạo ra tín hiệu ngắn khi EMA 5 ngày vượt qua dưới hai ngày khác. Sau khi mua dài, vị trí được đóng khi EMA 5 ngày vượt qua lại dưới EMA 13 ngày. Tương tự với vị trí ngắn.

Ưu điểm của Chiến lược

  1. Sử dụng EMA nhiều thời gian tránh bỏ lỡ các điểm đảo ngược xu hướng chính có thể xảy ra với các thời gian EMA đơn quá ngắn hoặc quá dài
  2. Kết hợp ba EMA ngắn hạn, trung hạn và dài hạn làm tăng độ tin cậy của tín hiệu giao dịch
  3. Đơn giản hóa giá thông qua EMA lọc ra một số tiếng ồn thị trường và ngăn chặn các mục nhập không cần thiết

Rủi ro của chiến lược

  1. Cả ba EMA đều là các chỉ số xu hướng chậm trễ, vốn có chứa một số thời gian chậm trễ trước khi giá thực tế phá vỡ, có nguy cơ tín hiệu muộn
  2. EMA không thể phân biệt hiệu quả xu hướng thực tế so với điều chỉnh ngắn hạn, có khả năng cung cấp tín hiệu sai
  3. Thời gian EMA cố định không thể thích nghi với các chế độ thị trường khác nhau trong các khung thời gian khác nhau

Ý tưởng cải tiến:

  1. Thêm các chỉ số khác như MACD để đánh giá tốt hơn xu hướng thực tế, tránh các tín hiệu sai
  2. Điều chỉnh linh hoạt các tham số thời gian EMA cho các sản phẩm và môi trường thị trường khác nhau
  3. Thêm stop loss di chuyển để khóa lợi nhuận và kiểm soát rủi ro

Tóm lại

Đây là một hệ thống breakout điển hình đánh giá sự đảo ngược xu hướng bằng cách so sánh chéo giữa EMA ngắn, trung và dài hạn. Sự đơn giản của nó trong việc báo hiệu tạo điều kiện giao dịch dễ dàng, nhưng cũng bị chậm trễ vốn có của EMA và không thể lọc các xu hướng thực tế khỏi sự điều chỉnh tạm thời.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Thêm nữa