Tài nguyên đang được tải lên... tải...

Chiến lược đòn bẩy chéo trung bình chuyển động theo cấp số nhân

Tác giả:ChaoZhang, Ngày: 2024-4-30 16:26:37
Tags:MATICEMAMA

img

Tổng quan

Chiến lược này sử dụng sự chéo chéo của trung bình chuyển động theo cấp số nhân 20 ngày và 55 ngày (EMA) để tạo ra tín hiệu giao dịch. Một tín hiệu mua được kích hoạt khi EMA ngắn hạn vượt qua EMA dài hạn, và một tín hiệu bán được kích hoạt khi điều ngược lại xảy ra. Chiến lược cũng giới thiệu giao dịch đòn bẩy, làm tăng cả lợi nhuận tiềm năng và rủi ro. Ngoài ra, chiến lược bao gồm một hạn chế có điều kiện chỉ cho phép nhập vào vị trí khi giá chạm vào EMA ngắn hạn sau khi chéo chéo, để giảm rủi ro tín hiệu sai. Cuối cùng, người dùng có tùy chọn sử dụng trung bình chuyển động đơn giản (SMA) thay vì EMA.

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

  1. Tính toán EMA 20 ngày và 55 ngày (hoặc SMA).
  2. Xác định xem EMA ngắn hạn có vượt qua EMA dài hạn không. Nếu đúng, đặt biến readyToEnter thành true, cho thấy sẵn sàng để nhập vị trí.
  3. Nếu readyToEnter là đúng và giá chạm vào đường EMA ngắn hạn, thực hiện lệnh mua và đặt lại readyToEnter thành sai.
  4. Nếu EMA ngắn hạn vượt qua dưới EMA dài hạn, đóng vị trí.
  5. Đặt kích thước vị trí dựa trên tham số đòn bẩy.
  6. Thực hiện chiến lược chỉ trong thời gian backtesting được xác định bởi người dùng.

Ưu điểm chiến lược

  1. Crossover trung bình động là một phương pháp đơn giản và dễ sử dụng để xác định xu hướng, phù hợp với hầu hết các thị trường.
  2. Việc giới thiệu giao dịch đòn bẩy có thể tăng lợi nhuận.
  3. Thêm các hạn chế có điều kiện làm giảm nguy cơ tín hiệu sai.
  4. Cung cấp sự lựa chọn giữa EMA và SMA phù hợp với sở thích của người dùng khác nhau.
  5. Cấu trúc mã là rõ ràng và dễ hiểu và sửa đổi.

Rủi ro chiến lược

  1. Giao dịch đòn bẩy làm tăng rủi ro. Nếu phán đoán sai, nó có thể dẫn đến tổn thất đáng kể.
  2. Crossover trung bình di chuyển có hiệu ứng chậm và có thể bỏ lỡ các cơ hội nhập cảnh tốt nhất.
  3. Chỉ phù hợp với các thị trường có xu hướng rõ ràng. Nếu thị trường biến động, giao dịch thường xuyên có thể xảy ra, dẫn đến phí giao dịch cao.

Hướng dẫn tối ưu hóa chiến lược

  1. Cố gắng tối ưu hóa các khoảng thời gian trung bình động để tìm các thông số phù hợp nhất cho thị trường hiện tại.
  2. giới thiệu các chỉ số khác, chẳng hạn như RSI và MACD, để đánh giá toàn diện xu hướng và cải thiện tỷ lệ thắng.
  3. Thiết lập mức dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro giao dịch duy nhất.
  4. Điều chỉnh động kích thước đòn bẩy dựa trên biến động thị trường, tăng đòn bẩy khi biến động thấp và giảm đòn bẩy khi biến động cao.
  5. giới thiệu các thuật toán học máy để tối ưu hóa các thông số thích nghi.

Tóm lại

Chiến lược này kết hợp chuyển động trung bình chéo và giao dịch đòn bẩy để nắm bắt xu hướng thị trường trong khi khuếch đại lợi nhuận. Tuy nhiên, đòn bẩy cũng mang lại rủi ro cao và cần được sử dụng cẩn thận. Ngoài ra, có không gian tối ưu hóa trong chiến lược này, có thể đạt được bằng cách giới thiệu nhiều chỉ số hơn, điều chỉnh các tham số năng động, vv. Nhìn chung, chiến lược này phù hợp với các nhà giao dịch theo đuổi lợi nhuận cao và có thể chịu rủi ro cao.


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

//@version=5
strategy("EMA Crossover Strategy with Leverage, Conditional Entry, and MA Option", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs for backtesting period
startDate = input(defval=timestamp("2023-01-01"), title="Start Date")
endDate = input(defval=timestamp("2024-04-028"), title="End Date")

// Input for leverage multiplier
leverage = input.float(3.0, title="Leverage Multiplier", minval=1.0, maxval=10.0, step=0.1)

// Input for choosing between EMA and MA
useEMA = input.bool(true, title="Use EMA (true) or MA (false)?")

// Input source and lengths for MAs
src = close
ema1_length = input.int(20, title='EMA/MA-1 Length')
ema2_length = input.int(55, title='EMA/MA-2 Length')

// Calculate the MAs based on user selection
pema1 = useEMA ? ta.ema(src, ema1_length) : ta.sma(src, ema1_length)
pema2 = useEMA ? ta.ema(src, ema2_length) : ta.sma(src, ema2_length)

// Tracking the crossover condition for strategy entry
crossedAbove = ta.crossover(pema1, pema2)

// Define a variable to track if a valid entry condition has been met
var bool readyToEnter = false

// Check for MA crossover and update readyToEnter
if (crossedAbove)
    readyToEnter := true

// Entry condition: Enter when price touches MA-1 after the crossover // and (low <= pema1 and high >= pema1)
entryCondition = readyToEnter

// Reset readyToEnter after entry
if (entryCondition)
    readyToEnter := false

// Exit condition: Price crosses under MA-1
exitCondition = ta.crossunder(pema1, pema2)

// Check if the current bar's time is within the specified period
inBacktestPeriod = true

// Execute trade logic only within the specified date range and apply leverage to position sizing
if (inBacktestPeriod)
    if (entryCondition)
        strategy.entry("Long", strategy.long, qty=strategy.equity * leverage / close)
    if (exitCondition)
        strategy.close("Long")


// Plotting the MAs for visual reference
ema1_color = pema1 > pema2 ? color.red : color.green
ema2_color = pema1 > pema2 ? color.red : color.green
plot(pema1, color=ema1_color, style=plot.style_line, linewidth=1, title='EMA/MA-1')
plot(pema2, color=ema2_color, style=plot.style_line, linewidth=1, title='EMA/MA-2')


Có liên quan

Thêm nữa