Chiến lược trung bình chuyển động đa giác

Tác giả:ChaoZhang, Ngày: 2023-10-31 14:53:50
Tags:

img

Tổng quan

Chiến lược trung bình chuyển động đa giác xây dựng một đa giác với nhiều trung bình chuyển động của các giai đoạn khác nhau và sử dụng sự đột phá của đa giác làm tín hiệu giao dịch. Chiến lược theo xu hướng này kết hợp nhiều khung thời gian và có thể lọc hiệu quả tiếng ồn thị trường và nắm bắt xu hướng chính.

Chiến lược logic

Chiến lược này vẽ một số EMA, chẳng hạn như EMA 3 giai đoạn, 7 giai đoạn và 13 giai đoạn, để tạo thành một kênh đa giác. Khi giá vượt qua EMA, một tín hiệu dài được tạo ra. Khi giá vượt qua dưới EMA, một tín hiệu ngắn được tạo ra. Điều này giúp tránh nhiều sự phá vỡ sai.

Mã xác định các tín hiệu đột phá bằng cách so sánh giá đóng với EMA bằng cách sử dụng các điều kiện như close>ema1 và ema1>ema2 và ema2>ema3.

Ưu điểm

Ưu điểm lớn nhất của chiến lược này là khả năng nắm bắt hiệu quả hướng xu hướng chính bằng cách sử dụng nhiều đường trung bình động như bộ lọc để tránh tiếng ồn.

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

Rủi ro chính là chiến lược này không xác định được các điểm đảo ngược xu hướng và có thể dẫn đến tổn thất trong khi đảo ngược xu hướng. Cài đặt thời gian MA không phù hợp cũng có thể dẫn đến giao dịch quá mức hoặc tín hiệu chậm. Rủi ro có thể được giảm bằng cách tối ưu hóa các kết hợp MA, thêm các chỉ số đảo ngược, mở rộng phạm vi dừng lỗ, v.v.

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

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

  1. Tối ưu hóa thời gian MA để tìm ra sự kết hợp tốt nhất.

  2. Thêm các chỉ số đảo ngược như RSI và MACD để thoát khỏi giao dịch kịp thời.

  3. Tối ưu hóa phạm vi dừng lỗ và bù đắp để giảm lỗ dừng sớm.

  4. Tối ưu hóa các tham số cho các sản phẩm khác nhau để cải thiện khả năng thích nghi.

Tóm lại

Chiến lược trung bình chuyển động đa giác nói chung là một hệ thống theo xu hướng đáng tin cậy và hiệu quả. Sức mạnh lớn nhất của nó là nắm bắt xu hướng chính trong khi lọc ra tiếng ồn đáng kể. Nhưng nó có một số hạn chế trong việc xác định sự đảo ngược. Chúng ta có thể cải thiện nó bằng cách tối ưu hóa tham số, thêm các chỉ số phụ trợ, v.v. Nó phù hợp với các thị trường có xu hướng rõ ràng và có thể tạo ra lợi nhuận ổn định nếu được sử dụng đúng cách.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Crypto-Oli

//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


/// YOUR INPUTS BELOW - DELET EXAPLES ///


ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))


/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///


plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)


/// YOUR CONDITIONS BELOW - DELET EXAPLES ///


longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond

/// EXECUTION ///


if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

if (shortCondition)
    strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

Thêm nữa