
Esta estratégia permite a operação de acompanhamento de linha curta através da combinação do indicador de regressão linear com a média móvel binária. A estratégia baseia-se em abrir uma posição quando o preço entra em alta e baixa e fechar uma posição quando o preço entra em baixa.
Esta estratégia julga a ruptura de preços principalmente por meio do indicador de regressão linear. O indicador de regressão linear é um trajeto ascendente e descendente calculado com base nos preços mais altos e mais baixos de um determinado período, usando a regressão linear. Quando o preço atravessa o trajeto superior ou inferior, consideramos um sinal de negociação.
Além disso, a estratégia também introduz uma média móvel binária para julgar a tendência intermédia. A média móvel binária pode responder mais rapidamente às mudanças de preço. Quando o preço se desloca da trajetória superior, se a média móvel binária já estiver acima do preço, indicando que está em uma tendência descendente, então estabelecemos uma posição aberta. Quando o preço reabsorve a trajetória superior ou quebra a média móvel binária, nós eliminamos a posição.
A estratégia inclui, em particular, os seguintes pontos:
A estratégia tem as seguintes vantagens em relação a indicadores tradicionais, como a média móvel:
A estratégia também apresenta alguns riscos que devem ser lembrados:
Para os riscos acima, podemos resolver por meio de métodos como otimização de parâmetros, parada rigorosa e flexibilização apropriada da amplitude de ruptura.
A estratégia também pode ser melhorada em alguns aspectos:
Esta estratégia combina a utilização de um indicador de regressão linear e uma média móvel binária, com vantagens tanto na teoria quanto na prática. A estabilidade e a eficácia da estratégia podem ser melhoradas com a otimização contínua do ajuste. A estratégia é adequada para operações de linha curta e pode trazer um bom alfa para os comerciantes de quantificação.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end = timestamp(9999,1,1,0,0)
_testPeriod() => true
len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh
plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)
length = input(200, title="DEMA")
d1 = ema(close, length)
d2 = 2 * d1 - ema(d1, length)
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA
dema=sma(d2,length)
turnGreen = d2 > d1 and d2[1] <= d1[1]
turnRed = d2 <= d1 and d2[1] > d1[1]
up =turnGreen
down=turnRed
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small)
plotshape(up, title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small)
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)
strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))