
Esta é uma estratégia de negociação quantitativa que combina a análise de forma com a forma de linha de linha. Esta estratégia permite negociações automatizadas de baixo risco e alta eficiência, detectando os pontos de inflexão importantes no gráfico de preços e as formas de curva que representam uma forte reversão.
A estratégia baseia-se na análise detalhada da movimentação dos preços, combinando a análise de forma e análise de linha de linha, com uma lógica de entrada e de parada clara, permitindo um acompanhamento eficaz da tendência.
Concretamente, sua condição de entrada é: o preço atravessa os dois primeiros K-linhas acima do preço máximo e ocorre uma ruptura prévia da forma de pico ou uma forma de absorção de múltiplos cabeças ou uma das formas de cabeça. Esta condição de combinação pode confirmar efetivamente a oportunidade de negociação.
No que diz respeito a formas de julgamento, a estratégia combina a utilização de linhas de classificação para identificar pontos de inflexão importantes, bem como três tipos típicos de formas de pirâmide para julgar a reversão de tendência. Para julgar as formas de classificação de pontos de inflexão importantes, a teoria de classificação mais ampla é usada, enquanto que para julgar formas como multi-cabeça, engolir o ar e o cone, os algoritmos mais avançados são usados.
Em uma implementação concreta, a estratégia é escrita usando o script pine. A lógica de implementação de seu tipo de detecção é classificar como topo quando o valor máximo da linha K atual é igual ao valor máximo das 3 linhas K anteriores. O princípio de julgamento do tipo de fundo é semelhante.
As principais vantagens desta estratégia são:
A estratégia ainda apresenta alguns riscos:
Os riscos acima mencionados podem ser controlados por meio de estratégias de otimização de stop loss, introdução de filtros de tendência, uso de ferramentas de quantificação para verificar os parâmetros da estratégia.
A estratégia pode ser melhorada em várias áreas, incluindo:
As melhorias acima podem aumentar ainda mais a estabilidade e a rentabilidade da estratégia.
Este artigo descreve em detalhes uma estratégia de negociação quantitativa baseada em linhas de classificação e formas de coluna. A estratégia é precisa em seu julgamento, fácil de implementar, capaz de capturar efetivamente as tendências de preços e realizar negociações automatizadas. Após otimização e verificação contínua, seu desempenho será melhorado ainda mais, e vale a pena investidores ou comerciantes aprofundarem o estudo e a aplicação.
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)
// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)
// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1
// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)
// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])
// Entry and exit orders
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")
// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)
// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)