
Esta estratégia baseia-se na ruptura dos pontos centrais para realizar a reversão. Ela calcula os preços mais altos e mais baixos do período especificado para determinar os pontos altos e baixos do eixo central. Quando o preço supera o ponto alto do eixo central, faça um curto; Quando o preço é inferior ao ponto baixo do eixo central, faça mais.
A lógica central da estratégia é calcular os pontos altos e baixos do eixo central. A fórmula para calcular os pontos altos e baixos do eixo central é a seguinte:
Ponto alto do eixo = soma dos preços mais altos da linha K de N1 mais recente / N1
Ponto baixo do eixo = soma dos preços mais baixos da linha K mais recente N2 / N2
N1 e N2 são os dois parâmetros que podem ser definidos para representar o número de linhas K necessárias para calcular o eixo central.
Depois de calcular os pontos altos e baixos do eixo central, a estratégia pode ser executada. As regras de negociação específicas são:
Assim, ele consegue uma estratégia de retorno de curta distância baseada em um ponto-chave.
É uma estratégia de inversão muito simples, com as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Estes riscos podem ser controlados por meio de ajustes de parâmetros, configuração de estratégias de saída e outros métodos.
A estratégia ainda tem muito espaço para otimização:
Esta estratégia é uma estratégia de inversão de eixo de linha curta muito simples. Sua vantagem é que é fácil de entender, adequado para negociações frequentes e pode capturar situações de inversão. Mas também existe um certo risco, que precisa ser otimizado ainda mais para reduzir o risco.
/*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)