Chiến lược này thực hiện giao dịch đảo ngược dựa trên sự phá vỡ điểm pivot. Nó tính toán mức cao và mức thấp pivot trong một khoảng thời gian cụ thể để xác định mức pivot. Nó đi ngắn khi giá vượt qua mức cao pivot và đi dài khi giá vượt qua mức thấp pivot. Đây là một chiến lược đảo ngược trung bình ngắn hạn điển hình.
Logic cốt lõi của chiến lược này là tính toán các điểm cao và thấp của pivot.
Pivot High = Tổng số cao nhất trong các thanh N1 trước đó / N1
Pivot Low = Tổng số thấp nhất trong các thanh N2 trước đó / N2
N1 và N2 là các tham số xác định số thanh được sử dụng để tính điểm pivot.
Sau khi có được các mức cao / thấp, các quy tắc giao dịch là:
Vì vậy, nó thực hiện một chiến lược đảo ngược ngắn hạn dựa trên điểm pivot breakouts.
Những lợi thế của chiến lược đơn giản này là:
Có một số rủi ro:
Những rủi ro này có thể được quản lý bằng cách điều chỉnh tham số, áp dụng các quy tắc thoát, v.v.
Có rất nhiều chỗ để tối ưu hóa:
Tóm lại, đây là một chiến lược đảo ngược pivot ngắn hạn rất đơn giản. Ưu điểm của nó là sự đơn giản và khả năng nắm bắt đảo ngược. Nhưng có một số rủi ro cần phải được giải quyết thông qua tối ưu hóa. Nhìn chung, đây là một chiến lược thực hành tốt cho người mới bắt đầu và xây dựng nền tảng cho các chiến lược tiên tiến.
/*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)