Chiến lược giao dịch đảo ngược đường trung bình động


Ngày tạo: 2023-10-25 10:58:02 sửa đổi lần cuối: 2023-10-25 10:58:02
sao chép: 0 Số nhấp chuột: 1191
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đảo ngược đường trung bình động

Tổng quan

Chiến lược giao dịch hồi quy đường trung bình quyết định tín hiệu mua và bán bằng cách tính toán đường hồi quy tuyến tính của giá cổ phiếu và giao thoa của đường trung bình. Chiến lược này kết hợp phân tích hồi quy tuyến tính và đường trung bình, xem xét xu hướng giá cổ phiếu và tính đến các đặc điểm thống kê, có thể xác định hiệu quả điểm đảo ngược giá cổ phiếu, để thực hiện mua bán thấp.

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

Chiến lược này bắt đầu bằng việc tính toán đường hồi quy tuyến tính của giá cổ phiếu trong n ngày và đường trung bình hàng ngày m. Đường hồi quy tuyến tính phản ánh xu hướng thống kê dài hạn của giá cổ phiếu, đường trung bình phản ánh chuyển động ngắn hạn của giá cổ phiếu.

Khi đường hồi phục tuyến tính đi qua đường trung bình, nó cho thấy giá cổ phiếu tăng lên, tạo ra tín hiệu mua. Khi đường hồi phục tuyến tính đi qua đường trung bình, nó cho thấy giá cổ phiếu tăng yếu, tạo ra tín hiệu bán.

Cụ thể, chiến lược đánh giá tín hiệu giao dịch thông qua các bước sau:

  1. Tính toán đường hồi quy tuyến tính giá cổ phiếu trong n ngày

  2. Tính trung bình di chuyển đơn giản m ngày của đường hồi quy tuyến tính LRMA

  3. Chỉ số m-ngày tính giá cổ phiếu

  4. LongEntry tạo ra một tín hiệu mua khi lrMA trên ema

  5. Khi ema đi qua LRMA, nó tạo ra một tín hiệu bán longExit

  6. Đồng thời, kết hợp với phán đoán của thị trường lớn, chỉ xem xét tín hiệu mua khi thị trường lớn là thị trường bò

  7. Thực hiện giao dịch mua bán theo tín hiệu

Thông qua giao thoa giữa đường trung bình và đường hồi phục, thời gian mua và bán có thể được lọc hiệu quả và nắm bắt các điểm đảo ngược để mua thấp và bán cao.

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

  • Đường hồi phục phản ánh xu hướng dài hạn, đường trung bình phản ánh chuyển động ngắn hạn, kết hợp với chỉ số kép có thể xác định chính xác điểm mua và bán
  • Tính toán đường hồi quy đơn giản và dễ thực hiện
  • Các nhà đầu tư đã sử dụng các kỹ thuật phân tích thị trường lớn để lọc các tín hiệu giao dịch không phù hợp
  • Các tham số có thể tùy chỉnh để điều chỉnh chiến lược mua bán
  • Các doanh nghiệp có thể mua và bán với giá thấp hơn và lợi nhuận lớn hơn.

Rủi ro chiến lược

  • Đường trung bình và đường quay trở lại thường xuyên giao nhau khi giá cổ phiếu biến động mạnh, có thể tạo ra tín hiệu sai
  • “Thiết kế thị trường chứng khoán không chính xác sẽ khiến bạn đánh giá sai thời điểm mua bán”
  • Thiết lập tham số không đúng cũng ảnh hưởng đến hiệu quả của chính sách
  • Giao dịch thường xuyên, chi phí cao

Cần chú ý đến điều chỉnh tham số, tăng tham số chu kỳ đường trung bình và đường hồi quy thích hợp, giảm tần suất giao dịch. Thiết lập hợp lý chiến lược kiểm soát rủi ro dừng lỗ. Tối ưu hóa các quy tắc phán đoán lớn, tăng độ chính xác.

Tối ưu hóa chiến lược

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

  1. Tối ưu hóa chỉ số đường trung bình: thử các loại đường trung bình khác nhau, chẳng hạn như đường trung bình chuyển động trọng lượng, để tìm đường trung bình phù hợp nhất cho cổ phiếu.

  2. Tối ưu hóa đường hồi: điều chỉnh chu kỳ tính toán đường hồi để tìm các tham số chu kỳ phản ánh tốt nhất xu hướng dài hạn của cổ phiếu.

  3. Tối ưu hóa phán đoán lớn: Kiểm tra các chỉ số phán đoán lớn khác nhau để tìm tín hiệu lớn phù hợp nhất với chiến lược.

  4. Tối ưu hóa tham số: Tìm cấu hình tham số tối ưu bằng cách lặp lại các tổ hợp tham số khác nhau.

  5. Tối ưu hóa chiến lược dừng lỗ: thử nghiệm các phương pháp dừng lỗ khác nhau, thiết lập logic dừng lỗ tốt nhất để kiểm soát rủi ro.

  6. Tối ưu hóa chi phí giao dịch: Điều chỉnh tần số giao dịch để giảm chi phí giao dịch theo các mô hình phí giao dịch khác nhau.

Bằng cách tối ưu hóa các điểm trên, bạn có thể nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược.

Tóm tắt

Chiến lược này tích hợp các lợi ích của phân tích đường trung bình và phân tích sự hồi phục tuyến tính, có thể xác định hiệu quả các điểm biến đổi giá cổ phiếu, hướng dẫn mua bán thấp. Chiến lược này đơn giản và đáng tin cậy, phù hợp cho giao dịch cổ phiếu chọn trung và dài.

Mã nguồn chiến lược
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © lazy_capitalist

//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1,    title = "Start Month",  minval = 1, maxval = 12,  group=datesGroup)
startDay   = input.int(defval = 1,    title = "Start Day",    minval = 1, maxval = 31,  group=datesGroup)
startYear  = input.int(defval = 2022, title = "Start Year",   minval = 1970,            group=datesGroup)

averagesGroup = "Averages"
lrLineInput     = input.int(title="Linear Regression Line",   defval=55, minval = 1, group=averagesGroup)
lrMAInput       = input.int(title="Linear Regression MA",     defval=55, minval = 1, group=averagesGroup)
emaInput        = input.int(title="EMA Length",               defval=55, minval = 1, group=averagesGroup)


tradesGroup = "Execute Trades"
executeLongInput    = input.bool(title="Execute Long Trades",       defval=true)
executeShortInput   = input.bool(title="Execute Short Trades",      defval=true)
executeStopLoss     = input.bool(title="Execute Stop Loss",         defval=true)

fourHrSMAExpr       = ta.sma(close, 200)
fourHrMA            = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)

bullish             = close > fourHrMA ? true : false


maxProfitInput              = input.float(  title="Max Profit (%)",         defval=10.0,    minval=0.0)   * 0.01
stopLossPercentageInput     = input.float(  title="Stop Loss (%)",          defval=1.75,    minval=0.0)   * 0.01

start       = timestamp(startYear, startMonth, startDay, 00, 00)            // backtest start  window
window()    => time >= start ? true : false                              // create function "within window of time"
showDate    = input(defval = true, title = "Show Date Range")

lrLine = ta.linreg(close, lrLineInput, 0)
lrMA   = ta.sma(lrLine, lrMAInput)
ema     = ta.ema(close, emaInput)

longEntry   = ema   < lrMA
longExit    = lrMA  < ema

shortEntry  = lrMA  < ema
shortExit   = ema   < lrMA


maxProfitLong   = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort  = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)

stopLossPriceShort  = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong   = strategy.position_avg_price * (1 - stopLossPercentageInput)

if(executeLongInput and bullish)
    strategy.entry( id="long_entry", direction=strategy.long,   when=longEntry and window(),    qty=10,  comment="long_entry")
    strategy.close( id="long_entry", when=longExit,     comment="long_exit")
    // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
    
if(executeShortInput and not bullish)
    strategy.entry( id="short_entry", direction=strategy.short,   when=shortEntry and window(),    qty=10,  comment="short_entry")
    strategy.close( id="short_entry", when=shortExit,     comment="short_exit")
    // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")

if(strategy.position_size > 0 and executeStopLoss)
    strategy.exit(  id="long_entry",        stop=stopLossPriceLong,             comment="exit_long_SL")
    strategy.exit(  id="short_entry",       stop=stopLossPriceShort,            comment="exit_short_SL")
    
// plot(series=lrLine,     color=color.green)
plot(series=lrMA,       color=color.red)
plot(series=ema,        color=color.blue)