RSI và kết hợp trung bình động MT5 Chiến lược scalping Martingale

Tác giả:ChaoZhang, Ngày: 2023-12-01 17:56:56
Tags:

img

Tổng quan

Chiến lược được đặt tên là RSI và Combination Moving Average MT5 Martingale Scalping Strategy. Nó kết hợp chỉ số trung bình động kép và chỉ số Relative Strength Index (RSI) để thực hiện giao dịch scalping tần suất cao, đồng thời kết hợp nguyên tắc trung bình vị trí Martingale để kiểm soát mức độ rủi ro tổng thể của chiến lược.

Chiến lược logic

  1. Chiến lược đầu tiên sử dụng chỉ số chứng khoán để vẽ một dao động tùy chỉnh với các thông số dao độngPeriod được đặt thành 5, và thiết lập ngưỡng trên và dưới k1 và k2 để xây dựng khu vực hợp nhất.

  2. Tiếp theo, chỉ số RSI được kết hợp để xác định hiện tượng mua quá mức và bán quá mức. Chỉ số RSI có thể xác định hiệu quả thời gian thâm nhập thị trường của giới hạn trên và dưới. Chiến lược này đặt đường mua quá mức của RSI ở mức 70 và đường bán quá mức ở mức 30.

  3. Ngoài ra, chiến lược cũng giới thiệu yếu tố TrendActivity như bộ lọc xu hướng chính. Khi chỉ số stochastic và RSI đáp ứng các điều kiện đảo ngược cùng một lúc, nó cũng kiểm tra xem xu hướng chính vẫn đủ hoạt động để tránh tổn thất do đột phá sai trên thị trường sốc.

  4. Cuối cùng, chiến lược sử dụng nguyên tắc trung bình vị trí Martingale cổ điển để kiểm soát rủi ro tổng thể. Bằng cách điều chỉnh động khối lượng giao dịch, các vị trí bổ sung được đặt khi vị trí ban đầu bị mất mát để đạt được mức cân bằng và do đó kiểm soát mức rút tối đa.

Phân tích lợi thế

  1. Việc kết hợp chỉ số RSI có thể xác định hiệu quả các hiện tượng mua quá mức và bán quá mức để hỗ trợ đánh giá thời gian đảo ngược.

  2. Thiết lập dao động để xác định khu vực củng cố có thể lọc ra một số tín hiệu phá vỡ sai.

  3. Thiết lập bộ lọc xu hướng chính tránh thua lỗ trong thị trường biến động.

  4. Trung bình vị trí Martingale kiểm soát hiệu quả mức thu hút tối đa của chiến lược và là chìa khóa cho lợi nhuận bền vững.

Phân tích rủi ro

  1. Trong điều kiện thị trường bất thường, chỉ số RSI có thể thất bại và gây ra sự đánh giá sai về các điều kiện mua quá nhiều và bán quá nhiều.

  2. Cài đặt tham số không chính xác của dao động cũng có thể dẫn đến việc lọc tín hiệu quá mức hoặc xác định các đột phá sai. Điều này đòi hỏi tối ưu hóa tham số dựa trên dữ liệu thị trường lịch sử.

  3. Trung bình vị trí Martingale sẽ dẫn đến tổn thất theo cascading trong một số môi trường nhất định.

  4. Chiến lược này chỉ được xác minh trên dữ liệu cặp tiền tệ GBPUSD 15 phút. Có thể có rủi ro phù hợp với dữ liệu ở các thị trường và thời kỳ khác.

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa các thông số của RSI để tìm các thông số phù hợp hơn với môi trường thị trường hiện tại.

  2. Kiểm tra và tối ưu hóa các thông số của dao động để nó có thể đánh giá khu vực củng cố chính xác hơn.

  3. Thêm logic dừng lỗ. Dừng lỗ một cách tích cực khi lỗ đạt đến một mức độ nhất định để kiểm soát hiệu quả các lỗ đơn.

  4. Tối ưu hóa các quy tắc thiết lập của bộ lọc xu hướng chính để tránh bỏ lỡ các cơ hội đảo ngược.

  5. Kiểm tra các thiết lập kích thước vị trí bổ sung khác nhau. Cần đảm bảo rằng số lượng bổ sung không quá lớn để gây mất nhanh chóng.

Tóm lại

Chiến lược này kết hợp chỉ số trung bình động kép, chỉ số RSI và dao động tùy chỉnh để đánh giá các hiện tượng đột phá giới hạn trên và dưới trong ngắn hạn, và sử dụng bộ lọc xu hướng chính để tránh đột phá sai cho giao dịch vải scalping hiệu quả. Đồng thời, nguyên tắc trung bình vị trí Martingale cổ điển được giới thiệu để kiểm soát mức độ rủi ro tổng thể. Chiến lược có tiềm năng tạo ra lợi nhuận ổn định sau khi tối ưu hóa tham số và quản lý rủi ro nghiêm ngặt.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
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/
// © cloudofw

//@version=5
strategy("F2.2 Martingale Scalping Strategy", overlay=true)

// Input parameters
rsiOverbought = input.int(70, "RSI Overbought Threshold")
rsiOversold = input.int(30, "RSI Oversold Threshold")
oscillatorPeriod = input.int(5, "Period for oscillator")
k1 = input.float(0.2, "K1 for oscillator's zone")
k2 = input.float(0.5, "K2 for oscillator's zone")
trendActivity = input.float(1.0, "Main Trend filter", minval=0.1)
decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01)

// Calculate custom oscillator and RSI
oscillator = ta.stoch(close, high, low, oscillatorPeriod)
rsiValue = ta.rsi(close, 14)

zoneHigh = 100 - k1 * 100
zoneLow = k2 * 100

// Entry conditions
longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold
shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought

// Martingale logic
var lot_multiplier = 1.0
var last_lot_size = strategy.equity * 0.01
var trade_1_profit = 0.0
if (strategy.position_size != 0)
    lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0
    trade_1_profit := strategy.grossprofit
else
    lot_multiplier := 1.0
    trade_1_profit := 0.0
lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit
last_lot_size := lot_size

// Trading logic
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long)
    
if shortCondition and strategy.position_size == 0
    strategy.entry("Short", strategy.short)

// Exit conditions
if longCondition == false and strategy.position_size > 0
    strategy.close("Long")

if shortCondition == false and strategy.position_size < 0
    strategy.close("Short")

// Indicators on chart
plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

plot(oscillator, color=color.blue, title="Oscillator")
hline(zoneHigh, "Upper Zone", color=color.red)
hline(zoneLow, "Lower Zone", color=color.green)


Thêm nữa

Thanh TrẻNếu bạn có thể thực hiện mô phỏng mã trực tiếp, bạn sẽ thấy rằng bạn đã đến điểm đóng gói mà không thực hiện các hoạt động đóng gói.