Chiến lược giao dịch trung bình động và stochastic

Tác giả:ChaoZhang, Ngày: 2024-02-02 10:48:37
Tags:

img

Tổng quan

Chiến lược này kết hợp trung bình động và dao động Stochastic để thực hiện một hệ thống giao dịch chứng khoán tự động. Nó sử dụng hai trung bình động có chiều dài khác nhau và chỉ số Stochastic để nắm bắt xu hướng và tín hiệu mua quá mức / bán quá mức, và đưa ra quyết định mua và bán dựa trên hướng xu hướng và tín hiệu chỉ số trong các khu vực mua quá mức / bán quá mức.

Chiến lược logic

1. Mức trung bình động

Một đường nhanh (5 ngày) và đường chậm (20 ngày) trung bình di chuyển được sử dụng. Đường nhanh vượt qua đường chậm là tín hiệu mua, trong khi vượt qua bên dưới là tín hiệu bán.

2. Stochastic Oscillator

Các thông số Stochastic được thiết lập là: K line period of 14, K line smooth period of 3, D line smooth period of 3. Dưới 20 trên đường K là vùng bán quá mức, trong khi trên 80 là vùng mua quá mức.

3. Quy tắc nhập cảnh

Điều kiện mua: Chuyển đổi MA nhanh trên đường MA chậm và đường K <20 (vùng bán quá) Điều kiện bán: Chuyển đổi MA nhanh dưới đường MA và K chậm > 80 (khu vực mua quá mức)

Đi dài khi điều kiện mua được đáp ứng; đi ngắn khi điều kiện bán được đáp ứng.

4. Cài đặt Stop Loss

Đặt mục tiêu lợi nhuận 1% sau khi mua; đặt 1% dừng lỗ sau khi bán.

Phân tích lợi thế

Chiến lược này kết hợp xu hướng và chỉ số để nắm bắt hiệu quả xu hướng giá trung hạn đến dài hạn, trong khi sử dụng dao động Stochastic để kiểm soát thời gian giao dịch và tránh các mục nhập ngẫu nhiên mà không có xu hướng định hướng rõ ràng. Các thông số chiến lược có thể điều chỉnh theo môi trường thị trường khác nhau. Nhìn chung chiến lược này hoạt động rất tốt trên cổ phiếu lớn / trung bình trong xu hướng tăng.

Rủi ro và giải pháp

  • Sự gia tăng giá từ các sự kiện tin tức quan trọng có thể gây ra tổn thất lớn.

  • Các thị trường có phạm vi liên tục có thể dẫn đến tổn thất nhỏ liên tiếp.

  • Tránh các thời điểm thị trường quan trọng khi giá có xu hướng đảo ngược.

Tối ưu hóa

  • Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu, chẳng hạn như chiều dài MA khác nhau.

  • Kết hợp các công cụ phân tích khác như khối lượng, biến động cho điều kiện lọc để cải thiện tỷ lệ lợi nhuận.

  • Nghiên cứu các cơ chế lựa chọn cổ phiếu, như chọn cổ phiếu mạnh hoặc chỉ số được cân nhắc giới hạn, để giảm rủi ro một cổ phiếu.

Kết luận

Chiến lược tổng thể hoạt động trơn tru. Với các mục tiêu dừng lỗ và lợi nhuận, hồ sơ lợi nhuận / lỗ tổng thể là vững chắc. Có thể mong đợi cải tiến hơn nữa từ điều chỉnh tham số và lọc bể cổ phiếu. Nói chung đây là một chiến lược giao dịch định lượng dễ thực hiện và mạnh mẽ.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Thêm nữa