Chiến lược chéo trung bình di chuyển

Tác giả:ChaoZhang, Ngày: 2023-11-23 13:38:02
Tags:

img

Tổng quan

Chiến lược chéo trung bình động là một chiến lược giao dịch dựa trên trung bình động. Nó sử dụng chéo của một trung bình di chuyển nhanh và một trung bình di chuyển chậm như tín hiệu mua và bán. Khi MA nhanh vượt qua trên MA chậm từ dưới, một tín hiệu mua được tạo ra. Khi MA nhanh vượt qua dưới MA chậm từ trên, một tín hiệu bán được tạo ra.

Chiến lược logic

Chiến lược này sử dụng hàm sma để tính trung bình động đơn giản của một khoảng thời gian được chỉ định như MA nhanh và MA chậm.

Khi MA nhanh vượt qua trên MA chậm từ dưới, hàm crossunder phát hiện tín hiệu chéo và tạo tín hiệu mua. Khi MA nhanh vượt qua dưới MA chậm từ trên, hàm chéo phát hiện tín hiệu chéo và tạo tín hiệu bán.

Chiến lược này thực hiện giao dịch tự động thông qua tín hiệu theo dõi và tín hiệu thoát. Mở đầu dài được kích hoạt khi MA nhanh vượt qua trên MA chậm, và mở đầu ngắn được kích hoạt khi MA nhanh vượt qua dưới MA chậm.

Phân tích lợi thế

  • Đường trung bình động có khả năng theo dõi xu hướng hiệu quả và bắt đà giá
  • Các chiến lược MA đơn giản và thẳng thắn, dễ hiểu và thực hiện
  • Các thông số có thể được tối ưu hóa để thích nghi với môi trường thị trường khác nhau
  • Chiến lược tự động hóa giao dịch mà không cần can thiệp bằng tay, giảm chi phí giao dịch

Rủi ro và giải pháp

  • Sự dao động giá có thể gây ra nhiều tín hiệu sai và tần suất giao dịch cao.
  • Tối ưu hóa tham số là rất quan trọng và có thể ảnh hưởng đáng kể đến hiệu suất.
  • Có nguy cơ mất tín hiệu. Các chỉ số khác có thể được kết hợp để lọc hoặc bổ sung các tín hiệu giao dịch.
  • Dừng lỗ có thể kiểm soát lỗ giao dịch duy nhất.

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

  • Trung bình động thích nghi có thể được sử dụng để điều chỉnh động các thông số MA để theo dõi tốt hơn.
  • Các bộ lọc bổ sung, như khối lượng giao dịch, có thể tránh các tín hiệu sai khi xu hướng không rõ ràng.
  • Kết hợp các chỉ số khác như Bollinger Bands như bộ lọc hoặc điều kiện bổ sung có thể cải thiện hiệu suất chiến lược.
  • Chiến lược dừng lỗ kiểm soát lỗ giao dịch duy nhất trong mức độ chấp nhận được.

Kết luận

Chiến lược giao thoa MA là một chiến lược theo xu hướng cổ điển và đơn giản. Nó chủ yếu sử dụng giao thoa MA như các tín hiệu giao dịch với logic và thực hiện dễ dàng. Nó có thể được điều chỉnh thông qua điều chỉnh tham số. Nhưng nó cũng có những nhược điểm như khả năng nhạy cảm với dao động và đảo ngược xu hướng, tần số tín hiệu cao v.v. Những điều này có thể được cải thiện thông qua các bộ lọc, tham số động, dừng lỗ v.v. Chiến lược có không gian tối ưu hóa rộng rãi và hướng, và là một trong những chiến lược giao dịch định lượng cơ bản.


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

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Thêm nữa