Chiến lược giao dịch dựa trên phần trăm ROC của Heikin Ashi


Ngày tạo: 2023-10-23 15:41:40 sửa đổi lần cuối: 2023-10-23 15:41:40
sao chép: 0 Số nhấp chuột: 842
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch dựa trên phần trăm ROC của Heikin Ashi

Tổng quan

Chiến lược này được gọi là Chiến lược giao dịch dựa trên tỷ lệ phần trăm Heikin Ashi ROC, với mục đích cung cấp một khung giao dịch dễ sử dụng dựa trên Heikin Ashi ROC và tỷ lệ phần trăm của nó.

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

Chiến lược này tạo ra một đường cong để giao dịch bằng cách tính toán ROC của giá đóng cửa Heikin Ashi và các giá cao nhất và thấp nhất trong các khoảng thời gian khác nhau. Cụ thể, nó tính toán ROC của giá đóng cửa Heikin Ashi trong các chu kỳrocLength qua. Sau đó tính toán rocHigh và rocLow của ROC trong 50 chu kỳ qua.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là sử dụng khả năng theo dõi xu hướng mạnh mẽ của chỉ số ROC, kết hợp với tính năng thông tin giá trơn của Heikin Ashi, có thể xác định hiệu quả sự thay đổi xu hướng. So với các chỉ số đơn giản như đường trung bình di chuyển, ROC phản ứng với sự thay đổi giá rất nhạy cảm, cho phép chiến lược có thể tham gia kịp thời. Ngoài ra, sử dụng phần trăm tạo ra đường mòn, có thể lọc hiệu quả xung đột, tránh phá vỡ giả tạo ra các giao dịch không cần thiết.

Phân tích rủi ro

Rủi ro chính của chiến lược này là thiết lập tham số không chính xác có thể dẫn đến giao dịch thường xuyên hoặc không đủ nhạy cảm. RocLength và chu kỳ tính toán tỷ lệ phần trăm cần được thiết lập cẩn thận, nếu không có thể dẫn đến quá yếu hoặc cứng, do đó bỏ lỡ cơ hội giao dịch hoặc gây ra tổn thất không cần thiết. Ngoài ra, thiết lập tỷ lệ phần trăm cũng cần được điều chỉnh để tìm ra sự kết hợp tham số tốt nhất theo các thử nghiệm lặp lại trên các thị trường khác nhau.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa từ một số khía cạnh: 1) kết hợp các chỉ số khác để lọc các tín hiệu nhập cảnh, chẳng hạn như RSI; 2) sử dụng các tham số tối ưu hóa động theo phương pháp học máy; 3) thiết lập cơ chế thoát thô tự động của stop loss; 4) kết hợp với các chiến lược không theo xu hướng khác để cân bằng rủi ro chiến lược.

Tóm tắt

Tóm lại, chiến lược này sử dụng khả năng theo dõi xu hướng mạnh mẽ của chỉ số ROC, kết hợp với tính năng của Heikin Ashi để phán đoán và theo dõi xu hướng, và lọc lỗ hổng theo đường dẫn lên xuống được hình thành bởi số phần trăm ROC, để thực hiện Có hiệu quả theo dõi xu hướng tốt hơn. Ưu điểm của nó là nhận ra sự thay đổi xu hướng kịp thời và theo dõi xu hướng lớn, đồng thời lọc các biến động qua đường ray lên xuống. Tuy nhiên, thiết lập tham số không đúng có thể ảnh hưởng đến hiệu suất của chiến lược và có nguy cơ đảo ngược xu hướng. Bằng cách tối ưu hóa hơn nữa lựa chọn tham số và thiết lập dừng lỗ, dừng, chiến lược có thể có hiệu quả ổn định hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jensenvilhelm

//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)

// User Inputs
zerohLine = input(0, title="Midline")  // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length")  // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)

stopLossLevel = input(2, title="Stop Loss (%)")  // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03")  // Start date for the strategy (customer can modify this to adjust start date)

// Heikin Ashi values
var float haClose = na  // Define Heikin Ashi close price
var float haOpen = na  // Define Heikin Ashi open price
haClose := ohlc4  // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2  // Calculate Heikin Ashi open price (no customer modification needed here)

// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength)  // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50)  // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50)  // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75)  // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25)  // Calculate lower kill line (customer can modify parameters to adjust this line)

// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine)  // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine)  // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine)  // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine )  // Define when to exit short positions (customer can modify conditions to adjust exit points)

// Strategy execution
if(time >= startDate)  // Start strategy from specified start date
    if (enterLong)
        strategy.entry("Long", strategy.long)  // Execute long trades
    if (exitLong)
        strategy.close("Long")  // Close long trades
    if (enterShort)
        strategy.entry("Short", strategy.short)  // Execute short trades
    if (exitShort)
        strategy.close("Short")  // Close short trades

// Plotting
plot(zerohLine,title="Zeroline")  // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248))  // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76))  // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76))  // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua)  // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua)  // Plot lower kill line