Đây là một chiến lược giao dịch định lượng dựa trên tín hiệu chéo trung bình động kép. Chiến lược sử dụng hai trung bình động, một là đường tín hiệu chính và một là đường tín hiệu làm mịn. Nó tạo ra các tín hiệu giao dịch bằng cách theo dõi chéo giá với đường tín hiệu làm mịn, cho phép nắm bắt xu hướng thị trường và theo dõi đà. Sức mạnh cốt lõi của chiến lược nằm trong cơ chế tạo tín hiệu đơn giản nhưng hiệu quả và các tùy chọn cấu hình tham số linh hoạt.
Chiến lược này sử dụng hai mức tính toán trung bình động. Đầu tiên nó tính toán một trung bình động cơ bản (thời gian mặc định là 9), sau đó là một quá trình làm mịn thứ cấp (thời gian mặc định là 5). Chiến lược cung cấp nhiều phương pháp tính toán trung bình động khác nhau, bao gồm Trung bình di chuyển đơn giản (SMA), Trung bình di chuyển theo hàm số (EMA), Trung bình di chuyển mịn (SMMA), Trung bình di chuyển cân nhắc (WMA), và Trung bình di chuyển cân nhắc khối lượng (VWMA).
Đây là một phiên bản cải tiến của một chiến lược theo xu hướng cổ điển tăng cường tính ổn định trong khi duy trì tính đơn giản thông qua thiết kế trung bình động hai lớp. Chiến lược này cung cấp khả năng mở rộng và linh hoạt tốt, thích nghi với các môi trường thị trường khác nhau thông qua tối ưu hóa tham số và mở rộng chức năng. Tuy nhiên, người dùng cần chú ý đến kiểm soát chi phí giao dịch và quản lý rủi ro, và nên tiến hành kiểm tra kỹ lưỡng trước khi giao dịch trực tiếp.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average 1.0 Strategy", overlay=true) // Input for Moving Average Length len = input.int(9, minval=1, title="Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) // Calculate the Moving Average out = ta.sma(src, len) // Plot the Moving Average plot(out, color=color.blue, title="MA", offset=offset) // Function to choose the type of moving average ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Input for Smoothing Method and Length typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing") // Calculate the Smoothing Line smoothingLine = ma(out, smoothingLength, typeMA) // Plot the Smoothing Line plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset) // Strategy Logic if (ta.crossover(close, smoothingLine)) strategy.entry("Buy", strategy.long) if (ta.crossunder(close, smoothingLine)) strategy.entry("Sell", strategy.short)