Chiến lược giao cắt đường trung bình động


Ngày tạo: 2024-01-12 14:04:37 sửa đổi lần cuối: 2024-01-12 14:04:37
sao chép: 0 Số nhấp chuột: 615
1
tập trung vào
1617
Người theo dõi

Chiến lược giao cắt đường trung bình động

Moving Average Crossover là một loại tín hiệu giao dịch phổ biến. Chiến lược này sử dụng giao dịch giữa các đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm. Cụ thể, khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm từ phía dưới, hãy làm nhiều hơn; khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm từ phía trên xuống, hãy làm trống.

Chiến lược này sử dụng 20 ngày EMA (Exponential Moving Average) làm trung bình di chuyển nhanh, 50 ngày EMA làm trung bình di chuyển nhanh, 200 ngày EMA làm trung bình di chuyển chậm. Làm nhiều khi 20 ngày EMA và 50 ngày EMA cùng đi qua 200 ngày EMA; làm trống khi 20 ngày EMA và 50 ngày EMA cùng đi qua 200 ngày EMA.

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

  1. Chiến lược trung bình di chuyển đơn giản, dễ hiểu và dễ thực hiện
  2. Sử dụng nhiều kết hợp trung bình di chuyển để lọc các tín hiệu giả
  3. Điều kiện không gian rộng rõ ràng, dễ dàng đánh giá thời gian ra sân

Rủi ro chiến lược

  1. Có thể tạo ra các tín hiệu sai trong việc kiểm tra tình hình
  2. Trung bình di chuyển có tính chậm trễ và không thể nắm bắt được sự biến động giá trong thời gian.
  3. Không thể tận dụng lợi nhuận từ những hành động đột phá

Tối ưu hóa tư duy

  1. Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, thích ứng với các giống và chu kỳ khác nhau
    1. Tăng các tín hiệu lọc chỉ số khác, như khối lượng giao dịch, Blink
  2. Kết hợp xu hướng và chiến lược đảo ngược, theo dõi trong xu hướng, chờ cơ hội trong chấn chỉnh

Tóm tắt

Khái niệm của chiến lược chéo trung bình di chuyển đơn giản, dễ nắm bắt và là một trong những chiến lược cơ bản của giao dịch định lượng. Chiến lược này có giá trị tham khảo tốt như là một bài học đầu tiên. Tuy nhiên, trong chiến tranh thực tế, vẫn cần tối ưu hóa tham số cho giống và chu kỳ, và được hỗ trợ bởi các chỉ số kỹ thuật phức tạp hơn để lọc tín hiệu, do đó cải thiện hiệu quả chiến đấu thực tế của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 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/
// © rt-maax

//@version=5

strategy(title = "rt maax EMA cross strategy", shorttitle = "rt maax ema ", overlay = true, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 100000, 
     currency = currency.USD, default_qty_type = strategy.cash, default_qty_value = 100000, commission_type = "percent", commission_value = 0.27)
fastema = ta.ema (close , 50)
fema=ta.ema(close,20)
slowema= ta.ema(close,200)
price = close

// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval = 1,    title = "From Month",  minval = 1, maxval = 12)
fromDay   = input.int(defval = 1,    title = "From Day",    minval = 1, maxval = 31)
fromYear  = input.int(defval = 2021, title = "From Year",   minval = 1970)
thruMonth = input.int(defval = 10,    title = "Thru Month",  minval = 1, maxval = 12)
thruDay   = input.int(defval = 25,    title = "Thru Day",    minval = 1, maxval = 31)
thruYear  = input.int(defval = 2112, title = "Thru Year",   minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range")

// === FUNCTION EXAMPLE ===



longCondition1= ta.crossover (fema , fastema) 
longcondition2= fema> slowema
longcondition3=fastema>slowema


if (longCondition1 and longcondition2 and longcondition3 )
    stoploss=low*0.97
    takeprofit=high*1.12
    strategy.entry("Long Entry", strategy.long)
    strategy.exit ("exit","long",stop=stoploss,limit=takeprofit)
   


shortCondition1 = ta.crossunder (fema , fastema )
shortcondition2= fastema< slowema
shortcondition3= fema< slowema

if (shortCondition1 and shortcondition2 and shortcondition3 )
    stoploss=low*0.97 
    takeprofit=high*1.5
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("exit","short",stop=stoploss,limit=takeprofit)