
Chiến lược này sử dụng chỉ số động lực giá để đánh giá hướng giao dịch. Cụ thể, tính toán đường trung bình và giá trung bình, tạo ra tín hiệu mua khi giá vượt qua đường trung bình và giá trung bình. Để lọc tín hiệu giả, yêu cầu không có tín hiệu tương tự trước đó.
Chiến lược này chủ yếu dựa trên chỉ số động lực giá để đánh giá xu hướng. Đầu tiên, tính toán đường trung bình và giá trung bình của giá:
swmaClose = swma(close)
vwapClose = vwap(close)
Trong đó,swmaTrung bình vận động:vwapGiá trung bình có trọng số giao dịch. Cả hai đều phản ánh mức giá trung bình.
Sau đó, so sánh giá với giá trung bình để xác định xem giá trung bình và giá trung bình có nằm trên đường trung bình hay không, để xác định xem đó có phải là tín hiệu lạc quan hay không:
swmaLong = close > swmaClose
vwapLong = close > vwapClose
Để lọc các tín hiệu giả, yêu cầu hai chỉ số này không được đưa ra trước đó:
triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
Sau đó, hãy lưu lại thông báo của bạn:
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]
Cuối cùng, một tín hiệu mở cửa được tạo ra khi tín hiệu thăng giá được giữ lại và giá lại đi qua đường trung bình:
startLong = saveLong and swmaLong
Điều này có thể lọc ra một số tín hiệu giả và làm cho tín hiệu đáng tin cậy hơn.
Chiến lược cũng bao gồm thiết lập dừng lỗ. Khoảng cách dừng lỗ có thể được cấu hình, thiết lập dừng lỗ là một số nhân.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Phản ứng:
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
Những cải tiến này có thể cải thiện tính linh hoạt, ổn định và lợi nhuận của chiến lược.
Chiến lược này sử dụng đường trung bình và giá trung bình để xác định xu hướng chuyển động giá, và thiết kế cơ chế xác minh nhiều bước để cải thiện chất lượng tín hiệu. Chiến lược cũng bao gồm thiết lập dừng lỗ hợp lý. Về mặt mã, logic của chiến lược rất đơn giản, chỉ cần hơn 20 dòng kịch bản pin để thực hiện. Nói chung, chiến lược này là một trường hợp học rất tốt, người mới bắt đầu có thể hiểu chiến lược giao dịch định lượng.
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)
// How To Create A Simple Trading Strategy With TradingView
// https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view
swmaClose = swma(close)
vwapClose = vwap(close)
swmaLong = close > swmaClose
vwapLong = close > vwapClose
triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]
startLong = saveLong and swmaLong
startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1]
stopLoss = input(250, "Stop Loss", step = 50)
takeProfit = input(10, "Reward/Risk") * stopLoss
strategy.entry("Open Long", strategy.long, when = startLong)
strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit)
// bgcolor(swmaLong ? color.blue : na)
// bgcolor(vwapLong ? color.orange : na)
// bgcolor(triggerLong ? color.purple : na)
// bgcolor(saveLong ? color.yellow : na)
bgcolor(startLong[1] ? color.green : na)