
Estrategia de Bill Williams con y sin otros indicadores y predicciones
Introducción
Bill Williams es un reconocido trader, escritor y psicólogo de los EE. UU., que ha ganado reconocimiento por sus contribuciones al trading y al análisis financiero. A lo largo de su vida comercial, ha desarrollado indicadores y varias estrategias comerciales que han sido utilizadas por numerosos comerciantes.
Bill Williams tiene un doctorado en Psicología. Quizás por eso estudió el sentimiento del mercado. Por lo tanto, se puede implementar un enfoque extendido con un script de análisis de sentimientos que utilice IA para calificar el sentimiento de los comerciantes al rastrear mercados web, como plataformas de redes sociales. Al final del artículo habrá un ejemplo de análisis de sentimiento aplicado a las noticias del mercado.
La formación psicológica de Bill Williams le ayudó a adaptar los conceptos psicológicos al trading. Estudió los mercados desde una perspectiva humana, tratando de comprender cómo las emociones afectan a los traders y sus operaciones. Teniendo una visión holística del mercado, Bill Williams pensaba que el mercado era caótico y que los mercados debían estudiarse y negociarse teniendo esto en cuenta. Para estudiar el mercado, sugirió ciertos indicadores, que estudiaremos en este artículo.
Esta es una imagen del EA con los indicadores y osciladores que vamos a utilizar:
La imagen muestra tres indicadores: el indicador Alligator, el Awesome Oscillator (AO) y los Fractales. Todos estos indicadores juntos reflejan el comportamiento humano y el mercado caótico.
El indicador Alligator (Caimán)
El indicador Alligator se elabora con tres medias móviles; la mandíbula (Jaw, línea azul), los dientes (Teeth, línea roja) y los labios (Lips, línea verde). Este indicador está diseñado para identificar las fases de sueño y vigilia, refleja el comportamiento humano ya que el mercado tiene series en las que está dormido (baja actividad), seguidas de una serie en la que se despierta (intensa actividad). Los mercados tienen fases de consolidación seguidas de fases de tendencia. Alligator ayuda a identificar cuándo el mercado está dormido para no realizar operaciones, ya que los operadores obtienen beneficios de la alta volatilidad del mercado.
En la fase de baja actividad, el Indicador Alligator tiene sus líneas muy próximas y entrelazadas.
En la fase de alta actividad, el indicador Alligator tiene sus líneas separadas, lo que indica que se despierta y sigue una tendencia.
Nota: Como puede ver en la imagen, la estrategia intenta conseguir una posición corta en una tendencia alcista para seguirla. También hay más posibilidades de ajustar la estrategia, puede realizar la orden cuando el indicador Alligator se cruce y cuando el AO pase de estar por debajo a por encima de 0 y consiga un recorrido más largo.
En la fase de sueño, los operadores parecen no querer operar, están a la espera de que aparezcan nuevos datos o de que surja algo que provoque una tendencia en el mercado. La fase de sueño es donde los traders no deben tomar decisiones hasta que puedan ver claramente hacia dónde se dirige el mercado. Deben estar al tanto de las direcciones del movimiento del mercado, que se hacen visibles cuando se despierta y muestra la próxima tendencia.
Entonces, en la fase de sueño, las líneas tienden a estar cerca unas de otras y moverse lateralmente. Por lo tanto, el indicador le dice que no hay tendencia y que es mejor no realizar operaciones.
Cuando las líneas comienzan a separarse, esto significa mayor actividad. Si la línea verde está sobre la roja y sobre la azul, hay una tendencia alcista; si la línea verde está debajo de la roja y debajo de la azul, significa una tendencia bajista. Ambas situaciones significan que es el momento perfecto para entrar al mercado.m
Verde == Labios (Lips)
Rojo == Dientes (Teeth)
Azul == Mandíbula (Jaw)
¿Qué tiene en común el indicador Alligator con la psicología?
Las MAs son el promedio de los precios medios (ej: 2+3 / 2 = 2.5), pero suavizando las fluctuaciones de los precios y teniendo más en cuenta los últimos precios, por lo que las fluctuaciones tienen menos peso. Esto permite tener un mejor alcance de la tendencia. Esto es muy humano, intentar ver con claridad las cosas más importantes entre el ruido existente en el mercado.
El Awesome Oscillator (AO)
AO muestra la diferencia entre la SMA de 5 periodos y una SMA de 34 periodos utilizando los puntos medios de ((Alta + Baja )/ 2).
La diferencia de dos SMA con dos periodos diferentes muestra el impulso del mercado: la SMA corta mide los impulsos o cambios rápidos del mercado, y la SMA larga mide las tendencias. Esto es similar a lo que ocurre con los humanos, que tienen impulsos cortos y a largo plazo tienen una tendencia.
El impulso: El AO mide la fuerza del impulso del mercado, un AO positivo significa un impulso positivo y uno cruzado al negativo lo opuesto.
Los fractales
Los fractales, según la definición de Bill Williams, son una serie de cinco velas que tienen requisitos específicos para ser clasificados como fractales alcistas o bajistas.
- Un fractal alcista es aquel que tiene un mínimo más bajo que los mínimos de las dos barras anteriores y los mínimos de las dos barras siguientes.
- Un fractal bajista es lo opuesto; tiene un máximo más alto que los máximos de las dos barras anteriores y los máximos de las dos barras siguientes.
Los fractales identifican posibles puntos en los que el mercado puede cambiar de dirección. La psicología detrás de los fractales es que reflejan puntos clave de soporte y resistencia. Los comerciantes identifican estos puntos para anticipar cambios de dirección basándose en el comportamiento colectivo de los participantes del mercado.
Williams pensaba que los mercados financieros eran sistemas caóticos influenciados por el comportamiento humano. Pensaba que los participantes en el mercado se comportan a partir de emociones y comportamientos psicológicos, que crean patrones que parecen aleatorios pero que tienen bases estructurales subyacentes que son identificables.
Al aplicar la psicología a sus indicadores, ayudó a los traders a comprender las emociones humanas como la esperanza, el miedo, la avaricia y otras, que afectan las decisiones en el trading. Las tendencias y consolidaciones reflejan la psicología humana de períodos de actividad y relajación.
Vamos con la estrategia utilizada. En el primer código, haremos uso de fractales, AO y el indicador Alligator.
Las condiciones para realizar una compra se muestran a continuación (muy claro en el código). Recuerde, [0] es el lugar real en ese instante y [1] es la posición menos 1:
alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1] && ao[1] > 0 && ao[1] > ao[2] && fractalsUp[1] != 0 && PositionsTotal()==0
Las condiciones de venta son las siguientes:
alligatorLips[1] < alligatorTeeth[1] && alligatorTeeth[1] < alligatorJaw[1] && ao[1] < 0 && ao[1] < ao[2] && fractalsDown[1] != 0 && PositionsTotal()==0
Como ejemplo de estrategias basadas en los indicadores de Bill Williams, podemos utilizar cruces de AO de positivo a negativo y viceversa. Puedes probar más posibilidades y modificar el código como quieras. Deje un comentario en la discusión del artículo si logró obtener resultados mucho mejores durante los mismos períodos utilizados en el Probador de estrategias de MetaTrader 5.
Las condiciones para el cierre de las órdenes son las siguientes.
Para posiciones de compra:
ao[0] < 0 || (alligatorLips[1] < alligatorTeeth[1] && alligatorTeeth[1] < alligatorJaw[1])
Para posiciones de venta:
ao[0] > 0 || (alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1])
El código completo está disponible en el archivo Bill Williams Strategy.mq5 adjunto al artículo.
Aquí comparto los resultados que recibí en el probador.
Utilicé las siguientes entradas y configuraciones:
Ok, estos resultados no se ven muy buenos, pero esta estrategia parece funcionar en otros períodos de tiempo, así que mantendremos esta estrategia e intentaremos obtener mejores resultados agregando otros indicadores o/y agregando predicciones.
¿Cómo evolucionaría esta estrategia si utilizáramos ADX en ella? Con ADX, debería "ver" mejores patrones de tendencia, así que veamos qué tenemos que cambiar:
ADXHandle = iADX(Symbol(), Period(), 14); if(ADXHandle == INVALID_HANDLE) { Print("Error initializing ADX indicator: ", GetLastError()); return INIT_FAILED; }
CopyBuffer(ADXHandle, 0, 0, 3, adx);
if(alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1] && ao[1] > 0 && ao[1] > ao[2] && fractalsUp[1] != 0 && adx[1] > ADXThreshold && PositionsTotal() == 0)
Ahora los resultados son:
Sigue mal. Veamos si utilizamos paradas basadas en ATR.
Bueno, esto parece estar mejor. Ahora bien, ¿qué pasa si utilizamos aprendizaje profundo y predicciones? Veamos los resultados:
Tenga en cuenta que el modelo utiliza 120 valores como pasos, por lo tanto, al menos reharía el modelo cada 120 días. Por lo tanto, los resultados pueden ser mejores si el modelo se actualiza con los últimos días.
La estrategia utiliza períodos de tiempo de 8 horas y el modelo ONNX está configurado para valores de 1 día. Por lo tanto, recuerda que al cambiar el script debes aplicar períodos 1D a lo que sea necesario.
Con optimizaciones al aplicar predicciones de aprendizaje profundo, tenemos los siguientes resultados generales, y casi todos parecen bastante buenos:
Como se puede ver en este gráfico, casi todas las optimizaciones dan un Sharpe positivo, esto significa que la estrategia es muy confiable y funciona bien.
Tenga en cuenta que utilizamos el periodo de 8 horas para todas las pruebas y simulaciones, pero utilizamos un periodo de 1 día para las predicciones. El objetivo de esto es tener una predicción no muy lejana ni muy pronto, para que podamos entrar en tendencias. Si utilizas predicciones demasiado lejanas, igualmente entrarás en tendencias, pero no en tendencias cortas, por lo que tendrás menos órdenes en la prueba, y eso no es útil para saber si toda la estrategia es buena o no. Para los Stop Loss utilizamos el ATR. También agregamos ADX a la estrategia.
¿Qué podemos ver en esta versión optimizada del EA?
- La estrategia es rentable con un beneficio neto total de 847,70 $ y un factor de beneficio elevado de 3,85, lo que indica que la estrategia gana bastante más dinero en las operaciones ganadoras que el que pierde en las perdedoras.
- El factor de recuperación de 4,59 sugiere que la estrategia puede recuperarse de las pérdidas con relativa rapidez.
- Tanto el AHPR como el GHPR son 1,0000, lo que indica que no hay desviación significativa en los rendimientos medio y geométrico.
- El ratio de Sharpe de 3,52 es bastante fuerte, lo que sugiere unos buenos rendimientos ajustados al riesgo.
- Los porcentajes de reducción de saldo y patrimonio son muy bajos, lo que implica un riesgo mínimo de pérdidas significativas.
¿Qué usaremos para hacer los modelos ONNX?
Utilizaremos el script recurrente de Python que siempre uso para esta serie de artículos. Se adjunta al final del artículo. Sólo tenemos que modificar el símbolo y, si sabemos lo que estamos haciendo, podemos modificar el periodo de tiempo u otras cosas.
También adjuntaré el modelo utilizado, para que podáis reproducir mis resultados.
Además, adjuntaré otro script .py para crear modelos ONNX con correlación y métricas, para saber si el modelo es correcto para utilizar. Los resultados de este script están aquí:
train_mse=0.000 test_mse=0.000 train_r2=0.994 test_r2=0.970 train_corr=0.997 test_corr=0.989
Con un R2 del 97 % y una correlación de prueba del 98,9 %, ahora sabemos que podemos utilizar este modelo en el asesor experto.
Estas estadísticas significan que, por ejemplo, con una correlación del 98,9 %, el modelo tiene una precisión de predicción al probar 1 error contra 99 predicciones buenas. El R2 del 97 % es el coeficiente de determinación, que es la medida estadística de la proporción de varianza sobre la variable dependiente (en este caso los precios de cierre) que es explicada por la variable independiente (el modelo). En otras palabras, R2 expresa qué tan bien se ajustan los valores de la predicción del modelo en comparación con los valores de los precios reales.
Un buen resultado para R2 es 85%, y un buen resultado para correlación es 95%. Cualquier valor superior se considera un buen resultado, pero debe tener cuidado de evitar el sobreajuste.
Si quieres saber más sobre Bill Williams, te recomiendo leer algunos de sus mejores libros, como:
- "Trading Chaos" (1995): Este es uno de sus mejores y más conocidos libros, donde introduce la teoría del caos en los mercados financieros y explica los indicadores que hemos utilizado en este artículo y cómo pueden ser utilizados como oportunidades para saber puntos donde invertir en trading.
- "New Trading Dimensions: How to Profit from Chaos in Stocks, Bonds, and Commodities" (1998): Este libro profundiza en sus métodos y explica estrategias más complejas y avanzadas. Presenta sus indicadores y muestra cómo utilizarlos y combinarlos para obtener un mejor enfoque de las señales comerciales.
- "Trading Chaos: Maximize Profits with Proven Technical Techniques" (Segunda edición, 2004):Esta es una actualización de su libro original e incluye nuevas estrategias y un nuevo enfoque basado en su experiencia y comentarios adicionales de traders que han utilizado sus técnicas.
Ejemplo de análisis de sentimiento de noticias de mercados
Consideremos ahora un análisis de sentimiento de las noticias del mercado usando un ejemplo en Python.
Primero debes instalar estas bibliotecas para Python:
pip install requests beautifulsoup4 textblob
Cree un nuevo script de Python y copie y pegue este código:
import requests from bs4 import BeautifulSoup from textblob import TextBlob def get_eurusd_news(): url = 'https://www.investing.com/currencies/eur-usd-news' headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.content, 'html.parser') # Encontrar todos los elementos <li> que contienen artículos de noticias articles = soup.find_all('li', class_='border-b') news = [] for article in articles: title_tag = article.find('a', class_='mb-2 inline-block text-sm font-bold leading-5 hover:underline sm:text-base sm:leading-6 md:text-lg md:leading-7') if title_tag: title = title_tag.get_text(strip=True) news.append(title) return news def analyze_sentiment(news): sentiment_results = [] for article in news: analysis = TextBlob(article) sentiment = analysis.sentiment.polarity sentiment_results.append((article, sentiment)) return sentiment_results def summarize_sentiment(sentiments): positive = sum(1 for _, sentiment in sentiments if sentiment > 0) negative = sum(1 for _, sentiment in sentiments if sentiment < 0) neutral = len(sentiments) - positive - negative total = len(sentiments) summary = { 'total': total, 'positive': positive, 'negative': negative, 'neutral': neutral } return summary news = get_eurusd_news() if news: sentiments = analyze_sentiment(news) summary = summarize_sentiment(sentiments) for i, (article, sentiment) in enumerate(sentiments, 1): sentiment_type = 'Positive' if sentiment > 0 else 'Negative' if sentiment < 0 else 'Neutral' print(f"{i}. {article}\n Sentiment: {sentiment_type} (Polarity: {sentiment})\n") print(f"Sentiment Summary: {summary}") print(f"Total articles: {summary['total']}, Positive: {summary['positive']}, Negative: {summary['negative']}, Neutral: {summary['neutral']}") else: print("No news articles found for EUR/USD.")
Esto extrae las noticias de Investing.com, lee los títulos y analiza los datos, otorgando una puntuación. Todos los comunicados de prensa se suman y terminan dando una puntuación total de los artículos, por lo que, con esto, puedes ver cómo se siente el mercado sobre un símbolo y eso te puede dar una idea de si está durmiendo, está en una tendencia o está despertando.
1. Dollar edges lower, but on track for hefty weekly gains Sentiment: Neutral (Polarity: 0.0) 2. European stocks hit by weak global sentiment; UK retail sales slump Sentiment: Negative (Polarity: -0.125) 3. Dollar higher on US business activity boost Sentiment: Positive (Polarity: 0.25) 4. Dollar steadies after sharp gains post Fed minutes; sterling retains strength Sentiment: Negative (Polarity: -0.125) 5. European stocks largely higher; Nvidia earnings, PMI data in focus Sentiment: Positive (Polarity: 0.125) 6. Dollar higher against euro as Fed minutes support Sentiment: Positive (Polarity: 0.25) 7. Dollar steady ahead of Fed minutes, sterling gains on CPI release Sentiment: Positive (Polarity: 0.16666666666666666) 8. EUR/USD rally expected to persist, says BofA Sentiment: Negative (Polarity: -0.1) 9. Dollar firm as Fed officials urge patience on rate cuts Sentiment: Negative (Polarity: -0.2) 10. Dollar steady; Fed speakers could provide impetus Sentiment: Positive (Polarity: 0.16666666666666666) Sentiment Summary: {'total': 10, 'positive': 5, 'negative': 4, 'neutral': 1} Total articles: 10, Positive: 5, Negative: 4, Neutral: 1
Conclusión
Aunque la estrategia de Bill Williams es conocida por ser más rentable que lo que podemos ver en esta prueba, hemos logrado obtener mejores resultados con algunas modificaciones y añadiendo predicciones de deep learning con otro periodo. Al agregar predicciones a la estrategia, logramos hacerla más estable y reducir los errores al intentar saber si es alcista o bajista. Con el ADX agregado, ayudamos al EA a tomar decisiones para las tendencias a largo plazo, y al agregar ATR logramos tomar mejores decisiones con los riesgos del lote.
Este no es un EA completo, por lo que si quieres o necesitas comerciar con él, deberás terminarlo o pedirle a alguien, por ejemplo en el apartado/sección Freelance de esta web, para que lo termine.
A continuación, estudiaré las estrategias y trataré de llevarlas al siguiente nivel, si es posible, utilizando otros indicadores o incluso deep learning. Si esto te parece interesante, házmelo saber y dame tu opinión sobre este artículo u otros que quieras conocer.
Probablemente haré otro artículo con los indicadores de Bill Williams utilizando las estrategias de su segundo libro:"New Trading Dimensions: How to Profit from Chaos in Stocks, Bonds, and Commodities" (1998). Avísame si te parece interesante o si quieres que se implementen otras cosas en el EA.
Además, si quieres un artículo sobre una estrategia específica, házmelo saber escribiéndome o dejando un comentario en las discusiones del artículo. Tarde o temprano, crearé un artículo de este tipo (si los editores también lo consideran interesante).
Espero que le haya gustado este artículo.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/14975





- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso