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

Tác giả:ChaoZhang, Ngày: 2024-02-19 14:59:10
Tags:

img

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à trung bình động để tìm cơ hội đảo ngược giá cổ phiếu và đạt được mua thấp và bán cao. Khi chỉ số RSI cho thấy cổ phiếu bị bán quá mức và trung bình động ngắn hạn vượt qua dưới giá, nó phục vụ như một tín hiệu mua. Sau khi thiết lập stop loss và lấy lợi nhuận, chờ giá đảo ngược lên.

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

Chỉ số RSI là một chỉ số chứng khoán được sử dụng để đánh giá giá giá của một cổ phiếu. Chỉ số này sử dụng chỉ số RSI để đánh giá các điều kiện bán quá mức và mua quá mức, và đường chéo vàng và đường chéo chết của đường trung bình động để xác định xu hướng giá. Cụ thể, chỉ số RSI có thể đánh giá hiệu quả liệu một cổ phiếu có bán quá mức hoặc mua quá mức hay không. Khi chỉ số RSI dưới 30, nó nằm trong phạm vi bán quá mức. Và khi đường trung bình di chuyển ngắn hạn (được đặt thành 9 ngày trong chiến lược này) vượt qua dưới giá, điều đó có nghĩa là giá đang giảm.

Vì vậy, khi chỉ số RSI dưới 40, gần trạng thái bán quá mức, và trung bình động 9 ngày vượt qua dưới giá, nó có thể được đánh giá là thời điểm có thể cho giá cổ phiếu đảo ngược, mua dài.

Phân tích lợi thế

Chiến lược này kết hợp chỉ số RSI và đường trung bình động, có thể xác định hiệu quả thời điểm mua. So với một phán quyết duy nhất về bán quá mức, phán quyết điều kiện bổ sung của đường trung bình động tránh biến động trong khu vực bán quá mức. Việc thiết lập dừng lỗ và lấy lợi nhuận là linh hoạt và có thể khác nhau từ người này sang người khác.

Phân tích rủi ro

Chiến lược này dựa trên các thiết lập tham số như ngưỡng phán đoán RSI, cửa sổ thời gian trung bình động, v.v. Các tham số khác nhau có thể dẫn đến kết quả khác nhau. Và trong điều kiện thị trường nhất định, dừng lỗ vẫn có thể.

Ngoài ra, phí giao dịch cũng sẽ có tác động nhất định đến lợi nhuận.

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

Xem xét điều chỉnh động các thông số trung bình động, chọn các thông số khác nhau cho chu kỳ khác nhau; hoặc giới thiệu các chỉ số khác để đánh giá, chẳng hạn như KDJ, MACD, v.v., để hình thành một đánh giá toàn diện dựa trên nhiều điều kiện.

Cũng có thể thiết lập khối lượng giao dịch hoặc mô-đun quản lý vốn để kiểm soát tỷ lệ vốn được chiếm bởi một giao dịch duy nhất và giảm tác động của một lỗ duy nhất.

Tóm lại

Nói chung, chiến lược này sử dụng các chỉ số RSI và trung bình động để xác định thời gian mua và có thể xác định hiệu quả sự đảo ngược giá. Mua quá mức bán và khóa lợi nhuận với dừng lỗ và lấy lợi nhuận có thể mang lại kết quả tốt. Đối với tối ưu hóa trong tương lai, nên xem xét kết hợp nhiều chỉ số hơn hoặc thêm các mô-đun quản lý giao dịch / quỹ bổ sung để làm cho chiến lược mạnh mẽ hơn.


/*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)



Thêm nữa