Chiến lược chéo dao động Stochastic và Moving Average với Stop Loss và Stochastic Filter

Tác giả:ChaoZhang, Ngày: 2024-04-26 16:10:11
Tags:MASMA

img

Tổng quan

Chiến lược này kết hợp dao động stochastic với Moving Average, tạo ra các tín hiệu giao dịch bằng cách quan sát các điều kiện mua quá mức và bán quá mức của chỉ số stochastic và xu hướng của đường trung bình động. Nó tạo ra một tín hiệu ngắn khi chỉ số stochastic ở trong vùng mua quá mức và đường trung bình động giảm xuống, và một tín hiệu dài khi ở trong vùng bán quá mức và đường trung bình động tăng lên. Ngoài ra, chiến lược giới thiệu một bộ lọc chỉ số stochastic, cũng có thể tạo ra các tín hiệu tương ứng khi đường giao dịch stochastic K vượt qua đường giao dịch D sau khi ở dưới 50 cho một số lượng nhất định các đường K. Chiến lược cũng đặt Stop Loss để kiểm soát rủi ro.

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

  1. Tính toán Stochastic Oscillator để có được đường K và đường D. Các tham số có thể điều chỉnh, bao gồm thời gian stochastic, K smoothing, D smoothing, vùng mua quá mức và vùng bán quá mức.

  2. Tính toán Moving Average, sử dụng giá đóng mặc định, với một khoảng thời gian điều chỉnh.

  3. Khi đường K ở dưới 50 trong một số lượng đường K nhất định, nó tạo ra một tín hiệu lọc.

  4. Các điều kiện để tạo ra tín hiệu dài: Chỉ số chứng khoán tăng trong vùng bán quá mức HOC Chỉ số chứng khoán tăng và trung bình động tăng.

  5. Các điều kiện để tạo ra tín hiệu ngắn: Chỉ số chứng khoán ngưng giảm trong vùng mua quá mức HOC Chỉ số chứng khoán ngưng giảm và trung bình động giảm.

  6. Điều kiện đóng giao dịch dài: Đường K Stochastic vượt trên Đường trung bình động VÀ Đường trung bình quay xuống.

  7. Điều kiện đóng giao dịch ngắn: Đường Stochastic K băng qua dưới Moving Average VÀ đường trung bình quay lên.

  8. Quản lý vị trí sử dụng một tỷ lệ phần trăm cố định của các quỹ, 10% mặc định.

Phân tích lợi thế

  1. Bằng cách kết hợp các đặc điểm mua quá mức / bán quá mức và xu hướng, nó có thể theo đuổi và tiêu diệt xu hướng.

  2. Bộ lọc chỉ số Stochastic tránh giao dịch thường xuyên trên các thị trường dao động.

  3. Cài đặt Stop Loss giúp kiểm soát rút tiền.

  4. Cấu trúc mã là rõ ràng, các tham số có thể điều chỉnh, và nó phù hợp để tối ưu hóa hơn nữa.

Phân tích rủi ro

  1. Stochastic Oscillator có một sự chậm trễ nhất định, có thể bỏ lỡ các điểm mua và bán tốt nhất.

  2. Độ chính xác của việc nắm bắt lệnh tại các điểm chuyển hướng xu hướng là kém, và tần suất dừng lỗ có thể cao.

  3. Quản lý quỹ tỷ lệ cố định có mức thu lớn trong trường hợp mất liên tục.

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

  1. Đưa ra nhiều điều kiện lọc hơn, chẳng hạn như hành vi giá, các chỉ số phụ trợ khác, v.v., để cải thiện độ chính xác tín hiệu.

  2. Chia tín hiệu thành mạnh và yếu, và tăng vị trí khi tín hiệu mạnh xuất hiện.

  3. Tối ưu hóa đánh giá các điểm chuyển hướng xu hướng để nắm bắt nhiều biến động thị trường hơn.

  4. Tối ưu hóa quản lý vị trí, xem xét điều chỉnh các vị trí dựa trên tỷ lệ lợi nhuận và lỗ thay đổi, v.v.

  5. Hãy thử các kết hợp tham số khác nhau để tìm các tham số tối ưu.

Tóm lại

Dựa trên Stochastic Oscillator, chiến lược này kết hợp Moving Averages để đánh giá xu hướng, đồng thời sử dụng chức năng lọc của chỉ số Stochastic, tạo ra các tín hiệu giao dịch tương đối đáng tin cậy. Ý tưởng tổng thể của chiến lược là rõ ràng và phù hợp để sử dụng trong thị trường xu hướng. Tuy nhiên, do sự chậm trễ của Stochastic Oscillator, hiệu suất của nó tại các điểm chuyển đổi thị trường có thể kém, và khả năng thích nghi và độ bền tổng thể của nó cần được kiểm tra thêm.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc

//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)

// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")

// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")

// Capital inicial
capital = 5000

// Tamaño de posición (10% del capital)
positionSize = capital * 0.10

// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100

// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")

// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)

// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)

// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)

// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]

// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]

// Estrategia
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))

// Cierre de posiciones
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

Có liên quan

Thêm nữa