Chiến lược giao dịch chéo vàng là một chiến lược theo dõi xu hướng trung hạn đến dài hạn. Nó xác định hướng xu hướng của giá cổ phiếu bằng cách tính toán chỉ số SR và chỉ số tín hiệu SR, và thực hiện các hoạt động theo dõi xu hướng bằng cách vẽ một kênh xu hướng bằng cách sử dụng các thuật toán mạng thần kinh. Khi chỉ số SR vượt qua tín hiệu SR, một tín hiệu mua được tạo ra. Khi chỉ số SR vượt qua dưới tín hiệu SR, một tín hiệu bán được tạo ra. Chiến lược này cũng sử dụng kỹ thuật lọc hồi quy tuyến tính thích nghi để tối ưu hóa đường cong kênh, có hiệu quả ngăn chặn các tín hiệu sai.
Các chỉ số cốt lõi của chiến lược này là chỉ số SR và chỉ số tín hiệu SR. Chỉ số SR là một tổng hợp thứ cấp của trung bình động WMA và trung bình động SMA với khoảng thời gian 8. Chỉ số tín hiệu SR là chỉ số SR được tính toán với khoảng thời gian 20.
Chiến lược này sử dụng thuật toán mạng thần kinh để tự động vẽ ranh giới trên và dưới của giá cổ phiếu để tạo thành một kênh thích nghi. ranh giới trên lấy giá trị tối đa lịch sử của chỉ số SR làm đầu vào, ranh giới dưới lấy giá trị tối thiểu lịch sử làm đầu vào, và đường cong hồi quy được tính theo ranh giới trên và dưới của kênh tương ứng.
Khi chỉ số SR vượt qua tín hiệu SR, một tín hiệu mua được tạo ra. Khi chỉ số SR vượt qua dưới tín hiệu SR, một tín hiệu bán được tạo ra. Sau khi các tín hiệu dài và ngắn được phát hành, mối quan hệ giữa giá cổ phiếu và giới hạn trên và dưới của kênh xác định các vị trí dừng lỗ và lấy lợi nhuận.
Những rủi ro chính của chiến lược theo dõi xu hướng này là:
Để kiểm soát rủi ro, nên kết hợp với các chiến lược khác thay vì dựa vào một chiến lược duy nhất; đồng thời tối ưu hóa cài đặt tham số để thích nghi với môi trường thị trường khác nhau.
Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa các thông số của chỉ báo SR và chỉ báo tín hiệu để cải thiện sự ổn định của tín hiệu chéo;
Tối ưu hóa thời gian chu kỳ của kênh thích nghi để làm mịn đường cong kênh;
Thêm các chỉ số bộ lọc khác để tránh hoạt động sai, chẳng hạn như chỉ số năng lượng, chỉ số biến động, v.v.;
Kết hợp các thuật toán học sâu để tối ưu hóa đường cong kênh trong thời gian thực và cải thiện khả năng thích nghi.
Chiến lược giao dịch chéo vàng là một chiến lược định lượng hiệu quả để theo dõi xu hướng trung hạn đến dài hạn. Nó có khả năng xác định đúng hướng xu hướng và rủi ro hoạt động thấp. Với không gian rất lớn để tối ưu hóa mô hình thuật toán, chiến lược này có tiềm năng trở thành một công cụ mạnh mẽ để theo dõi những thay đổi trong xu hướng cổ phiếu.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // strategy(title = " Strategy PyramiCover", shorttitle = "S-PC", overlay = true, precision = 8, calc_on_order_fills = true, calc_on_every_tick = true, backtest_fill_limits_assumption = 0, default_qty_type = strategy.fixed, default_qty_value = 2, initial_capital = 10000, pyramiding=50, currency = currency.USD, linktoseries = true) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool) FromMonth = input(defval = 1, title = "Month", minval = 1) FromDay = input(defval = 1, title = "Day", minval = 1) FromYear = input(defval = 2014, title = "Year", minval = 2014) backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool) ToMonth = input(defval = 31, title = "Month", minval = 1) ToDay = input(defval = 12, title = "Day", minval = 1) ToYear = input(defval = 9999, title = "Year", minval = 2014) backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // per = input(14,title="🔹 Length") // up = 0.0 nup= 0.0 lowl = 0.0 nin = 0.0 // srl=wma(close,8) srr = sma(close,8) sr = 2*srl - srr // srsl=wma(close,20) srsr= sma(close,20) srsignal = 2*srsl - srsr // if sr>srsignal up := highest(sr,round(150)) nup :=highest(srsignal,round(20)) else up := highest(srsignal,round(150)) nup := highest(sr,round(20)) // if sr<srsignal lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) else lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) //reg alexgrover f_reg(src,length)=> x = bar_index y = src x_ = sma(x, length) y_ = sma(y, length) mx = stdev(x, length) my = stdev(y, length) c = correlation(x, y, length) slope = c * (my / mx) inter = y_ - slope * x_ reg = x * slope + inter reg // up_=f_reg(up,per) lowl_=f_reg(lowl,per) nup_=f_reg(nup,per) nin_=f_reg(nin,per) // plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0) plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0) plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0) b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0) fill(a, b, color=color.gray) plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0) plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // if backTestPeriod() strategy.entry("Buy", true, 1, when = crossover(sr,nin_)) strategy.entry("Short", false, 1, when = crossunder(sr,nup_))