Chiến lược đột phá đa trung bình động

Tác giả:ChaoZhang, Ngày: 2023-11-22 13:41:38
Tags:

img

Tổng quan

Chiến lược này tạo ra các tín hiệu giao dịch dựa trên sự đột phá và gọi lại của nhiều đường trung bình động. Nó đi dài khi giá phá vỡ đường trung bình động lên và đi ngắn khi giá giảm xuống dưới đường trung bình động xuống.

Chiến lược logic

Mã sử dụng 4 đường trung bình động với các khoảng thời gian khác nhau - 21 ngày, 50 ngày, 100 ngày và 200 ngày. Nó đi vào các vị trí dài khi giá vượt qua các đường MA này và đi vào các vị trí ngắn khi giá giảm xuống dưới các đường MA này. Ngoài ra, mức dừng lỗ và lấy lợi nhuận được đặt trong chiến lược. Cụ thể, mức dừng lỗ được đặt gần điểm thấp nhất của nến trước đó, và lợi nhuận được đặt ở khoảng cách 3 lần khoảng cách giữa điểm thấp nhất và điểm cao nhất của nến trước đó.

Ý tưởng cốt lõi của chiến lược này là đánh giá xu hướng bằng cách sử dụng đường trung bình động. Khi giá vượt qua đường MA tăng, nó chỉ ra xu hướng tăng nên nên đi dài. Khi giá giảm xuống dưới đường MA giảm, nó chỉ ra xu hướng giảm nên nên đi ngắn. Sử dụng nhiều đường MA với các giai đoạn khác nhau có thể đánh giá xu hướng chính xác hơn và cũng xác minh các tín hiệu giao dịch thông qua tính nhất quán của xu hướng.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Sử dụng nhiều MAs có thể lọc hiệu quả các tín hiệu sai
  2. Thiết lập dừng lỗ và lấy lợi nhuận có thể hạn chế lỗ đơn
  3. Dễ thực hiện

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Các chiến lược MA có xu hướng sai lệch, do đó bỏ lỡ các điểm đảo ngược giá
  2. Các tín hiệu sai có thể gây ra tổn thất.
  3. Các thiết lập dừng lỗ và lấy lợi nhuận không đúng có thể làm gia tăng lỗ

Những rủi ro này có thể được giảm bằng cách điều chỉnh các tham số MA và tối ưu hóa dừng lỗ và lấy lợi nhuận.

Tối ưu hóa

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra nhiều kết hợp MA để tìm các thông số tối ưu
  2. Thêm các chỉ số khác để tránh đột phá sai
  3. Tối ưu hóa dừng lỗ và lấy lợi nhuận để có tỷ lệ rủi ro-lợi nhuận tốt hơn
  4. Điều chỉnh các tham số cho các điều kiện thị trường khác nhau để làm cho chiến lược mạnh mẽ hơn

Tóm lại

Nói chung, đây là một xu hướng điển hình sau chiến lược. Những lợi thế là logic rõ ràng và dễ hiểu và thực hiện. Nhược điểm là dễ bị tín hiệu sai. Chiến lược có thể được cải thiện bằng cách điều chỉnh tham số và thêm các chỉ số khác. Nó phù hợp với nắm giữ trung bình đến dài hạn và cũng có thể được sử dụng như một thành phần của các chiến lược giao dịch ngắn hạn.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Thêm nữa