Chiến lược đòn bẩy giao cắt đường trung bình động theo cấp số nhân

MATIC EMA MA
Ngày tạo: 2024-04-30 16:26:37 sửa đổi lần cuối: 2024-04-30 16:26:37
sao chép: 0 Số nhấp chuột: 534
1
tập trung vào
1617
Người theo dõi

Chiến lược đòn bẩy giao cắt đường trung bình động theo cấp số nhân

Tổng quan

Chiến lược này sử dụng sự giao thoa của hai chỉ số trung bình di chuyển ((EMA) vào ngày 20 và 55 để đánh giá tín hiệu giao dịch. Khi EMA ngắn hạn đi qua EMA dài hạn, tín hiệu mua được phát ra, ngược lại, tín hiệu bán được phát ra. Chiến lược cũng giới thiệu giao dịch đòn bẩy, mở rộng lợi nhuận bằng cách sử dụng đòn bẩy, đồng thời mở rộng rủi ro. Ngoài ra, chiến lược cũng thêm các điều kiện giới hạn, chỉ sau khi hai đường trung bình giao thoa, khi giá chạm vào đường trung bình ngắn hạn, để giảm nguy cơ tín hiệu giả. Cuối cùng, người dùng cũng có thể chọn sử dụng đường trung bình di chuyển đơn giản ((MA) thay vì EMA.

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

  1. Tính toán 20 và 55 ngày EMA ((hoặc MA)
  2. Xác định xem liệu EMA ngắn hạn có được đặt lên trên EMA dài hạn hay không, và nếu có, hãy đặt biến readyToEnter thành true, nghĩa là sẵn sàng để nhập cuộc.
  3. Nếu readyToEnter là true và giá chạm EMA ngắn hạn, thực hiện mua và đặt lại readyToEnter là false.
  4. Nếu EMA ngắn hạn dưới EMA dài hạn, nó sẽ bị phá vỡ.
  5. Cài đặt kích thước vị trí dựa trên tham số đòn bẩy
  6. Chỉ thực hiện chiến lược trong phạm vi phản hồi được thiết lập bởi người dùng.

Lợi thế chiến lược

  1. Giao nhau trung bình là một phương pháp dễ sử dụng 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. Các nhà đầu tư đã đưa ra các biện pháp để tăng lợi nhuận của họ.
  3. Tăng điều kiện hạn chế, giảm nguy cơ tín hiệu sai.
  4. Cung cấp cả hai lựa chọn EMA và MA, phù hợp với sở thích của người dùng khác nhau.
  5. Cấu trúc mã rõ ràng, dễ hiểu và dễ sửa đổi.

Rủi ro chiến lược

  1. Giao dịch đòn bẩy làm tăng rủi ro, có thể dẫn đến tổn thất lớn nếu đánh giá sai.
  2. Có một sự chậm trễ trong việc giao nhau và có thể bỏ lỡ thời điểm tốt nhất để vào sân.
  3. Chỉ áp dụng cho thị trường có xu hướng rõ ràng, nếu thị trường bị biến động, giao dịch có thể xảy ra thường xuyên, dẫn đến phí cao.

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

  1. Bạn có thể cố gắng tối ưu hóa chu kỳ trung bình để tìm các tham số phù hợp nhất với thị trường hiện tại.
  2. Các chỉ số khác như RSI, MACD, v.v. có thể được đưa vào để đánh giá tổng hợp xu hướng, tăng tỷ lệ thắng.
  3. Bạn có thể đặt lệnh dừng lỗ và lệnh dừng để kiểm soát rủi ro của một giao dịch.
  4. Bạn có thể điều chỉnh kích thước đòn bẩy theo biến động của thị trường, tăng đòn bẩy khi dao động và giảm đòn bẩy khi dao động.
  5. Có thể giới thiệu thuật toán học máy, tùy chỉnh các tham số tối ưu hóa.

Tóm tắt

Chiến lược này tăng lợi nhuận bằng cách kết hợp giao dịch chéo và đòn bẩy, đồng thời nắm bắt xu hướng thị trường. Tuy nhiên, đòn bẩy cũng mang lại rủi ro cao và cần thận trọng. Ngoài ra, chiến lược này còn có không gian tối ưu hóa, có thể nâng cao hiệu suất chiến lược bằng cách giới thiệu nhiều chỉ số, tham số điều chỉnh động, v.v..

Mã nguồn chiến lược
/*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')