Chiến lược giao dịch đường trung bình động Golden Cross cổ điển


Ngày tạo: 2023-12-11 11:37:36 sửa đổi lần cuối: 2023-12-11 11:37:36
sao chép: 0 Số nhấp chuột: 606
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch đường trung bình động Golden Cross cổ điển

Tổng quan

Chiến lược giao dịch trung bình chuyển động chéo vàng (Golden Cross Moving Average Trading Strategy) là một chiến lược giao dịch định lượng khá cổ điển. Chiến lược này sử dụng trung bình di chuyển của các chu kỳ khác nhau để xác định xu hướng thị trường làm nhiều tháo lỗ. Khi vượt qua trung bình di chuyển dài hơn trên trung bình di chuyển ngắn hạn, nó được coi là tín hiệu mua; khi vượt qua trung bình di chuyển dài hơn dưới trung bình di chuyển ngắn hạn, nó được coi là tín hiệu bán.

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

Chiến lược này dựa trên trung bình di chuyển đơn giản (SMA) trong ba chu kỳ khác nhau: đường 50 ngày, đường 100 ngày và đường 200 ngày.

  1. Tín hiệu nhập cảnh: Khi bạn sử dụng đường trung bình di chuyển 100 ngày trên đường trung bình di chuyển 50 ngày, hãy nhập thêm.

  2. Tín hiệu xuất phát: Khi đường trung bình di chuyển 50 ngày vượt qua đường trung bình di chuyển 100 ngày, hãy thoát khỏi vị trí; hoặc khi giá đóng cửa thấp hơn đường trung bình di chuyển 100 ngày, hãy thoát khỏi; hoặc khi đường trung bình di chuyển 100 ngày vượt qua đường trung bình di chuyển 200 ngày, hãy thoát khỏi.

  3. Hạn chế dừng: thiết lập dừng di động và dừng cố định.

Chiến lược này sử dụng tính năng của đường trung bình di chuyển có thể đánh giá hiệu quả về giá trung bình của thị trường, khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, nó được coi là tín hiệu của xu hướng tăng của thị trường, do đó làm nhiều hơn; khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, nó được coi là đường đi xuống của thị trường, do đó thoát ra. Bằng cách này, xu hướng thị trường có thể được nắm bắt hiệu quả.

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

  1. Hoạt động đơn giản, dễ thực hiện. Chỉ cần sử dụng moving average của ba chu kỳ khác nhau để xây dựng logic của chiến lược.

  2. Có tính ổn định mạnh mẽ. Đường trung bình di chuyển tự nó có chức năng loại bỏ tiếng ồn, có thể loại bỏ hiệu quả tác động của biến động ngẫu nhiên của thị trường đối với giao dịch, làm cho tín hiệu ổn định và đáng tin cậy hơn.

  3. Dễ dàng nắm bắt xu hướng lớn. Đường trung bình di chuyển có thể phản ánh hiệu quả xu hướng thay đổi giá trung bình của thị trường và đánh giá sự thay đổi lớn trong thị trường bằng cách giao nhau các đường chu kỳ dài và ngắn.

  4. Khả năng tùy chỉnh cao. Có thể tự xác định các nhóm chu kỳ của trung bình di chuyển, để kiểm soát rủi ro ở mức độ khác nhau.

Rủi ro chiến lược

  1. Có thể tạo ra nhiều tín hiệu giả. Khi trung bình di chuyển ngắn hạn và dài hạn quá gần nhau, có thể có sự giao thoa thường xuyên, tạo ra nhiều tín hiệu vô hiệu.

  2. Không thể phản ứng nhanh với các sự kiện bất ngờ. Đường trung bình di chuyển phản ứng chậm với sự thay đổi giá, không thể phản ứng trực tiếp với tin tức bất ngờ và sự kiện quan trọng của thị trường.

  3. Tính chất không ồn của đường trung bình di chuyển cũng có nghĩa là không thể nắm bắt các biến động nhỏ trong thị trường để kiếm lợi nhuận.

  4. Việc đặt tham số là chủ quan hơn. Lựa chọn chu kỳ trung bình di chuyển là chủ quan hơn, cần xác định tham số tốt nhất theo các thị trường khác nhau.

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

  1. Thêm các điều kiện lọc để tránh tạo ra quá nhiều tín hiệu giả. Ví dụ, đặt phạm vi biến động giá làm bộ lọc, chỉ tạo tín hiệu giao dịch khi vượt qua một phạm vi nhất định.

  2. Kết hợp với các chỉ số khác. Ví dụ, kết hợp với chỉ số tỷ lệ dao động, chỉ số khối lượng giao dịch, có thể làm tăng độ chính xác của tín hiệu.

  3. Thêm mô-đun tối ưu hóa thích ứng. Thông qua các công nghệ như học máy để tối ưu hóa động các tham số chu kỳ của trung bình di chuyển, cho phép nó thích ứng với sự thay đổi của môi trường thị trường bên ngoài.

  4. Kết hợp với mô hình học sâu. Thay thế các trung bình di chuyển bằng mô hình học sâu tiên tiến hơn, có khả năng trích xuất và mô hình hóa đặc điểm mạnh mẽ hơn.

Tóm tắt

Chiến lược giao dịch Gold Cross Equilibrium là một chiến lược theo dõi xu hướng khá điển hình. Nó phản ánh xu hướng thay đổi trung bình của giá thị trường, đơn giản và phù hợp cho người mới bắt đầu học. Tuy nhiên, chiến lược này cũng có một số thiếu sót, có thể được tối ưu hóa từ nhiều khía cạnh như nâng cao chất lượng tín hiệu, kết hợp với các chỉ số kỹ thuật khác, và giới thiệu cơ chế thích nghi để giúp chiến lược thích nghi với môi trường thị trường phức tạp hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1m
basePeriod: 1m
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/
// © CJDeegan

//@version=4
strategy(title = "[LIVE] Golden Cross", overlay=true)

// ------------Functions------------

//Percent to Decimal Conversion
perToDec(a) => a * 0.01
//Price Difference to Tick
diffToTick(a,b) => (a - b) / syminfo.mintick 

    
// ------------Strategy Inputs------------
takeProfitInput = input(300, "Take Profit Price (% Gain)")
stopLossInput = input(25, "Stop Loss (% Loss)")


startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2018, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=1, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2031, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear,
         startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
     

// ------------Populate Indicators------------

//EMA
sma50 = sma(close,50)
sma100 = sma(close,100)
sma200 = sma(close,200)


// ------------Entry Logic------------
//Guards
entryGuard = true
//Triggers
entryTrigger = crossover(sma50,sma100)
//Conditions
entryCondition = entryGuard and entryTrigger
//Calculations
//Execution
if (inDateRange and entryCondition)
    strategy.entry("Long", strategy.long, when = entryCondition, comment = "Entry")

//------------Exit Logic------------

//Guards
//Triggers
exitTrigger = crossunder(sma50,sma100) or close < sma100 or crossunder(sma100,sma200)
//Conditions
exitCondition = exitTrigger

//Calculations
//Take Profit
takeProfitPrice = strategy.position_avg_price + (strategy.position_avg_price * perToDec(takeProfitInput))
//Take Profit Ticks
takeProfitTicks = diffToTick(takeProfitPrice, strategy.position_avg_price)
//StopLoss
stopLossPrice = strategy.position_avg_price - (strategy.position_avg_price * perToDec(stopLossInput))

//Execution
if (inDateRange)
    strategy.close("Long", when = exitCondition, comment = "Sell Trigger")
    strategy.exit("Exit", "Long", comment="Stop", profit=takeProfitTicks, stop=stopLossPrice)

//Plots
plot(sma50, "SMA 50", color = color.blue)
plot(sma100, "SMA 100", color = color.green)
plot(sma200, "SMA 200", color = color.yellow)
entry = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, "Entry Price", color = color.yellow, style = plot.style_linebr)
profit = plot(strategy.position_size <= 0 ? na : takeProfitPrice, "Take Profit (Price)", color = color.green, style = plot.style_linebr)
stop = plot(strategy.position_size <= 0 ? na : stopLossPrice, "Stop Loss", color = color.red, style = plot.style_linebr)
fill(entry,profit, color=color.green)
fill(entry,stop, color=color.red)