Strategii de urmărire a trendului

Tranzacționare financiară în Python

Chelsea Yang

Data Science Instructor

Două tipuri de strategii de tranzacționare

Urmărirea trendului

  • Mizează pe continuarea trendului de preț
  • Folosește indicatori precum medii mobile, ADX etc. pentru construirea semnalelor de tranzacționare

Revenirea la medie

  • Mizează pe revenirea prețului spre medie
  • Folosește indicatori precum RSI, Benzile Bollinger etc. pentru construirea semnalelor de tranzacționare
Tranzacționare financiară în Python

Strategia MA crossover

Trendul este prietenul tău.

 

  • Crossover EMA dublu:
    • Semnal long: EMA pe termen scurt depășește EMA pe termen lung
    • Semnal short: EMA pe termen scurt scade sub EMA pe termen lung
Tranzacționare financiară în Python

Calcularea indicatorilor

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()
Tranzacționare financiară în Python

Construirea semnalului

# 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
Tranzacționare financiară în Python

Reprezentarea grafică a semnalului

# 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'])

Graficul semnalului EMA crossover

Tranzacționare financiară în Python

Definirea strategiei cu semnal

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

[bt.algos.WeighTarget(signal), bt.algos.Rebalance()])
Tranzacționare financiară în Python

Backtestarea strategiei bazate pe semnal

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Tranzacționare financiară în Python

Reprezentarea rezultatelor backtestului

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

Rezultatul backtestului MA crossover

Tranzacționare financiară în Python

Să exersăm!

Tranzacționare financiară în Python

Preparing Video For Download...