Chiến lược đảo ngược đường trung bình động Momentum


Ngày tạo: 2024-02-19 14:59:10 sửa đổi lần cuối: 2024-02-19 14:59:10
sao chép: 4 Số nhấp chuột: 622
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược đường trung bình động Momentum

Tổng quan

Ý tưởng cốt lõi của chiến lược này là kết hợp chỉ số RSI và đường trung bình di chuyển, tìm kiếm cơ hội đảo ngược giá cổ phiếu, để đạt được giá mua thấp. Khi chỉ số RSI cho thấy cổ phiếu đang ở trạng thái bán tháo, và giá vượt dưới đường trung bình di chuyển ngắn hạn, làm tín hiệu mua; Sau khi thiết lập điểm dừng và dừng, chờ đợi giá đảo ngược lên.

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

Chiến lược này chủ yếu sử dụng chỉ số RSI để đánh giá quá bán quá mua, và đường trung bình di chuyển để đánh giá xu hướng giá. Cụ thể, chỉ số RSI có thể đánh giá hiệu quả xem cổ phiếu có bị bán quá hay không. Khi RSI thấp hơn 30, nó thuộc phạm vi bán quá.

Vì vậy, khi chỉ số RSI thấp hơn 40, gần mức bán tháo, và giá vượt dưới đường trung bình di chuyển ngày 9, bạn có thể đánh giá đây là thời điểm giá cổ phiếu có thể đảo ngược, mua nhiều hơn. Sau đó, thiết lập dừng lỗ và dừng rút ra, chờ đợi giá cổ phiếu đảo ngược lên.

Phân tích lợi thế

Chiến lược này kết hợp các chỉ số RSI và đường trung bình di chuyển để xác định hiệu quả thời điểm mua. So với một phán quyết đơn lẻ là bán quá mức, điều kiện xác định đường trung bình di chuyển được tăng lên để tránh biến động trong khu vực bán quá mức.

Phân tích rủi ro

Chiến lược này phụ thuộc vào các thiết lập tham số, chẳng hạn như ngưỡng phán đoán RSI, cửa sổ thời gian trung bình di chuyển, các tham số khác nhau có thể mang lại kết quả khác nhau. Trong một số trường hợp thị trường nhất định, vẫn có thể có lỗ hổng.

Ngoài ra, phí giao dịch cũng có thể ảnh hưởng đến lợi nhuận. Sau này, bạn có thể xem xét thêm mô-đun quản lý khối lượng giao dịch hoặc quản lý tiền để tối ưu hóa.

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

Bạn có thể xem xét động điều chỉnh các tham số trung bình di chuyển, lựa chọn các tham số khác nhau trong các chu kỳ khác nhau; hoặc đưa ra các phán đoán về các chỉ số khác, chẳng hạn như KDJ, MACD, v.v., để tạo ra nhiều điều kiện tổng hợp.

Ngoài ra, có thể thiết lập mô-đun quản lý khối lượng giao dịch hoặc quản lý tiền để kiểm soát tỷ lệ chiếm tiền của mỗi giao dịch và giảm tác động của tổn thất đơn lẻ.

Tóm tắt

Đối với chiến lược tổng thể, sử dụng chỉ số RSI và đường trung bình di chuyển để xác định thời gian mua, có thể đánh giá hiệu quả sự đảo ngược giá, mua khi quá bán, có tỷ lệ thành công cao hơn. Kết hợp với dừng lỗ để khóa lợi nhuận, có thể có hiệu quả tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 30m
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/
// © Coinrule

//@version=4
strategy(shorttitle='MARSI',title='Moving Average', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//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()  => true

//MA inputs and calculations
inshort=input(9, title='MA short period')
MAshort= sma(close, inshort)

// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)

//Entry 
strategy.entry(id="long", long = true, when = MAshort<close and RSI<40 and window())

//Exit
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=1.5) * 0.01
longTakePerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
longSL  = strategy.position_avg_price * (1 - longLossPerc)
longTP  = strategy.position_avg_price * (1 + longTakePerc)
if (strategy.position_size > 0 and window())
    strategy.exit(id="TP/SL", stop=longSL, limit=longTP)


bgcolor(color = showDate and window() ? color.gray : na, transp = 90)  
plot(MAshort, color=color.purple, linewidth=4)