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