Chiến lược giao dịch tối ưu hóa đường trung bình động chéo


Ngày tạo: 2023-12-19 13:37:33 sửa đổi lần cuối: 2023-12-19 13:37:33
sao chép: 0 Số nhấp chuột: 683
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch tối ưu hóa đường trung bình động chéo

Tổng quan

Chiến lược này được tạo ra bằng cách tối ưu hóa chiến lược giao dịch chéo trung bình di chuyển thông thường, đặt trung bình di chuyển trong ba chu kỳ khác nhau, xây dựng hình dạng giao dịch chéo bằng trung bình di chuyển 9 chu kỳ, 50 chu kỳ và 100 chu kỳ, tạo ra tín hiệu mua và mua chéo trên đường trung bình ngắn hạn trong điều kiện đường trung bình trung bình đang có xu hướng tăng. Chiến lược được gọi là chiến lược giao dịch tối ưu hóa giao dịch chéo trung bình di chuyển.

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

Chiến lược này sử dụng ba đường trung bình di chuyển 9 chu kỳ, 50 chu kỳ và 100 chu kỳ. Trong đó, trung bình di chuyển 9 chu kỳ là trung bình ngắn hạn, trung bình di chuyển 50 chu kỳ là trung bình trung bình, và trung bình di chuyển 100 chu kỳ là trung bình dài hạn.

Phân tích lợi thế

So với chiến lược giao chéo đường trung bình di chuyển đôi thông thường, chiến lược này tăng điều kiện phán đoán xu hướng trung và dài hạn trước khi tạo ra tín hiệu giao dịch, có thể lọc một số tín hiệu không hiệu quả. Trong trường hợp xu hướng dài hạn không rõ ràng, chiến lược sẽ không tạo ra tín hiệu và có thể tránh bị đặt.

Phân tích rủi ro

Chiến lược này cần điều chỉnh các cặp chu kỳ của đường trung bình khi đặt tham số, các cặp chu kỳ khác nhau sẽ ảnh hưởng đến hiệu quả của chiến lược. Nếu các tham số chu kỳ được đặt không đúng cách, sẽ có nguy cơ tạo ra quá nhiều tín hiệu giả. Ngoài ra, nhà giao dịch cần cảnh giác với rủi ro hệ thống tiềm ẩn và dừng lỗ kịp thời để tránh rủi ro.

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

Có thể xem xét kết hợp với các chỉ số khác để hỗ trợ đánh giá xu hướng thị trường, chẳng hạn như MACD, BOLL, thiết lập các điều kiện nhập cảnh nghiêm ngặt hơn, hoặc kết hợp với chỉ số dao động để xây dựng trung bình di chuyển thích ứng, cho phép các tham số có thể tự động điều chỉnh theo môi trường thị trường, để tối ưu hóa chiến lược hơn nữa.

Tóm tắt

Chiến lược này dựa trên các đường chéo trung bình di chuyển đôi thông thường, thêm các điều kiện đánh giá và lọc đường trung bình dài, có thể lọc hiệu quả các tín hiệu giả, phù hợp để bắt được xu hướng ngắn và trung hạn, là một chiến lược theo dõi xu hướng đơn giản và thực tế. Tuy nhiên, các nhà giao dịch vẫn cần chú ý đến tối ưu hóa tham số và rủi ro hệ thống, xây dựng chiến lược quản lý tiền của scient.

Mã nguồn chiến lược
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)