
Esta estratégia baseia-se em indicadores de movimento e volume de transação para tomar decisões de compra e venda de ações. Compra quando os preços das ações aumentam e o volume de transações aumenta. Venda quando os preços das ações diminuem e o volume de transações aumenta.
A força e a duração da tendência de mudança do preço das ações determinam a dinâmica. A estratégia julga a dinâmica dos preços calculando a variação do preço das ações em relação ao dia anterior. A dinâmica é positiva quando os preços subem continuamente; a dinâmica é negativa quando os preços caem continuamente.
Especificamente, a condição de compra é 0 no indicador de volume e o volume de transação é superior a 20 vezes o volume de transação médio por dia; a condição de venda é 0 no indicador de volume e o volume de transação é superior a 20 vezes o volume de transação médio por dia. O ponto de parada após a compra é 0,8 vezes o preço de compra e o ponto de parada é 0,5 vezes o preço de compra; o ponto de parada e o ponto de parada após a venda são o oposto.
A maior vantagem dessa estratégia é capturar as tendências de curto prazo do mercado e o comportamento das massas. Quando os preços das ações aumentam ou diminuem continuamente, um grande número de varejistas e instituições seguem a forte dinâmica de preços das ações para negociar. Isso cria tendências de preços de curto prazo auto-amplificadas.
Em primeiro lugar, as flutuações de curto prazo dos preços das ações não podem ser totalmente previstas e controladas. Existe o risco de uma reviravolta drástica dos preços causada por eventos inesperados, no qual o mecanismo de parada de prejuízos não pode evitar completamente os prejuízos. Em segundo lugar, a qualidade dos dados de volume de transação é variável.
Pode-se considerar a combinação de mais fontes de dados para aumentar a eficácia da estratégia. Por exemplo, a introdução de discussões sobre ações relevantes em plataformas de Internet, como mídia social. Quando há um aumento significativo na discussão relevante de uma ação, é provável que isso indique uma mudança no preço das ações.
Esta estratégia capta as mudanças integradas nos indicadores de movimento dos preços das ações e nos indicadores de volume de transações para julgar as tendências de curto prazo do mercado e o comportamento das massas. Esta estratégia de investimento quantitativo baseada em grandes dados e princípios de finanças comportamentais tem maior retorno esperado em comparação com as estratégias de investimento tradicionais. Mas, ao mesmo tempo, é necessário conhecer e prevenir os riscos e otimizar continuamente os parâmetros de entrada da estratégia para melhorar a eficácia das negociações.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Momentum and Volume Bot', overlay=true)
// Define strategy parameters
profit_target_percent = input(0.8, title='Profit Target (%)')
stop_loss_percent = input(0.5, title='Stop Loss (%)')
volume_threshold = input(2, title='Volume Threshold')
// Calculate momentum
momentum = close - close[1]
// Calculate average volume
avg_volume = ta.sma(volume, 20)
// Buy condition
buy_condition = ta.crossover(momentum, 0) and volume > avg_volume * volume_threshold
// Sell condition
sell_condition = ta.crossunder(momentum, 0) and volume > avg_volume * volume_threshold
// Strategy logic
strategy.entry('Buy', strategy.long, when=buy_condition)
strategy.entry('Sell', strategy.short, when=sell_condition)
// Set profit target and stop loss
strategy.exit('Take Profit/Stop Loss', from_entry='Buy', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100)
strategy.exit('Take Profit/Stop Loss', from_entry='Sell', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100)
// Plotting
plotshape(series=buy_condition, title='Buy Signal', color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(series=sell_condition, title='Sell Signal', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)