Indicadores de Volatilidad Propio (I)

Spread the love

Para tener éxito en el Forex hay que saber programar, partiendo de cosas que puedes encontrar en libros, foros, internet, tienes que coger ideas para crearte tus propios indicadores y optimizarlos. Estoy creando en la actualidad un indicador basado en la volatilidad que creo que puede dar muy buen resultado. El backtesting lo voy a hacer en Python a partir de datos que me voy a bajar de un broker como es Oanda o ICMarkets.

El indicador que he encontrado es el de la imagen que hay posterior al texto en inglés, se trata de unas bandas que se estrechan cuando aumenta la volatilidad, pudiendo ser un buen predictor de un momento de compra o venta.

En la siguiente imagen se puede observar el indicador que estoy programando en la actualidad:

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.

Ejemplo de código en Python para crear las bandas de Bollinger:

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', '2021-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()

En la siguiente entrada intentaré tener otros ejemplos en Matlab, porque el ejemplo anterior no sirve para hacer trading, hay que tener un software más potente, que permita conectarlo para hacer backtesting y nos diga si vale la pena o no.

Un saludo.

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments