
Esta estratégia usa uma combinação de médias móveis, padrões de preços e volume de transações para identificar os pontos de reversão do mercado. Quando uma média móvel rápida atravessa uma média móvel lenta e há uma forma de absorção de várias cabeças, quebra de resistência e aumento do volume de transações, a estratégia faz mais; ao contrário, quando uma média móvel rápida atravessa uma média móvel lenta abaixo da média móvel rápida e há uma forma de absorção de cabeça vazia, quebra de suporte e aumento do volume de transações, a estratégia faz mais.
A ideia central desta estratégia é usar uma combinação de três elementos: o sistema de equilíbrio, a forma de preço e a quantidade de energia para identificar potenciais pontos de reversão. Concretamente, o cruzamento de ouro e o cruzamento de morte na mesma linha podem determinar a mudança de tendência.
Do ponto de vista da lógica do código, primeiro calcula-se a média móvel rápida e a média móvel lenta. Em seguida, são definidas as condições de julgamento de tomadas múltiplas e tomadas vazias. Ao mesmo tempo, são definidas as condições de suporte ao nível de resistência e aumento do volume de negociação.
A maior vantagem desta estratégia é a utilização de uma combinação de vários sinais para identificar a reversão, o que pode ser eficaz na redução de falsos sinais. Concretamente, é muito fácil criar sinais de negociação errôneos dependendo apenas de uma única linha média, forma de preço ou quantidade. Mas se os três sinais ocorrerem simultaneamente, a taxa de sucesso na previsão da reversão será muito maior.
Além disso, a estratégia utiliza simultaneamente a tendência e a reversão. A tendência deve estar presente antes de um sinal de reversão surgir. Ou seja, a estratégia só procura oportunidades de reversão no contexto da tendência. Isso também reduz a aleatoriedade e aumenta a probabilidade de lucro.
O maior risco desta estratégia é o fracasso da reversão, ou seja, o preço continua para baixo após o envio de vários sinais; ou o preço continua a subir após o envio de um sinal de falta. Isso geralmente ocorre devido a um erro de julgamento, o sinal de reversão é apenas um falso, ou apenas um ajuste de curto prazo, e depois continua a tendência original.
A solução é ajustar o parâmetro da linha média para identificar tendências de ciclos mais longos; ao mesmo tempo, aumentar adequadamente a margem de parada, para parar o prejuízo em tempo hábil após a reversão falhar. Além disso, também pode ser combinado com mais fatores para confirmar a reversão, como a forma de preços de grandes ciclos, etc.
A estratégia pode ser otimizada através dos seguintes aspectos:
Ajustar os parâmetros da linha média para identificar os períodos mais adequados.
Teste diferentes algoritmos de suporte de resistência, como o suporte de resistência de Pareto.
Tente diferentes indicadores de volume de transação, como o indicador de energia, o indicador de volume de transação, etc.
Aumentar os sinais de reversão, como a evolução de preços de longo prazo, o aumento acentuado do volume de transações, etc.
Combinado com os futuros de índices de ações para a confirmação de mercado, o uso de futuros de índices de ações para confirmar a inversão de ações individuais.
Testando diferentes combinações de parâmetros, a estratégia pode ser ainda mais otimizada, resultando em melhores taxas de lucro e de vitórias.
Esta estratégia integra três fatores para identificar reversões: o sistema de equilíbrio, a forma do preço e o volume de transação, permitindo uma combinação eficaz de vários sinais. Ela procura apenas oportunidades de reversão no contexto de tendências, evitando transações aleatórias.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Profit Table Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100
// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]
// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")
// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)
// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition
// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition
// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)
// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)
// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")
// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)