
El sistema experto 'Comentador'. Aplicación práctica de indicadores embebidos en programas MQL4
Un trader experimentado nunca abrirá una posición si no hay ningún indicador técnico que confirme su decisión. Por ejemplo, el trader lleva a cabo su análisis técnico y concluye que puede abrir una posición larga en una divisa determinada, digamos EURUSD. Un trader experimentado comprueba los resultados obtenidos con un indicador determinado antes de entrar al mercado con el precio actual (véase la Figura 1), por ejemplo, puede utilizar el Oscilador Estocástico, y espera hasta que este proporcione una señal de confirmación. El indicador y sus señales se describen aquí: https://www.metatrader5.com/en/terminal/help/indicators/oscillators/so. En el caso que nos ocupa tomaremos la señal descrita a continuación.
"...Comprar cuando la línea %K se eleve por encima de la línea %D y vender cuando la línea %K caiga por debajo de la línea %D."
%K es la línea principal, %D (discontinua) es la línea de señal. MQL4 permite embeber funciones en los cálculos y en los indicadores. La lista completa de estas funciones se proporciona al final de este artículo, y también está disponible en la documentación de MQL4. Entre ellas se encuentra el Oscilador Estocástico. Utilizamos la siguiente función para calcular los valores de la línea principal y la línea de señal:
double iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
En la documentación MQL4 encontrará más detalles.
Este es el cálculo de la línea principal del indicador Oscilador Estocástico en MQL4:
iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, i)
Los parámetros 3,5,5 son los valores del periodo de las medias del indicador, MODE_SMA es el método que calcula la media móvil, i – el número de vela para la cual se calcula el valor, el parámetro MODE_MAIN indica que hay que calcular la línea principal (%K). De igual modo se muestra abajo el cálculo de la línea de señal:
iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL, i)
Cuando se utilizan las funciones embebidas del cálculo del indicador hay que especificar el marco temporal del gráfico y el símbolo. En nuestro caso, tenemos en cuenta el símbolo y el marco temporal actual del gráfico, parámetros NULL y 0. Recuerde que los cálculos se pueden llevar a cabo en cualquier símbolo y en cualquier periodo. Observe que en el gráfico del Oscilador Estocástico el valor de la línea principal es igual a 54.4444 y el valor de la línea de señal es 46.1238, es decir:
iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, i) > iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL, i)
Ahora es sencillo automatizar los cálculos del indicador. Conviene que el indicador no consuma demasiado espacio en el gráfico del precio. La solución óptima consiste en eliminar el indicador del gráfico y mostrar solamente la señal calculada arriba. El método más popular para mostrar la señales es poner caracteres Wingdings en el gráfico. Mas adelante explicaremos cómo hacerlo, ahora vamos a centrarnos en otra característica de MQL4. El operador llamado Comment().
void Comment( ...)
Sirve para mostrar comentarios en el gráfico del precio.
// Estocástico double valSTOCH=0; string commentSTOCH = "Estocástico: "; string commentSTOCHAdd = " Sin datos "; if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0) >iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) commentSTOCHAdd = " Se puede comprar"; if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0) <iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) commentSTOCHAdd = " Se puede vender"; commentSTOCH = commentSTOCH + commentSTOCHAdd;
El código fuente de arriba convierte la señal en texto para mostrarla en el gráfico.
Comment(commentSTOCH + "\n");
La función Comment permite que el usuario pueda utilizar el carácter de retorno de carro para visualizar los comentarios línea por línea. Con el código de arriba, el trader puede eliminar el gráfico del Oscilador Estocástico. Tiene un sistema de alarma que muestra el desarrollo del mercado actual en forma de texto.
Consideremos ahora, por ejemplo, el Commodity Channel Index (CCI).
"...mide la desviación del precio del activo de su precio estadístico medio. Los valores altos del índice señalan que el precio es inusualmente alto en comparación con el promedio, y los valores bajos indican que el precio es demasiado bajo. A pesar de su nombre el Commodity Channel Index (Índice de Canal de Mercaderías) se puede aplicar a cualquier instrumento financiero, no solo a mercaderías."
Al automatizar los cálculos de la señal CCI, obtenemos un comentario adicional como "El precio es demasiado alto". El trader puede incluso informarse mejor utilizando el indicador técnico Acelerador/Desacelerador, que, como su nombre indica, mide la aceleración y la desaceleración de la tendencia actual. "... Si se da cuenta de que el Acelerador/Desacelerador es una advertencia anticipada, esto le proporcionará una ventaja evidente."
Este es el código que muestra las señales de algunos indicadores:
// Demarker double valDem=iDeMarker(NULL, 0, 13, 0); string commentDem = "DeMarker: "; string commentDemAdd = " Sin datos"; if (valDem < 0.30) commentDemAdd = " Se espera que los precios suban"; if (valDem > 0.70) commentDemAdd = " Se espera que los precios bajen"; commentDem = commentDem + commentDemAdd; // ATR double valATR=iATR(NULL, 0, 12, 0); string commentATR = "ATR: "; commentATR=commentATR + " La tendencia probablemente cambiará " + valATR; // CCI double valCCI=iCCI(NULL,0,12,PRICE_MEDIAN,0); string commentCCI = "CCI: "; string commentCCIAdd = " Sin datos "; if (valCCI > 100) commentCCIAdd = " Overbought " + "(es posible una tendencia bajista correctora) "; if (valCCI < -100) commentCCIAdd = " Oversold " + "(es posible una tendencia alcista correctora) "; commentCCI = commentCCI + commentCCIAdd + valCCI; // MFI double valMFI=iMFI(NULL,0,14,0); string commentMFI = "MFI: "; string commentMFIAdd = " Sin datos "; if (valMFI > 80) commentMFIAdd = " un posible techo del mercado "; if (valMFI < 20) commentMFIAdd = " un posible suelo del mercado "; commentMFI = commentMFI + commentMFIAdd + valMFI;
Los cálculos también se pueden hacer con arrays. Las funciones terminadas en OnArray pueden utilizarse con este objetivo, por ejemplo, la función iMAOnArray que calcula la media móvil del array de datos. Es interesante señalar que a veces algunos indicadores pueden dar señales erróneas. Aunque para un trader, el hecho de que no exista ninguna señal es, en sí mismo, otra señal. El trading no se reduce a tomar decisiones sobre cuál es la dirección adecuada para abrir una posición; también hay que tener en cuenta la hora. El sistema de trading "Comentador" calcula las señales solo en el marco temporal actual, aunque el trader puede añadir al programa sus cálculos adicionales en periodos más grandes o más pequeños. El lenguaje de programación MQL4 no mejora por sí solo el análisis del trader, pero sí contribuye a relajar su mente y a mejorar la funcionalidad de sus estrategias.
A continuación se listan los indicadores técnicos disponibles en MQL4:
iAC iAD iAlligator iADX iATR iAO iBearsPower iBands iBandsOnArray iBullsPower iCCI iCCIOnArray iCustom iDeMarker iEnvelopes iEnvelopesOnArray iForce iFractals iGator iIchimoku iBWMFI iMomentum iMomentumOnArray iMFI iMA iMAOnArray iOsMA iMACD iOBV iSAR iRSI iRSIOnArray iRVI iStdDev iStdDevOnArray iStochastic iWPR
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/1406




- 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