Estratégias de seguir tendência

Negociação Financeira em Python

Chelsea Yang

Data Science Instructor

Dois tipos de estratégias de trade

Seguir tendência

  • Apostar que a tendência de preço continuará na mesma direção
  • Usar indicadores de tendência como médias móveis, ADX etc. para criar sinais de trade

Retorno à média

  • Apostar que o preço tende a voltar para a média
  • Usar indicadores como RSI, Bandas de Bollinger etc. para criar sinais de trade
Negociação Financeira em Python

Estratégia de cruzamento de MAs

A tendência é sua aliada.

 

  • Cruzamento de duas EMAs:
    • Sinal de compra (long): a EMA de curto prazo cruza acima da de longo prazo
    • Sinal de venda (short): a EMA de curto prazo cruza abaixo da de longo prazo
Negociação Financeira em Python

Calcular os indicadores

import talib
# Calculate the indicators
EMA_short = talib.EMA(price_data['Close'],
                      timeperiod=10).to_frame()
EMA_long = talib.EMA(price_data['Close'], 
                     timeperiod=40).to_frame()
Negociação Financeira em Python

Construir o sinal

# Create the signal DataFrame
signal = EMA_long.copy()
signal[EMA_long.isnull()] = 0

# Construct the signal signal[EMA_short > EMA_long] = 1
signal[EMA_short < EMA_long] = -1
Negociação Financeira em Python

Plotar o sinal

# Plot the signal, price and MAs
combined_df = bt.merge(signal, price_data, EMA_short, EMA_long)
combined_df.columns = ['Signal', 'Price', 'EMA_short', 'EMA_long']

combined_df.plot(secondary_y=['Signal'])

Gráfico do sinal de cruzamento de EMA

Negociação Financeira em Python

Definir a estratégia com o sinal

# Define the strategy
bt_strategy = bt.Strategy('EMA_crossover',

[bt.algos.WeighTarget(signal), bt.algos.Rebalance()])
Negociação Financeira em Python

Backtest da estratégia baseada no sinal

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Negociação Financeira em Python

Plotar resultados do backtest

# Plot the backtest result
bt_result.plot(title='Backtest result')

Resultado do backtest de cruzamento de MA

Negociação Financeira em Python

Vamos praticar!

Negociação Financeira em Python

Preparing Video For Download...