Chiến lược chéo giữa hai mức trung bình động - EMA9/20

Tác giả:ChaoZhang, Ngày: 2024-03-08 15:22:50
Tags:

img

Tổng quan chiến lược

Chiến lược chéo trung bình di chuyển kép - EMA9/20 là một chiến lược giao dịch định lượng dựa trên chéo của hai trung bình di chuyển theo cấp số nhân (EMA). Chiến lược này sử dụng EMA 9 ngày và EMA 20 ngày làm tín hiệu giao dịch, tạo ra tín hiệu mua hoặc bán khi hai trung bình di chuyển giao nhau. Ngoài ra, chiến lược sử dụng chéo giữa giá và EMA 9 ngày như một tín hiệu phụ trợ, cũng như dừng lại để quản lý rủi ro giao dịch.

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

Nguyên tắc cốt lõi của chiến lược này là nắm bắt xu hướng thị trường bằng cách sử dụng sự chéo chéo của hai đường trung bình động với các giai đoạn khác nhau. Khi đường trung bình động ngắn hạn (9 ngày EMA) vượt trên đường trung bình động dài hạn (20 ngày EMA), nó chỉ ra một xu hướng tăng tiềm năng trên thị trường, và chiến lược tạo ra tín hiệu mua. Ngược lại, khi đường trung bình động ngắn hạn vượt dưới đường trung bình động dài hạn, nó gợi ý một xu hướng giảm tiềm năng, và chiến lược tạo ra tín hiệu bán.

Ngoài các tín hiệu chéo trung bình động, chiến lược này cũng kết hợp sự chéo giữa giá và trung bình động ngắn hạn (9 ngày EMA) như một tín hiệu phụ trợ. Khi giá vượt trên EMA 9 ngày, nó cũng tạo ra tín hiệu mua, và khi giá vượt dưới EMA 9 ngày, nó tạo ra tín hiệu bán. Điều này cho phép nắm bắt kịp thời hơn các thay đổi trong xu hướng thị trường.

Để kiểm soát rủi ro, chiến lược sử dụng một cơ chế dừng lại sau khi giao dịch bước vào trạng thái lợi nhuận, dừng lại sau đó liên tục điều chỉnh vị trí dừng lỗ theo biến động giá cho đến khi giá vi phạm mức dừng lỗ theo hướng ngược lại, do đó khóa lợi nhuận trong khi hạn chế tổn thất tiềm năng.

Ưu điểm chiến lược

  1. Tính đơn giản: Chiến lược dựa trên nguyên tắc cổ điển của chuyển trung bình chéo, làm cho nó dễ hiểu và thực hiện.

  2. Theo dõi xu hướng: Bằng cách sử dụng sự chéo chéo của hai đường trung bình động với các giai đoạn khác nhau, chiến lược có thể nắm bắt hiệu quả các xu hướng chính trên thị trường.

  3. Đặt lỗ kịp thời: Việc đưa ra cơ chế dừng kịp thời cho phép đóng cửa kịp thời các vị trí khi xu hướng đảo ngược, kiểm soát rủi ro giảm.

  4. Tính linh hoạt của các tham số: Các tham số của chiến lược (như thời gian trung bình động, điểm dừng lỗ, v.v.) có thể được tối ưu hóa và điều chỉnh theo các thị trường và công cụ khác nhau để thích nghi với các điều kiện thị trường khác nhau.

Rủi ro chiến lược

  1. Giao dịch thường xuyên: Vì chiến lược sử dụng cả tín hiệu chéo trung bình động và tín hiệu chéo giá, nó có thể dẫn đến tần suất giao dịch cao hơn, do đó làm tăng chi phí giao dịch.

  2. Thị trường hỗn loạn: Trong thị trường hỗn loạn hoặc giới hạn phạm vi, chiến lược có thể tạo ra nhiều tín hiệu sai hơn, dẫn đến giảm lợi nhuận.

  3. Tính nhạy cảm của các tham số: Hiệu suất của chiến lược có thể nhạy cảm với việc lựa chọn các tham số và các tham số khác nhau có thể mang lại kết quả khác nhau đáng kể.

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

  1. Việc lọc tín hiệu: Ngoài tín hiệu chéo trung bình động và tín hiệu chéo giá, hãy đưa ra các chỉ số kỹ thuật khác (chẳng hạn như RSI, MACD, v.v.) làm điều kiện lọc để giảm tín hiệu sai.

  2. Các thông số động: Điều chỉnh động các thông số chiến lược (như thời gian trung bình động, điểm dừng lỗ, v.v.) dựa trên các yếu tố như biến động thị trường và sức mạnh xu hướng để thích nghi với các trạng thái thị trường khác nhau.

  3. Định dạng vị trí: Điều chỉnh kích thước vị trí một cách năng động dựa trên xu hướng thị trường và sức mạnh tín hiệu, tăng kích thước vị trí khi sức mạnh xu hướng cao và giảm kích thước vị trí khi xu hướng không rõ ràng hoặc tín hiệu yếu hơn.

  4. Điều chỉnh đa công cụ: Mở rộng chiến lược đến nhiều công cụ và thị trường, và thông qua phân tích đa dạng hóa và tương quan, giảm rủi ro tổng thể và cải thiện sự ổn định lợi nhuận.

Tóm lại

Chiến lược chéo trung bình động kép - EMA9/20 là một chiến lược giao dịch định lượng đơn giản và thực tế nắm bắt xu hướng thị trường thông qua chéo hai trung bình động với các khoảng thời gian và chéo giá khác nhau, trong khi sử dụng trailing stops để kiểm soát rủi ro. Chiến lược có logic rõ ràng, dễ hiểu và thực hiện, làm cho nó phù hợp cho người mới bắt đầu học và sử dụng. Tuy nhiên, chiến lược cũng có một số hạn chế, chẳng hạn như hiệu suất kém trong thị trường hỗn loạn và nhạy cảm với lựa chọn tham số. Do đó, trong ứng dụng thực tế, cần phải tối ưu hóa và cải thiện chiến lược theo các đặc điểm cụ thể của thị trường và công cụ, chẳng hạn như giới thiệu lọc tín hiệu, điều chỉnh tham số động, định kích thước vị trí và các phương pháp khác để cải thiện lợi nhuận và ổn định của chiến lược giao dịch. Nhìn chung, Chiến lược chéo trung bình kép - EMA9/20 cung cấp một khuôn khổ định lượng cơ bản tốt và đáng để nghiên cứu và khám phá thêm.


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")
    


Thêm nữa