
A estratégia de ruptura de equilíbrio é uma estratégia de negociação de ações que utiliza sinais de cruzamento de equilíbrio em combinação com indicadores de equilíbrio. A estratégia utiliza um conjunto de indicadores técnicos múltiplos, como a média móvel móvel (EMA), a média móvel simples (SMA), o índice de dispersa de média móvel (MACD) e o índice de força relativamente fraco (StockRSI) após a modificação, para formar um sinal de compra, desde que a tendência de longo prazo seja confirmada.
A estratégia é composta por:
EMA/SMA percorrido: Configuração de uma linha rápida EMA de 9 ciclos e uma linha lenta SMA de 21 ciclos, gerando um sinal de compra quando a linha rápida atravessa a linha lenta.
Indicador MACD: O indicador MACD inclui linhas MACD, linhas de sinal e colunas MACD. Quando as colunas são positivas e sincronizadas com o sinal de compra gerado pela EMA/SMA, como confirmação adicional.
Índice StockRSIO StockRSI é uma versão melhorada do RSI. O indicador produz um sinal de compra quando a linha do indicador está acima da linha OVERBOUGHT ((80)) ou abaixo da linha OVERSOLD ((20).
Faixa de BrinO indicador Brin é o SMA de 20 dias, com uma diferença de bandwidth entre os dois padrões acima. O indicador Brin exige que o preço esteja dentro da faixa Brin para gerar um sinal de negociação.
Cessos de perdas e de posicionamentoOs preços de stop loss e stop loss são calculados com base no ATR dos últimos 14 dias.
A estratégia exige que pelo menos 2 dos indicadores acima emitam sinais de compra ao mesmo tempo, e o preço da ação esteja dentro da faixa de Brin e a tendência de longo prazo seja ascendente, para que o sinal de compra final seja produzido. Quando o indicador MACD inverter para baixo, o StockRSI entrará na área de sobrecompra e produzirá um sinal de venda.
Esta estratégia combina os benefícios de uma cruz de equilíbrio, um indicador de massa e um indicador de taxa de flutuação, com as seguintes principais vantagens:
Os resultados são excelentes.Os resultados estratégicos são melhores do que os resultados de um único indicador ou de um grande indicador.
Parâmetros optimizadosOs principais parâmetros, como o ciclo EMA, o canal da faixa de Brin, foram otimizados para melhorar a estabilidade do sistema.
Paragem automáticaA banda de Brin e o ATR podem ajustar o ponto de parada em tempo real, facilitando o controle de risco.
Implementação não muito difícilO código é simples, os indicadores são fáceis de obter e a operação não é muito difícil.
Apesar do bom desempenho da estratégia, os principais riscos são:
O indicador está a emitir um sinal errado.Quando o mercado está em uma situação de flutuação anormal ou quando o indicador está em falha, pode haver um sinal de erro.
Parâmetros inválidosA configuração inadequada dos parâmetros pode levar a transações muito frequentes ou insensíveis. Devem ser ajustados de acordo com diferentes variedades e condições de mercado.
Prejuízos demasiado pequenos ou demasiado grandesO que é um Stop Loss: O Stop Loss é pequeno demais para ser apanhado, e o Stop Loss é grande demais para ser perdido.
Os riscos acima referidos podem ser combatidos através das seguintes medidas:
Intervenção e modificaçãoEm caso de anomalia, pode-se confirmar manualmente o sinal, modificar os parâmetros ou suspender a política.
Optimizar configurações de parâmetrosA utilização de métodos mais científicos e objetivos, como algoritmos genéticos, para otimizar os parâmetros.
Paradas de perda combinadas com oscilações: Pode ajustar automaticamente a amplitude de parada de acordo com a taxa de flutuação, como 1 a 3 vezes o ATR.
A estratégia também pode ser melhorada em:
Aumentar a estabilidade dos mecanismos de suspensão de perdas: Pode ser adicionado o tracking stop loss ou o index moving average para o stop loss.
Combinado com filtro de volume de transaçãoA taxa de desemprego no país é de cerca de US$ 1 bilhão, o que representa um aumento de mais de 10% em relação ao mesmo período do ano anterior.
Parâmetros de ajuste dinâmico: pode ser otimizado automaticamente de acordo com a situação do mercado, o ciclo de linha média, a largura do canal, etc.
Introdução de algoritmos de aprendizagem de máquina: Otimização dinâmica de parâmetros realizados com algoritmos como RNN, LSTM e outros.
A estratégia de equilíbrio de força de ruptura aproveitou os benefícios do uso integrado de indicadores tecnológicos. Em caso de combinação de corridas curtas e longas, obteve um bom lucro. A estratégia de controle de perda está em vigor e não é muito difícil de implementar.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)
// Volatility
volatility = ta.atr(14)
// EMA/MA Crossover
fast_length = 9
slow_length = 21
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)
// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal and (macdHistogram > 0)
// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
// Fractal-based Support and Resistance levels
isFractalHigh = high[2] < high[1] and high[1] > high[0]
isFractalLow = low[2] > low[1] and low[1] < low[0]
resistance = ta.valuewhen(isFractalHigh, high[1], 0)
support = ta.valuewhen(isFractalLow, low[1], 0)
// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 80
oversold = 20
stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought))
// Buy and sell conditions
mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0)
// Long-term Trend Check
long_term_ma = ta.sma(close, 200)
long_term_bullish = close > long_term_ma
long_term_bearish = close < long_term_ma
// Plot the long-term MA for visual clarity
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
// Simplified Buy and Sell conditions
buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper)
sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought)
// Potential SL and TP based on volatility
potential_SL = close - volatility
potential_TP = close + 2 * volatility
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)
// ... (rest of your code above)
// State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting
var bool inPosition = false
var tradeCounter = 0
var tradeCounterDelayed = 0 // Declaration of the variable
// Buy logic: Check if tradeCounter is 0 and the buy condition is met
if tradeCounter == 0 and buy_condition
strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
inPosition := true
tradeCounter := tradeCounter + 1
// Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position
if tradeCounter == 1 and inPosition and sell_condition
strategy.close("BUY")
inPosition := false
tradeCounter := tradeCounter - 1
// Update the delayed trade counter:
tradeCounterDelayed := tradeCounter
// Plotting
bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
// ... (rest of your code if any)