Xu hướng chéo trung bình động theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-05 14:12:27
Tags:

img

Tổng quan

Chiến lược theo xu hướng chuyển động trung bình là một chiến lược giao dịch định lượng theo dõi xu hướng thị trường.

Chiến lược logic

Nguyên tắc cốt lõi của chiến lược này là đánh giá xu hướng thị trường bằng cách sử dụng các đường trung bình chuyển động theo cấp số nhân (EMA) với các thông số khác nhau. Chiến lược xác định EMA nhanh và EMA chậm. Khi EMA nhanh vượt qua trên EMA chậm, nó cho thấy xu hướng tăng trên thị trường. Khi EMA nhanh vượt qua dưới EMA chậm, nó cho thấy xu hướng giảm.

Trong các giao dịch tăng giá, chiến lược sẽ mở các vị trí dài. Trong các giao dịch giảm giá, chiến lược sẽ mở các vị trí ngắn. Chiến lược sẽ giữ vị trí của nó cho đến khi lấy lợi nhuận hoặc dừng lỗ được kích hoạt, hoặc một giao dịch ngược lại xảy ra một lần nữa.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện, phù hợp cho người mới bắt đầu;
  2. Sử dụng EMA để làm mượt giá có thể lọc hiệu quả tiếng ồn thị trường và xác định xu hướng;
  3. Các thông số có thể được điều chỉnh linh hoạt để thích nghi với các thị trường có chu kỳ khác nhau;
  4. Chiến lược có thể được mở rộng đến các phiên bản nhiều khung thời gian để cải thiện sự ổn định.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Trong các thị trường dao động, nhiều lần dừng lỗ có thể xảy ra, ảnh hưởng đến lợi nhuận;
  2. Nó không thể xác định hiệu quả các loại xu hướng (bullish hoặc bearish), có thể dẫn đến tổn thất nghiêm trọng;
  3. Các thiết lập tham số EMA không chính xác có thể dẫn đến giao dịch quá mức hoặc chậm phát hiện.

Để giảm thiểu rủi ro, xem xét kết hợp các chỉ số khác để xác định các loại xu hướng hoặc thiết lập tỷ lệ dừng lỗ rộng hơn.

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

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

  1. Tăng sự đánh giá về các loại xu hướng để tránh mở các vị trí chống lại xu hướng;
  2. Thêm các đánh giá nhiều khung thời gian để cải thiện chất lượng tín hiệu;
  3. Điều chỉnh động tỷ lệ dừng lỗ và lấy lợi nhuận để tối ưu hóa các điểm thoát;
  4. Kết hợp các chỉ số khác để lọc các giao dịch sai.

Kết luận

Tóm lại, Chiến lược theo xu hướng chuyển động trung bình là một chiến lược giao dịch xu hướng đơn giản và thực tế. Những ý tưởng cốt lõi của chiến lược là rõ ràng và dễ thực hiện, và cũng có chỗ cho tối ưu hóa. Bằng cách điều chỉnh các tham số, thêm phân tích nhiều khung thời gian, dừng động vv, sự ổn định và lợi nhuận của chiến lược có thể được cải thiện liên tục.


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

//@version=5
strategy('Zhukov trade', overlay=true, calc_on_every_tick=true, currency=currency.USD)

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=10, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')

// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2030 23:59'))

// Set take profit and stop loss percentages
take_profit_percent = input(1.0, title ="Take Profit Percent") / 100.0
stop_loss_percent = input(1.0, title ="Stop Loss Percent") / 100.0

// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close, 200)

// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)

// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'

// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA) and inDateRange
shortCondition = ta.crossunder(fastEMA, slowEMA) and inDateRange

// ORDERS:

// Submit entry (or reverse) orders
if longCondition and longOK
    strategy.entry(id='long', direction=strategy.long)

if shortCondition and shortOK
    strategy.entry(id='short', direction=strategy.short)

// Exit orders
if strategy.position_size > 0 and longOK
    strategy.exit(id='exit long', from_entry='long', limit=strategy.position_avg_price * (1 + take_profit_percent), stop=strategy.position_avg_price * (1 - stop_loss_percent))

if strategy.position_size < 0 and shortOK
    strategy.exit(id='exit short', from_entry='short', limit=strategy.position_avg_price * (1 - take_profit_percent), stop=strategy.position_avg_price * (1 + stop_loss_percent))


Thêm nữa