Chiến lược đảo ngược xu hướng tư tưởng năng động


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

Chiến lược đảo ngược xu hướng tư tưởng năng động

Tổng quan

Chiến lược đảo ngược xu hướng ý thức hệ động sử dụng giá dự báo quay ngược tuyến tính và kết hợp với ý thức hệ hình thành của đường trung bình di chuyển để tạo tín hiệu giao dịch. Nó tạo ra tín hiệu mua khi giá dự báo đi qua đường trung bình di chuyển từ dưới lên; tạo ra tín hiệu bán khi giá dự báo đi qua đường trung bình di chuyển từ trên xuống, để nắm bắt sự đảo ngược xu hướng.

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

  1. Phản hồi tuyến tính tính giá cổ phiếu dựa trên khối lượng giao dịch, có giá dự báo
  2. Tính toán trung bình di chuyển trong các điều kiện khác nhau
  3. Một tín hiệu mua được tạo ra khi giá dự báo đi từ dưới lên qua đường trung bình di chuyển
  4. Một tín hiệu bán ra được tạo ra khi giá dự báo đi từ trên xuống qua đường trung bình di chuyển
  5. Kết hợp với MACD để đánh giá thời gian thay đổi xu hướng

Các tín hiệu trên được kết hợp với nhiều loại xác nhận, tránh đột phá giả, do đó tăng độ chính xác của tín hiệu.

Phân tích lợi thế

  • Sử dụng hồi quy tuyến tính để dự đoán xu hướng giá, cải thiện độ chính xác của tín hiệu
  • Kết hợp với trung bình di chuyển để tạo ra ý thức hệ, nắm bắt xu hướng đảo ngược
  • Phản hồi tuyến tính dựa trên khối lượng giao dịch có ý nghĩa kinh tế hơn
  • Kết hợp các chỉ số như MACD để xác nhận nhiều lần, giảm tín hiệu giả

Phân tích rủi ro

  • Các thiết lập tham số của hồi quy tuyến tính có ảnh hưởng lớn đến kết quả
  • Cài đặt đường trung bình di chuyển cũng ảnh hưởng đến chất lượng tín hiệu
  • Có cơ chế xác nhận nhưng vẫn có nguy cơ nhận được tín hiệu sai
  • Mã có thể được tối ưu hóa hơn nữa để giảm số lần giao dịch và tăng lợi nhuận

Hướng tối ưu hóa

  • Các tham số để tối ưu hóa hồi quy tuyến tính và trung bình di chuyển
  • Tăng điều kiện xác nhận, giảm tỷ lệ tín hiệu giả
  • Kết hợp nhiều yếu tố để đánh giá xu hướng đảo ngược chất lượng
  • Tối ưu hóa chiến lược dừng lỗ, giảm rủi ro giao dịch đơn lẻ

Tóm tắt

Chiến lược đảo ngược xu hướng của ý thức hệ động tích hợp dự đoán hồi quy tuyến tính và hình thành đường trung bình di chuyển để nắm bắt thời gian đảo ngược xu hướng. Nó có độ tin cậy cao hơn so với chỉ số đơn lẻ. Đồng thời, chiến lược có thể nâng cao hơn nữa chất lượng tín hiệu và mức lợi nhuận bằng cách điều chỉnh tham số và tối ưu hóa điều kiện xác nhận.

Mã nguồn chiến lược
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 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/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)