Đánh bại chiến lược giao dịch định lượng

Tác giả:ChaoZhang, Ngày: 2024-02-04 16:06:46
Tags:

双均线突破量化交易策略

Thông tin chi tiết

Chiến lược phá vỡ hai đường ngang là một chiến lược giao dịch định lượng theo dõi xu hướng điển hình. Chiến lược này được sử dụng để đánh giá giá bằng cách tính đường trung bình di chuyển đơn giản trong các chu kỳ khác nhau và đặt tín hiệu giao dịch để giá phá vỡ đường trung bình di chuyển. Chiến lược này sử dụng đường 20 và đường 60 như là tín hiệu giao dịch.

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

Lý do cốt lõi của chiến lược phá vỡ đường thẳng đôi là:Sử dụng đường trung bình di chuyển trong các chu kỳ khác nhau để nắm bắt xu hướng giá và phát tín hiệu giao dịch khi giá vượt qua đường trung bình di chuyển

Cụ thể, chiến lược này sử dụng đường trung bình di chuyển đơn giản 20 ngày và đường trung bình di chuyển đơn giản 60 ngày. Hai đường trung bình di chuyển này có thể được xem như một công cụ để nắm bắt xu hướng ngắn hạn và xu hướng trung bình dài hạn. Khi giá ngắn vượt qua giá dài hạn trung bình, đại diện cho xu hướng tăng hiện tại và nên làm nhiều hơn; Khi giá ngắn hạn phá vỡ giá trung gian và dài hạn, đại diện cho xu hướng giảm hiện tại và nên giảm vị trí.

Thông qua trong mãta.crossoverta.crossunderĐể xác định giá có phá vỡ hoặc phá vỡ đường trung bình chuyển động nào đó. Khi phá vỡ, lệnh tăng hoặc giảm được đưa ra.

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

Các chiến lược đột phá song tuyến có một vài lợi thế:

  1. Khái niệm đơn giản, dễ hiểu và thực hiện.
  2. Bạn có thể theo dõi các xu hướng thị trường hiệu quả và tránh bị ảnh hưởng bởi tiếng ồn.
  3. Các tham số chiến lược ít hơn, dễ tối ưu.
  4. Bạn có thể lựa chọn chu kỳ trung bình di chuyển để điều chỉnh độ nhạy của thị trường.

Rủi ro chiến lược

Những chiến lược phá vỡ đường thẳng hai chiều cũng có một số rủi ro:

  1. Một số tín hiệu sai được tạo ra khi thị trường đang có xu hướng biến động. Có thể giảm nhẹ bằng cách tăng chu kỳ nắm giữ.
  2. Không có khả năng nắm bắt hiệu quả thị trường đảo ngược nhanh.
  3. Đường trung bình di chuyển vốn bị tụt hậu, không thể phản ứng trước với sự thay đổi giá cả. Có thể cải thiện chu kỳ ngắn theo đúng cách.

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

Chiến lược đột phá đường thẳng đôi có thể được tối ưu hóa từ các khía cạnh sau:

  1. Tối ưu hóa các tham số chu kỳ của đường trung bình chuyển động để tìm ra sự kết hợp tốt nhất.
  2. Thêm các chỉ số khác để tránh các tín hiệu sai. Ví dụ: MACD, KD, v.v.
  3. Thêm logic dừng lỗ.
  4. Kết hợp với nhiều phân tích chu kỳ thời gian hơn, thực hiện nhiều khung thời gian.

Tóm lại

Chiến lược phá vỡ hai đường ngang là một chiến lược theo dõi xu hướng đơn giản và hiệu quả. Nó có thể nắm bắt hiệu quả xu hướng trung dài trong khi tránh sự gián đoạn của tiếng ồn thị trường ngắn hạn. Trong khi đó, chiến lược dễ hiểu và thực hiện, các tham số có thể tính toán được và rất phù hợp với các yêu cầu giao dịch định lượng.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
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/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) 
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) 
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) 
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) 
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     
    
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2) 
//     strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")


// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
//     strategy.close("open long10",comment="跌破m10平倉", qty=1)   


Nhiều hơn nữa