Aquí os dejo el código para calcular las bandas Bollinger en Python:
Es algo bastante simple, pero por algo se empieza, la clave es calcular la volatilidad correctamente. En este ejemplo no se tiene en cuenta los rangos de cada vela, pero lo iremos complicando.
Creo que la forma de calcular la volatilidad es aplicar true-range con un factor de decaimiento.
Lo voy a programar en Matlab que va a ser más rápido, después habrá que calibrar los distintos factores para aplicarlo al EURUSD.

Código PHP:
import numpy as np
import pandas as pd
import pandas_datareader as pdr
import matplotlib.pyplot as plt
def get_sma(prices, rate):
return prices.rolling(rate).mean()
def get_bollinger_bands(prices, rate=20):
sma = get_sma(prices, rate)
std = prices.rolling(rate).std()
bollinger_up = sma + std * 2 # Calculate top band
bollinger_down = sma - std * 2 # Calculate bottom band
return bollinger_up, bollinger_down
symbol = 'AAPL'
df = pdr.DataReader(symbol, 'yahoo', '2016-07-01', '2022-07-01')
df.index = np.arange(df.shape[0])
closing_prices = df['Close']
sma = get_sma(closing_prices, 20) # Get 20 day SMA
bollinger_up, bollinger_down = get_bollinger_bands(closing_prices)
plt.title(symbol + ' Bollinger Bands')
plt.xlabel('Days')
plt.ylabel('Closing Prices')
plt.plot(closing_prices, label='Closing Prices')
plt.plot(bollinger_up, label='Bollinger Up', c='g')
plt.plot(sma, label='Moving Average', c='g')
plt.plot(bollinger_down, label='Bollinger Down', c='r')
plt.legend()
plt.show()
Marcadores