Chiến lược giao dịch định lượng đảo ngược trục đơn giản


Ngày tạo: 2024-01-17 15:37:33 sửa đổi lần cuối: 2024-01-17 15:37:33
sao chép: 0 Số nhấp chuột: 659
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng đảo ngược trục đơn giản

Tổng quan

Chiến lược này dựa trên sự phá vỡ của điểm trung tâm để thực hiện giao dịch đảo ngược. Nó tính toán giá cao nhất và giá thấp nhất trong chu kỳ được chỉ định để xác định điểm cao và điểm thấp của trung tâm.

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

Lý luận cốt lõi của chiến lược này là tính toán điểm cao và điểm thấp của trục chính. Công thức tính toán điểm cao và thấp của trục chính như sau:

Điểm cao trục = tổng giá trị cao nhất của đường K gần nhất N1 / N1

Điểm thấp trục = tổng giá trị thấp nhất của đường K gần nhất N2 / N2

Trong đó N1 và N2 là hai tham số có thể thiết lập, đại diện cho số lượng K cần thiết để tính toán điểm trung tâm.

Sau khi tính toán điểm cao và thấp của trục trọng tâm, chiến lược có thể giao dịch. Các quy tắc giao dịch cụ thể là:

  1. Khi giá lên đến điểm cao của trục trung tâm, hãy tháo dỡ vị trí
  2. Đặt nhiều vị trí khi giá phá vỡ các điểm thấp
  3. Thiết lập lệnh dừng lỗ sau khi giữ vị trí

Do đó, nó đã thực hiện một chiến lược đảo ngược ngắn dựa trên đột phá tại các điểm trung tâm.

Phân tích lợi thế

Đây là một chiến lược đảo ngược rất đơn giản với những lợi thế sau:

  1. Nguyên tắc đơn giản, dễ hiểu và dễ thực hiện
  2. Thích hợp cho giao dịch ngắn và thường xuyên
  3. Có thể ghi lại sự thay đổi sau đợt đột phá
  4. Có thể tối ưu hóa bằng cách điều chỉnh các tham số

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Rủi ro thất bại của việc đảo ngược. Việc đảo ngược sau khi phá vỡ điểm trung tâm không nhất thiết phải thành công, có khả năng tiếp tục xu hướng ban đầu.
  2. Rủi ro bị phá vỡ. Giá dừng được thiết lập có thể bị phá vỡ, gây ra tổn thất lớn hơn.
  3. Rủi ro của tham số không đúng. Nếu tham số được đặt không đúng, sẽ ảnh hưởng nghiêm trọng đến hiệu quả của chiến lược.

Những rủi ro này có thể được kiểm soát bằng cách điều chỉnh các tham số, thiết lập các chiến lược ra sân và nhiều cách khác.

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

Chiến lược này có thể được tối ưu hóa rất nhiều:

  1. Kết hợp với các chỉ số kỹ thuật khác để xác định thời gian nhập học chính xác hơn
  2. Thêm các điều kiện ra khỏi sân, chẳng hạn như dừng di chuyển, dừng sau thu nhập
  3. Động thái điều chỉnh các tham số để làm cho chiến lược có thể thích ứng hơn
  4. Tối ưu hóa các tham số, tìm các tham số kết hợp tốt nhất

Tóm tắt

Chiến lược này là một chiến lược đảo ngược trục trục ngắn rất đơn giản. Ưu điểm của nó là dễ hiểu, phù hợp với giao dịch thường xuyên, có thể nắm bắt các tình huống đảo ngược. Nhưng cũng có một số rủi ro cần được tối ưu hóa hơn nữa để giảm rủi ro. Nói chung, đây là một chiến lược rất phù hợp cho người mới bắt đầu thực hành và cũng là nền tảng cho các chiến lược cao cấp.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Pivot Reversal Strategy - FIGS & DATES 2.0", overlay=true, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075)

leftBars = input(4)
rightBars = input(2)

// backtesting date range
from_day = input(defval=1, title="From Day", minval=1, maxval=31)
from_month = input(defval=1, title="From Month", minval=1, maxval=12)
from_year = input(defval=2018, title="From Year", minval=1900)

to_day = input(defval=1, title="To Day", minval=1, maxval=31)
to_month = input(defval=1, title="To Month", minval=1, maxval=12)
to_year = input(defval=9999, title="To Year", minval=1900)

time_cond = true

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

middle = (swh+swl)/2

swh_cond = not na(swh)



hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : le[1] and high > hprice ? false : le[1]

if le and time_cond
    strategy.entry("LONG", strategy.long, comment="LONG", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : se[1] and low < lprice ? false : se[1]

if se and time_cond
    strategy.entry("SHORT", strategy.short, comment="SHORT", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)