
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.
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à:
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.
Đây là một chiến lược đảo ngược rất đơn giản với những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
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.
Chiến lược này có thể được tối ưu hóa rất nhiều:
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.
/*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)