Эта стратегия выполняет обратную торговлю, основанную на прорывах в ключевой точке. Она рассчитывает пивотное высокое и пивотное низкое за определенный период, чтобы определить пивотное уровень. Она становится короткой, когда цена превышает пивотное высокое, и длинной, когда цена превышает пивотное низкое. Это типичная краткосрочная средняя стратегия реверсии.
Основная логика этой стратегии заключается в вычислении пивовых высоких и низких точек.
Пивовый максимум = сумма максимального максимума за прошлые N1 бар / N1
Пивовое низкое значение = сумма самого низкого низкого значения за прошлые N2 bars / N2
где N1 и N2 являются параметрами, определяющими количество строк, используемых для расчета точек поворота.
После получения пивовых высоких/низких уровней правила торговли следуют:
Таким образом, он реализует краткосрочную стратегию обратного движения, основанную на прорывах поворотной точки.
Преимущества этой простой стратегии:
Есть некоторые риски:
Эти риски можно управлять путем настройки параметров, применения правил выхода и т.д.
Есть большое пространство для оптимизации:
В общем, это очень простая краткосрочная стратегия обратного поворота. Ее преимущества заключаются в простоте и способности улавливать обратные повороты. Но есть некоторые риски, которые необходимо решить с помощью оптимизации. В целом это служит хорошей практической стратегией для начинающих и создает основу для передовых стратегий.
/*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)