Pete Wave Hệ thống giao dịch chiến lược tổng quan
Pete Wave Trading System Nguyên tắc chiến lược
Chiến lược này sử dụng đường trung bình di chuyển nhanh (chiều dài 9) và đường trung bình di chuyển chậm (chiều dài 22) để xây dựng các tín hiệu giao dịch chéo vàng (đường nhanh vượt qua đường chậm từ dưới) và chéo chết (đường nhanh vượt qua đường chậm từ trên).
Để tránh sự đột phá sai do biến động giá, các cơ chế lọc bổ sung được thêm vào mã. Chúng bao gồm các bộ lọc thân nến yêu cầu tỷ lệ thay đổi phần trăm thân nến lớn hơn 0,5% trước khi tạo ra tín hiệu; bộ lọc pullback kiểm tra xem giá đã kéo trở lại một độ lớn nhất định khi đường nhanh và đường giá chéo để xác nhận xu hướng; bộ lọc giá trị ATR yêu cầu ATR lớn hơn 0,5 để chứng minh sự biến động đủ để tạo ra tín hiệu.
Sau khi tín hiệu được tạo ra, nếu bộ lọc xác nhận đột phá được bật, nó cũng sẽ xác định xem giá đóng hiện tại có phá vỡ giá cao nhất hoặc thấp nhất của các nến N trước đó để xác nhận đột phá. Cuối cùng, chiến lược khóa lợi nhuận thông qua một cơ chế dừng lỗ kéo theo, di chuyển vị trí dừng lỗ dựa trên một tỷ lệ phần trăm nhất định của giá nắm giữ trung bình.
Pete Wave Hệ thống giao dịch chiến lược Phân tích lợi thế
Chiến lược này tích hợp các lợi thế của giao dịch trung bình động và theo dõi xu hướng, và có thể xác định hiệu quả hướng của xu hướng giá trung hạn. So với một hệ thống chéo trung bình động duy nhất, kết hợp các bộ lọc bổ sung có thể làm giảm đáng kể khả năng tín hiệu sai. Những lợi ích cụ thể là như sau:
Sự kết hợp giữa đường chéo trung bình động và theo dõi xu hướng tránh bị mắc kẹt trong thị trường biến động.
Các bộ lọc rút lại và cơ chế xác nhận thoát tránh sự thoát sai.
Giá trị ATR và bộ lọc thân nến giúp xác định biến động thực sự.
Cơ chế dừng lỗ cuối cùng có thể kiểm soát hiệu quả các lỗ giao dịch duy nhất.
Những rủi ro chính đối với chiến lược này là:
Các sự kiện thị trường đột ngột có thể kích hoạt việc dừng lỗ. Khoảng cách dừng lỗ có thể được thư giãn thích hợp.
Giữ các vị trí quá lâu mà không lấy lợi nhuận kịp thời.
Điều kiện thị trường yên tĩnh dẫn đến giảm tín hiệu giao dịch.
Tối ưu hóa tham số không đúng dẫn đến giao dịch quá thường xuyên hoặc quá ít.
Pete Wave Hệ thống giao dịch chiến lược tối ưu hóa hướng
Chiến lược có thể được tối ưu hóa theo các hướng sau:
Kiểm tra các thông số riêng biệt cho các loại giao dịch khác nhau, tối ưu hóa các khoảng thời gian trung bình động và các thông số khác.
Hãy thử thêm nhiều chỉ số như Bollinger Bands, RSI để xác định hướng xu hướng.
Kiểm tra các tham số cơ chế dừng lỗ để tìm tỷ lệ dừng lỗ tối ưu.
Hãy thử các phương pháp học máy để tự động tạo ra tín hiệu mua và bán.
Tối ưu hóa logic lọc tín hiệu để giảm xác suất tín hiệu sai.
Xác định nhiều cơ hội giao dịch hơn bằng cách kết hợp các phán đoán khung thời gian khác nhau.
Pete Wave Trading System Chiến lược tóm tắt
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("9:22 5 MIN 15 MIN BANKNIFTY", overlay=true) fastLength = input(9, title="Fast MA Length") slowLength = input(22, title="Slow MA Length") atrLength = input(14, title="ATR Length") atrFilter = input(0.5, title="ATR Filter") trailingStop = input(1.5, title="Trailing Stop Percentage") pullbackThreshold = input(0.5, title="Pullback Threshold") minCandleBody = input(0.5, title="Minimum Candle Body Percentage") breakoutConfirmation = input(true, title="Use Breakout Confirmation") price = close mafast = ta.sma(price, fastLength) maslow = ta.sma(price, slowLength) atrValue = ta.atr(atrLength) long_entry = ta.crossover(mafast, maslow) and atrValue > atrFilter short_entry = ta.crossunder(mafast, maslow) and atrValue > atrFilter // Pullback Filter pullbackLong = ta.crossover(price, mafast) and ta.change(price) <= -pullbackThreshold pullbackShort = ta.crossunder(price, mafast) and ta.change(price) >= pullbackThreshold // Include pullback condition only if a valid entry signal is present long_entry := long_entry and (pullbackLong or not ta.crossover(price, mafast)) short_entry := short_entry and (pullbackShort or not ta.crossunder(price, mafast)) // Filter based on candle body size validLongEntry = long_entry and ta.change(price) > 0 and ta.change(price) >= minCandleBody validShortEntry = short_entry and ta.change(price) < 0 and ta.change(price) <= -minCandleBody // Breakout confirmation filter breakoutLong = breakoutConfirmation ? (close > ta.highest(high, fastLength)[1]) : true breakoutShort = breakoutConfirmation ? (close < ta.lowest(low, fastLength)[1]) : true long_entry := validLongEntry and breakoutLong short_entry := validShortEntry and breakoutShort if (long_entry) strategy.entry("Long", strategy.long) strategy.close("Short") alert("Long trade iniated") if (short_entry) strategy.entry("Short", strategy.short) strategy.close("Long") alert("Short trade initated") // Trailing Stop-Loss long_stop = strategy.position_avg_price * (1 - trailingStop / 100) short_stop = strategy.position_avg_price * (1 + trailingStop / 100) strategy.exit("Exit Long", "Long", stop = long_stop) strategy.exit("Exit Short", "Short", stop = short_stop) plot(mafast, color=color.green, linewidth=2, title="Fast MA") plot(maslow, color=color.red, linewidth=2, title="Slow MA")