English Русский 中文 Deutsch 日本語 Português
Patrones disponibles al comerciar con cestas de divisas

Patrones disponibles al comerciar con cestas de divisas

MetaTrader 5Trading | 30 enero 2017, 16:29
2 220 0
Andrei Novichkov
Andrei Novichkov

Introducción

En el artículo anterior sobre los principios comerciales con cestas de divisas, se analizaron los principios básicos de este comercio, los enfoques y la terminología. Como es lógico, esto es insuficiente para comerciar de forma efectiva con una metodología tan compleja. Es necesario entender las condiciones de entrada y salida de las señales. En otras palabras, necesitamos las descripciones de los patrones conocidos en la actualidad, cuyo uso aumenta de forma sustancial las probabilidades de obtener beneficios. Este será precisamente el objetivo de este artículo, presentar a los tráders una descripción lo más detallada posible de los patrones que aparecen al trabajar con las cestas de parejas de divisas. Además, usaremos la terminología y la descripción de las cestas, así como los recursos técnicos que se mostraron en el primer artículo. Para el análisis del estado de las divisas de las cestas, usaremos los indicadores Williams’Percent Range combinados (en lo sucesivo, WPR).

Hay que decir unas cuantas palabras sobre este indicador. El rango de cambio del indicador WPR padre es del 0% al 100%. Este rango no es conveninete para nuestro trabajo, como se podrá entender posteriormente. Para representar correctamente todos los patrones es necesario un rango de 100% hasta -100%, pasando a través del cero. Este cambio es muy fácil de incluir en el código del indicador. Además, consideraremos que que los niveles de sobrecompra / sobreventa disponibles para el indicador padre conservan su actualidad para el combinado, por lo que usaremos activamente estos niveles.


Posibilidades de una entrada dinámica. Patrones № 1 y 2

Entenderemos por entrada la entrada al mercado cuando el indicador alcance un cierto valor comprendido como señal de entrada, sin esperar el cierre de la vela actual. En primer lugar, analizaremos el patrón de fortalecimiento/debilitación de la divisa de la cesta. Desde el punto de vista del mercado, esto significa la aparición de uno o varios eventos como resultado de los cuales los inversores comienzan a comprar o vender una divisa concreta, lo que provoca que crezca o caiga con respecto a todas las otras. Un ejemplo concreto son las intervenciones públicas del director del BCE, Mario Draghi, que pueden fácilmente fortalecer o debilitar la posición del euro con respecto a otras divisas. La situación actual del WPR combinado refleja el acercamiento al límite superior o inferior del diapasón. El tráder puede entrar en el mercado sin esperar el cierre de la vela, al alcanzarse determinados valores del indicador, esto será una entrada dinámica.

  • Patrón №1

El primer patrón nos es bien conocido por las numerosas descripciones de los indicadores técnicos estándar y el trabajo con ellos. 

El indicador llega casi hasta el límite, vira y rompe la línea de la sobrecompra de arriba hacia  abajo, o bien la zona de sobrecompra de abajo hacia arriba. Esta es la señal de entrada según la tendencia en todas las parejas de divisas de la cesta.

De acuerdo con muchas fuentes autorizadas, esta entrada no se deber realizar en ningún caso de manera dinámica. Por eso, no es conveniente de ningún modo recomendar el comercio conforme al Patrón №1.

  • Patrón №2

El segundo patrón constituye una modificación del anteriormente descrito en el número uno.

El indicador llega casi hasta el límite del diapasón y está listo para virar, y con él, la tendencia actual. Esta es la señal de entrada contra la tendencia en todas las parejas de divisas de la cesta.

Sacar estas conclusiones acerca de un viraje cercano de precio basándonos en los datos de un solo indicador, es un error. Tanto más que, hay que recordar que el WPR combinado es un oscilador que no trabaja con la tendencia. En la situación actual, el indicador puede encontrase cuanto sea cerca de los límites del diapasón, apartarse un poco de ellos y acercarse de nuevo, etcétera. Pero al mismo tiempo, la tendencia actual continuará, y las pérdidas del tráder aumentarán. Por supuesto, al final tendrá lugar el retroceso con respecto a los límites, pero no se sabe en qué momento. ¿Y qué reducción habrá en el momento del viraje? El resultado financiero de un entrada semejante puede ser devastador.

Sin embargo, algunos tráders comercian con este patrón cuando el indicador muestra valores significativamente superiores al 90% o menores al -90%. El asunto es que el patrón №2 tiene un mérito notable: el tráder puede captar el cambio de tendencia justo al inicio. Resulta obvio que son necesarias ciertas señales adicionales para la entrada, y estas señales se pueden buscar usando Price Action.

Además, es razonable no comerciar con este patrón si su aparición está relacionada solo con la publicación de una noticia fundamental, y se le presta atención a aquel cuando aparece en una tendencia ya formada: esto puede ser señal de que está pronta a terminarse.

Como ilustración, se pueden monitorear los cambios de los datos del indicador para el franco en un día negro para muchos tráders, a mediados de enero de 2015. El monitoreo se presenta como archivo en el formato CSV, es decir, adecuado para trabajar con Excel. Los nombres de los archivos corresponden a la fecha y la hora del comienzo del monitoreo. En los archivos hay cuatro columnas con datos:

Hora del monitoreo Datos del indicador en el marco temporal una hora Datos del indicador en el marco temporal de cuatro horas Datos del indicador en el marco temporal de un día
............
12:51:3299.1699.1799.17
12:51:3498.8598.8798.88
............

Podemos ver cómo cambian los datos de los marcos temporales menores en comparación con los mayores, como las indicaciones de los indicadores alcanzan los límites del diapasón, se apartan, y se acercan de nuevo. El que decida entrar en este momento, recibiría rápidamente un stop loss.

Se podrían buscar en los gráficos otros ejemplos, en los que la entrada dinámica trae beneficios sólidos. Sin embargo, la sola posibilidad de sufrir un fiasco, nos hacer llegar a la conclusión de que el Patrón №2 es también extremadamente arriesgado en el comercio. Por eso, no lo recomendaría para comerciar.


Entrada en el cierre de una vela. Patrón № 3

El tráder recibe la señal de entrada en todas las parejas de divisas de la cesta con la condición de que el gráfico del indicador WPR combinado haya roto el nivel de sobrecompra de arriba hacia abajo o el nivel de sobreventa de abajo hacia arriba después del cierre de una vela del marco temporal actual.

Se trata de un método muy bien descrito y totalmente legal de entrada en el mercado para parejas de divisas aparte. Sin embargo, si recordamos que los indicadores combinados heredan las propiedades de los indicadores padre, como se indicó en el anterior artículo, el principio de entrada con ruptura de niveles de sobrecompra / sobreventa también puede ser permisible aquí. Además, teniendo en cuenta que la ruptura del nivel sigue al viraje del indicador en la zona de los bordes del diapasón (y esto presupone la existencia de un movimiento, aunque sea corto), se puede decir que la entrada tiene lugar conforme a la tendencia. La condición principal del Patrón №3 es su identificación después del cierre de la vela del marco temporal actual.

La propia entrada se realiza de la forma estándar. Podemos entrar según el mercado, o con órdenes límite. En el segundo caso, existe el riesgo de que la entrada se ejecute en todas las parejas de divisas. A su vez, esto puede ser el motivo de que toda la compra / venta de la cesta dé pérdidas. Vamos a aclarar esta conclusión con la ayuda de un ejemplo.

El tráder entra en todas las parejas de divisas de la cesta, y entiende que no puede obtener beneficios en todas las parejas de la misma. En algunas parejas obtendrá un resultado cero, y en otras un resultado negativo, si las noticias locales resultan negativas. Supongamos que en la pareja EURJPY el gráfico hace mucho que va en la dirección de las ventas. En la eurozona hay problemas, y la estadística no es demasiado buena. Por consiguiente, la línea del WPR combinado de la cesta EUR descenderá y comenzará a acercarse al límite del diapasón. Sin embargo, en este momento, la situación comienza a cambiar, la estadística dibuja una imagen un poco más favorable y la confianza de los inversores se recupera. EURJPY pasa al movimiento lateral, y el viraje a la zona de compra ya está cerca. La línea del WPR combinado vira y rompe la línea de sobreventa. El tráder consuma la señal recibida y entra en el mercado, comprando una cesta de EUR. Sin embargo, el gráfico de EURJPY sigue sin ir en la dirección correcta e incluso continúa una pequeña tendencia hacia el lado de las ventas.

¿Por qué? Porque al mismo tiempo han salido buenas noticias y las estádisticas del yen, y los inversores han comenzado también a comprarlo. El yen ha comenzado a fortalecerse junto con el euro, puede que incluso con mayor velocidad, como resultado, tenemos movimiento lateral e incluso tendencia en la dirección de la venta. Las esperanzas del tráder con esta pareja de divisas no se han cumplido, pero en la cesta hay otras parejas de divisas de las que en este momento no han salido estadísticas en absoluto. Por eso, en el resto de parejas de divisas el tráder obtiene beneficio. Pero si desde el principio el tráder hubiera entrado en el mercado con órdenes límite para comprar cestas de euro, podría no haber obtenido resultados positivos, puesto que la entrada podría no haberse realizado para todas las parejas de divisas. Lo que es más, la entrada podría haber tenido lugar solo para la pareja de divisas (en este caso, EURJPY) de la que el tráder habría obtenido pérdidas.

Vamos a analizar un ejemplo concreto de la vida real. Vamos a tomar la propia pareja EURJPY y colocaremos el indicador de prueba testWPR.mq5 en el marco teporal de una hora :

//+------------------------------------------------------------------+
//|                                                      testWPR.mq5 |
//|                                        MetaQuotes Software Corp. |
//|                                               http://fxstill.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 1
#property indicator_plots   1

input int     WPR=14;                    //Period WRP
input color   clr= clrBlue;

#define LG 7
string pair[]={"EURUSD","EURJPY","EURCHF","EURGBP","EURNZD","EURCAD","EURAUD"};
int h[LG];

double ind[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   for(int i=0; i<LG; i++)
     {
      h[i]=iWPR(pair[i],0,WPR);
     }
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);

   IndicatorSetString(INDICATOR_SHORTNAME,"testWPR");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPR_");

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetValue(int shift)
  {
   double dBuf[1];
   double res=0.0;
   for(int i=0; i<LG; i++)
     {
      CopyBuffer(h[i],0,shift,1,dBuf);
      res+=dBuf[0];
     }//end for (int i = 0; i < iCount; i++)      
   res=res/LG;
   return (NormalizeDouble((res + 50) * 2, _Digits) );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
     }
   else
     {
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
   for(int i=0; i<LG; i++)
     {
      if(h[i]!=INVALID_HANDLE) IndicatorRelease(h[i]);
     }
   string text;
   switch(reason)
     {
      case REASON_PROGRAM:
         text="Indicator terminated its operation by calling the ExpertRemove() function";break;
      case REASON_INITFAILED:
         text="This value means that OnInit() handler "+__FILE__+" has returned a nonzero value";break;
      case REASON_CLOSE:
         text="Terminal has been closed"; break;
      case REASON_ACCOUNT:
         text="Account was changed";break;
      case REASON_CHARTCHANGE:
         text="Symbol or timeframe was changed";break;
      case REASON_CHARTCLOSE:
         text="Chart was closed";break;
      case REASON_PARAMETERS:
         text="Input-parameter was changed";break;
      case REASON_RECOMPILE:
         text="Program "+__FILE__+" was recompiled";break;
      case REASON_REMOVE:
         text="Program "+__FILE__+" was removed from chart";break;
      case REASON_TEMPLATE:
         text="New template was applied to chart";break;
      default:text="Another reason";
     }
   PrintFormat("%s",text);
  }
//+------------------------------------------------------------------+

Notemos que, puesto que el diapasón del WPR combinado es de -100% a 100%, el nivel de sobrecompra se ubicará en el nivel 60%, y no en el -20%, como en la versión padre de WPR. El nivel de sobreventa estará en este caso en el nivel -60%, y no en el -80%. Teniendo en cuenta este hecho, marcaremos este nivel en el gráfico del indicador.

Analicemos el punto de cruce de los niveles de sobrecompra/sobreventa. En el momento en que escribo el artículo, se encuentra en el cierre de la vela de tres horas del 17.10.2016 en el marco temporal de una hora: 


Consideraremos que hemos entrado hipotéticamente en el mercado a esta hora. Decidiremos de inmediato el momento de salida del mercado. Además, saldremos cuando el valor del indicador se acerque a cero o se iguale al mismo, tengamos los resultados que tengamos. Este momento llegará a las siete de la mañana del mismo día. Marcaremos ambos momentos con líneas verticales. Las capturas de pantalla para el resto de las parejas de divisas de la cesta EUR están en el archivo anexo, con las líneas ya marcadas. Notemos que se obtendrá un resultado claramente negativo en la pareja EURNZD, en EURGBP estará cerca del cero, y en el resto de las cinco divisas, se obtendrán beneficios.

Sin embargo, surge la cuestión de la legitimidad de los niveles de sobreventa y sobrecompra. Comparando el gráfico del Estocástico estándar y el Estocástico combinado en el artículo anterior, se aclaró que el gráfico del Estocástico combinado está bastante más suavizado. La misma imagen se observa al comparar el WPR estándar y el combinado, como se puede ver en la siguiente captura de pantalla:

Aquí se muestran los gráficos del WPR combinado (línea gruesa azul) y el WPR estándar (línea fina azul).

¿Se conservan intactos los valores de los niveles de sobrecompra y sobreventa en los indicadores combinados en comparación con los padres? Cualquier respuesta a esta regunta requerirá de serias investigaciones y pruebas de peso. En el marco del artículo actual, es solo posible una valoración más primitiva, la visual, en primer lugar. Para evitar valoraciones subjetivas, creo que será más eficaz que hable aquí de mis consideraciones personales a este respecto.

También hay una cuestión más tocante a este patrón (y no solo a él). ¿Cómo salir del mercado, conforme a qué criterios? Podemos proponer dos respuestas a esta pregunta:

  1. La salida del mercado se realiza en diferentes parejas de divisas de la cesta independientemente unas de otras, de acuerdo con las normas Price Action. Esto nos da la posibilidad de aplicar el instrumental ya elaborado y el trailing stop. Pero podemos encontrarnos con una cesta no cerrada del todo, y al final las órdenes cerradas nos darán pérdidas, superando el beneficio restante. Por supuesto, el tráder no puede (y no debe) permitir esta situación.
  2. La salida del mercado se realiza inmediatamente en todas las parejas de divisas, basándonos en las indicaciones del indicador. Por ejemplo, el tráder puede comprar una cesta tras esperar la ruptura del nivel de sobreventa (-60%) y venderla cuando el indicador se acerque al cero (o al nivel -10%, por ejemplo). En este caso, la cesta se cerrará por entero con todas las garantías, pero es posible que no obtengamos enteramente el beneficio esperado.

Vamos a mostrar unas cuantas conclusiones sobre el análisis del Patrón №3:

  1. El patrón se puede aplicar al comercio. Se determina tras el cierre de la vela y se identifica con los niveles cuya ruptura da al tráder la señal sobre una posible entrada.
  2. El patrón no tiene normas determinadas de entrada y salida. Aunque, en sí, la existencia de niveles de sobreventa y sobrecompra que definan la recepción de una señal de entrada y salida en el mercado no provoca dudas.
  3. El patrón permite una reducción considerable.
  4. El patrón no tiene en cuenta en forma alguna la presencia de la segunda divisa en cada pareja de divisas. Este es su principal defecto, que puede ser motivo tanto de reducciones que se prolonguen por mucho tiempo, como de simplemente de la obtención de un resultado negativo.
  5. Y tenemos otro aspecto negativo, no tan obvio, pero no menos esencial. Antes hemos escrito que en las operaciones con una cesta de parejas divisas  es posible esperar un resutado negativo en ciertas parejas, neutro en otras y positivo en terceras. El tráder obtiene beneficio, por eso el estado de la divisa de la cesta le sugiere hacia qué lado abrir, aumentando la probabilidad de que haya un resultado positivo en la mayoría de las parejas de divisas. En esta etapa, el resultado puede ser corregido significativamente hacia el lado negativo con un coste diverso en puntos de diferentes parejas de divisas, con el tamaño de los swaps  y de las comisiones.

Veamos si hay métodos para aumentar la efectividad de este patrón, disminuir la reducción e incrementar la retanbilidad. Esto esperfectamente posible: veamos el siguiente patrón.

Entrada sobre el fortalecimiento de una de las divisas y el debilitamiento simultáneo de otra divisa. Patrón №4

El patrón tiene en cuenta que en la formación del precio participan dos divisas, al tiempo que el patrón №3, descrito más arriba, solo tenía en cuenta uno.

Aclaremos lo que acabamos de describir. Por ejemplo, en la ya mencionada pareja EURJPY, el precio puede ir hacia el lado de las compras en tres casos:

  • Reforzamiento de la primera divisa: EUR. Este el patrón №3, ya descrito. Ya hemos visto los puntos positivos y negativos de este patrón.
  • Debilitamiento de la segunda divisa: JPY. El mismo patrón №3, pero con la segunda pareja de divisas.
  • Reforzamiento simultáneo de la primera divisa, EUR, y el debilitamiento de la segunda divisa, JPY. Obviamente, este evento aumenta la probabilidad de viraje y del movimiento del precio hacia el lado que necesite el tráder. Además, esta probabilidad aumentará conforme crezca una divisa y se debilite la otra.

El patrón №4 da la señal de entrada en el mercado registrando la situación descrita en el tercer punto. Esto sucede de la siguiente forma.

Desde el punto de vista de la metodología de trabajo con parejas de divisas, en cada pareja existen dos divisas de cesta. Por consiguiente, en nuestro caso, el tráder puede analizar la pareja de divisas EURJPY con la ayuda de dos indicadores combinados incorporados, uno en EUR y otro JPY, controlando al mismo tiempo el deblitamiento / reforzamiento de cada una de las dos divisas. De paso, existe la opción de identificar también el Patrón №3, pero el más importante es el Patrón №4.

Se identificará mediante el análisis del gráfico de la diferencia entre las indicaciones del indicador combinado para la divisa base y para la divisa de la cotización. Mientras esta diferencia permanezca en la zona del cero por ciento (0%), no importa si es con el signo más o menos, en el mercado tendremos movimiento lateral. Este hecho será consecuencia de que en el mercado se da la situación de que las dos divisas que constituyen la pareja tienen aproximadamente la misma fuerza. Los inversores confían en ambas divisas, la atmósfera informativa se mantiene equilibrada y no hay ningún movimiento brusco. Por eso, el indicador combinado dará aproximadamente los mismos valores para cada pareja, y eso significa que la diferencia entre ellos es pequeña. Es lógico no entrar en el mercado en estos momentos.

Y he aquí que la situación comienza a cambiar. El yen se fortalece, y el euro se debilita. Además, la situación se desarrolla en esta dirección durante un tiempo determinado, en otras palabras, este reforzamiento/debilitamiento de las divisas supone una tendencia, y no un movimiento momentáneo.  El tráder observa el mercado, y ve que las indicaciones de los indicadores combinados comienzan a cambiar. Con el paso del tiempo, las indicaciones para el euro pasan a la zona negativa y se acercan a los límites del diapasón. Con el yen, la situación es contraria. El propio gráfico EURJPY va hacia el lado de las ventas. Ahora el tráder observará en el gráfico la diferencia entre las indicaciones del indicador combinado para el euro y para el yen. Este gráfico va hacia abajo y tiende hacia su valor mínimo -200%.

Notemos que en el caso del movimiento contrario, el límite superior será igual al 200%. Y aquí nos queda claro por qué no ha sido necesario cambiar el diapasón del WPR combinado de 100% a -100%, sobre lo que se habló anteriormente en el artículo: para que los gráficos de los indicadores combinados y el gráfico de la diferencia entre ellos se puedan colocar en una ventana. Y para deshacernos del "feo" valor 200%, solo hay que dividir por la mitad la magnitud de la diferencia entre los dos indicadores combinados, convirtiéndola en 100%.

Así, el tráder obtiene una señal de entrada en el mercado cuando la diferencia entre las indicaciones de los indicadores combinados alcance una magnitud determinada. Hablando concretamente, el tráder esperará a que el gráfico de la diferencia se acerque a uno u otro límite del diapasón y atraviese la línea de sobreventa de arriba hacia abajo, o bien la línea de sobrecompra de abajo hacia arriba. Y, por supuesto, es conveniente registrar la ruptura en el cierre de la vela. En otras palabras, la táctica de acción es la misma que en el caso del Patrón №3, pero con peculiaridades determinadas:

  • Para tomar una decisión de entrada en el mercado, se usan dos indicadores combinados que reflejan el estado de cada divisa de la pareja. De esta forma, lograremos aumentar sustancialmente la probabilidad de obtener beneficios.
  • La entrada en el mercado se ejecuta en todas las parejas de divisas de la cesta, y no solo en una. De esta forma, se logra disminuir la reducción.

Veamos el trabajo concreto con el Patrón №4. Para ello, crearemos otro indicador para la cesta JPY. Lo crearemos de la misma forma que el indicador testWPR. Tomaremos del artículo anterior la lista de parejas de divisas para la cesta del yen. Puesto que el código del indicador repite el código del indicador testWPR, no lo mostraremos aquí. El código compilado del indicador se adjunta al artículo. Solo cambiaremos el color del indicador al rojo y lo colocaremos en la misma pareja EURJPY y en la misma ventana donde se encuentra testWPR. Observamos la siguiente imagen: 

Me he permitido marcar con líneas verticales los segmentos que presentan interés desde mi punto de vista. Además, incluso en este fragmento tan pequeño, se puede notar cómo se interrelacionan el gráfico de precio y los valores de ambos indicadores, para ser más precisos, las diferencias entre ellos, o aún más concretamente, la distancia entre la divisa más fuerte y la más débil.

Sin embargo, en este gráfico es difícil rastrear un parámetro como la diferencia deseada. Escribiremos otro indicador de prueba, testDistance.mq5:

//+------------------------------------------------------------------+
//|                                                 testDistance.mq5 |
//|                                   2016 MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 1
#property indicator_plots   1

input int WPR = 14;//Period WPR
input color   clr= clrGreen;

double ind[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int h,h1;
int OnInit()
  {
//--- indicator buffers mapping
      h = iCustom(NULL,0,"testWPR",WPR);
      if (h == INVALID_HANDLE) {
         Print("Error while creating testWPR");
         return (INIT_FAILED);
      }
      h1 = iCustom(NULL,0,"testWPRjpy",WPR);
      if (h1 == INVALID_HANDLE) {
         Print("Error while creating testWPRjpy");
         return (INIT_FAILED);
      }  
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);        
  
   IndicatorSetString(INDICATOR_SHORTNAME,"testWPRdistance");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPRdistance_");    
//---
   return(INIT_SUCCEEDED);
  }
  
double GetValue(int shift)
  {
   double dBuf[1], dBuf1[1];
   double res=0.0;
   CopyBuffer(h,0,shift,1,dBuf);
   CopyBuffer(h1,0,shift,1,dBuf1);
   return (NormalizeDouble((dBuf[0] - dBuf1[0])/2, _Digits) );
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
     }
   else
     {
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
void OnDeinit(const int reason)
  {
   IndicatorRelease(h);
   IndicatorRelease(h1);

  }
//+------------------------------------------------------------------+

Lo colocaremos  en una ventana aparte en el propio EURJPY y analizaremos el segmento marcado anteriormente:


Aquí, con la línea verde se muestra el gráfico de la diferencia entre los dos WPR combinados para EUR y JPY. Es interesante observar cómo la diferencia entre la divisa fuerte y la débil se relaciona con la tendencia actual y sus virajes. Podemos notar que también aquí podemos hablar de zonas de sobrecompra / sobreventa y sobre la identificación del Patrón №4 en el cierre de la vela después de la ruptura de estas zonas, lo que ha resultado en nuestro caso en la última captura.  En el último caso, si el tráder hubiera entrado en el mercado el 21 de octubre a las 11.00, como sugería el indicador, podría haber captado el comienzo de la tendencia, que no ha finalizado a día de hoy (1 de noviembre). 

De esta forma, el trabajo con el Patrón №4 en la etapa de realización constituye el trabajo con una orden habitual, y no con una cesta de órdenes, como en el caso del Patrón №3. Por consiguiente, podemos esperar una disminución considerable de la reducción. Podemos esperar un aumento del número de operaciones rentables (pero no de transacciones en general), puesto que el Patrón №4 aumenta la probabilidad de obtener beneficios. Recordemos que se puede aplicar un trailing stop y usar en general el instrumental habitual, puesto que solo hay una orden y se la puede acompañar de la forma común.

Es muy interesante la aplicación en perspectiva del Patrón №4 como filtro junto al Patrón №3. La entrada en el mercado con el Patrón №3 se ejecuta en todas las parejas de divisas de la cesta, y el filtro basado en el Patrón №4 podría perturbar algunas de ellas. De esta forma, existe la posibilidad de aproximarse al beneficio sumario del Patrón №3 en varias parejas, conservando las ventajas del Patrón №4. Sin embargo, se trata solo de mi teoría, puesto que no he podido comprobar esta unión de patrones en el comercio real.

Hacia el final de la descripción del patrón №4, describiremos las situaciones en las que el Patrón №4 da una señal falsa. Se trata de situaciones de mercado bastante comprensibles, cuando el movimiento del indicador combinado hacia los límites del diapasón y los consiguientes virajes tienen lugar a cuenta de otras parejas de divisas, y aquella pareja con la que el tráder quiere entrar en el mercado está precisamente inmóvil. Hay que recordar que en la cesta entran muchas parejas de divisas, y el indicador combinado da valores promediados, además, los eventos locales pueden empujar hacia otro lado precisamente aquella pareja con la que el tráder ha entrado en el mercado. En la descripción del Patrón №3 ya se ha hablado de esto. Para el Patrón №4 esta posibilidad también se conserva, solo que es bastante inferior.

Vamos a tratar de resumir lo que sabemos del patrón №4.

Puntos positivos:

  1. La posibilidad de obtener beneficios aumenta.
  2. Disminuye la reducción.
  3. Es bastante probable que el beneficio planeado se alcance en menor tiempo. Posiblemente esto no sea una ventaja en sí, sino un complemento a la conclusión de que aumenta la posibilidad de obtener beneficio. 
  4. El tráder no tendrá que tendrá que tratar con cestas de órdenes, sino con una orden. Por eso es sencillo acompañar la transacción. 

Puntos negativos:

  1. La situación cuya aparición es necesaria para identificar el Patrón №4 no sucede con toda la frecuencia que desearíamos.
  2. El beneficio sumario es menor. Esto es consecuencia de que el beneficio llegue solo por una orden. 

Vamos a intentar influir en el Patrón №4 para reducir la influencia de sus características negativas. Para ello, contestaremos a la pregunta siguiente: ¿es posible aumentar el número de transacciones cuando una divisa está muy débil y la otra está muy fuerte, aparte del Patrón №4? Posiblemente haya otro método de entrada en el mercado, aparte de la ruptura de los niveles de sobrecompra / sobreventa:

Entrada teniendo en cuenta la media. Patrón №5

Realmente, el uso de la media móvil es un método reconocido y alabado para analizar el mercado. Vemos multitud de indicadores y asesores que usan este principio. Hemos aceptado que en el WPR combinado funcionarán los niveles de sobrecompra / sobreventa. Lo mismo hemos reconocido como justo para la diferencia entre los valores de los dos WPR combinados. Por eso, no vemos motivos para no aplicar también este principio: añadir una media móvil a los gráficos de los indicadores.

Parece completamente obvio que se puede añadir una media móvil a los gráficos de detección de ambos patrones, tanto el tercero como el cuarto. El significado y la idea de la media móvil ya nos son bien conocidos, no los vamos a describrir. También se conocen perfectamente las ventajas y las desventajas de la media móvil: en particular, la inclinación al retardo. Tendiendo en cuenta los conocimientos disponibles,  el tráder puede analizar los resultados de la ubicación de la media móvil en los gráficos para identificar el Patrón №5:

El tráder recibe la señal de entrada en el mercado cuando el gráfico del indicador cruza la media móvil. El hecho del cruce se registra en el cierre de la vela del marco temporal actual.

Hay muchísimos cruces semejantes, sobre todo si usamos una media "rápida". Por consiguiente, el número de transacciones también aumentará. Aquí y en lo sucesivo, analizaremos la ubicación de la media móvil en el gráfico en el que se identifica el Patrón №4; en cambio, el uso de la media móvil en el gráfico con  el Patrón №3 se omitirá, por lo que los lectores podrá leer sobre el mismo de forma opcional.

Surge la pregunta: ¿cuán correcto es destacar el uso de la media móvil en un Patrón aparte? ¿Acaso su uso no constituye simplemente un filtro para el Patrón №4? En ningún caso, se trata precisamente de un patrón aparte. También existen excepciones, cuando la ruptura de los niveles de sobrecompra/sobreventa tiene lugar más o menos al mismo tiempo que el cruce de la media móvil con el gráfico. En este caso, tiene lugar un reforzamiento mutuo de los Patrones № 4 y 5, y es poco probable que sea correcto destacar entre ellos "el más importante". En el resto de los casos, el Patrón №4 es una situación independiente, que no tiene nada que ver con el cruce del gráfico y la media móvil (Patrón №5).

En cualquier caso, introducimos algunas normas:

  • Si el Patrón №5 "precede" al Patrón №4, es decir, es identificado en el intervalo desde los límites del diapasón hasta los niveles de sobrecompra / sobreventa, entonces con ese patrón no se comercia.
  • En estos casos, después de identificar el Patrón №5, se tomará la decisión de entrar en el mercado independientemente de si el Patrón №4 ha precedido al №5 o no.

En la segunda norma tendremos que deternernos con más detalle. Para analizar las posibles situaciones con el Patrón №5, crearemos otro indicador, el último de este artículo:

//+------------------------------------------------------------------+
//|                                                 testDistance.mq5 |
//|                                   2016 MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 2
#property indicator_plots   2

input int WPR       = 14; //Period WPR
input int maperiod  = 10; //Period MA
input color   clr   = clrGreen;
input color   clrMA = clrMagenta;


double ind[],ma[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int h,h1;
int OnInit()
  {
//--- indicator buffers mapping
      h = iCustom(NULL,0,"testWPR",WPR);
      if (h == INVALID_HANDLE) {
         Print("Error while creating testWPR");
         return (INIT_FAILED);
      }
      h1 = iCustom(NULL,0,"testWPRjpy",WPR);
      if (h1 == INVALID_HANDLE) {
         Print("Error while creating testWPRjpy");
         return (INIT_FAILED);
      }  
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);        
  
   IndicatorSetString(INDICATOR_SHORTNAME,"testWPRdistance");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPRdistance_");    
  
   ArraySetAsSeries(ma,true);  
   SetIndexBuffer(1,ma);
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE           );
   PlotIndexSetInteger(1, PLOT_LINE_STYLE, STYLE_SOLID            );
   PlotIndexSetInteger(1, PLOT_LINE_WIDTH, 1            );
   PlotIndexSetInteger(1, PLOT_LINE_COLOR, clrMA            );
   PlotIndexSetString (1, PLOT_LABEL, "Middle_Basket_line_MA" );    
//---
   return(INIT_SUCCEEDED);
  }
  
double GetValue(int shift)
  {
   double dBuf[1], dBuf1[1];
   double res=0.0;
   CopyBuffer(h,0,shift,1,dBuf);
   CopyBuffer(h1,0,shift,1,dBuf1);
   return (NormalizeDouble((dBuf[0] - dBuf1[0])/2, _Digits) );
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;//-maperiod;
  
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
      rt -= maperiod;  
      for (int i = 1; i< rt; i++)
        {
         ma[i] = GetMA(ind, i, maperiod, _Digits);
        }
     }
   else
     {
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
void OnDeinit(const int reason)
  {
   IndicatorRelease(h);
   IndicatorRelease(h1);
   string text;
   switch(reason)
     {
      case REASON_PROGRAM:
         text="Indicator terminated its operation by calling the ExpertRemove() function";break;
      case REASON_INITFAILED:
         text="This value means that OnInit() handler "+__FILE__+" has returned a nonzero value";break;
      case REASON_CLOSE:
         text="Terminal has been closed"; break;
      case REASON_ACCOUNT:
         text="Account was changed";break;
      case REASON_CHARTCHANGE:
         text="Symbol or timeframe was changed";break;
      case REASON_CHARTCLOSE:
         text="Chart was closed";break;
      case REASON_PARAMETERS:
         text="Input-parameter was changed";break;
      case REASON_RECOMPILE:
         text="Program "+__FILE__+" was recompiled";break;
      case REASON_REMOVE:
         text="Program "+__FILE__+" was removed from chart";break;
      case REASON_TEMPLATE:
         text="New template was applied to chart";break;
      default:text="Another reason";
     }
   PrintFormat("%s",text);
  }
//+------------------------------------------------------------------+

double GetMA(const double& arr[], int index , int period, int digit) {
   double m = 0;
   for (int j = 0; j < period; j++)  m += arr[index + j];
   m /= period;
   return (NormalizeDouble(m,digit));
}

Colocamos este indicador en la misma pareja y obtenemos estos resultados:


Aquí la media móvil se dibuja con una línea fina de color frambuesa. Ciertos segmentos que pueden ser identificados como poseedores del Patrón №5, se marcan con líneas verticales. Las líneas de color azul marcan la recepción de una señal de compra, las rojas, de venta. No resulta complicado notar que no se destacan ni mucho menos todos los puntos de cruce del gráfico de diferencia y la media móvil. Explicaremos esta situación sin olvidar las normas introducidas anteriormente.

Dividiremos el diapasón del indicador en varias zonas y formularemos definitivamente las normas para el Patrón №5:

  • Si el cruce de la media móvil y el gráfico del indicador se forma en el diapasón desde el límite del indicador hasta la zona de sobrecompra o sobreventa, esta señal será ignorada. Llamaremos a estos segmentos, Zona №0 (zona cero). Hay dos zonas de esta clase, como se indica en la captura de pantalla y como ya hemos mencionado.
  • Sobre el hecho de que aparezcan simultáneamente los Patrones № 4 y 5 y que sea una señal de refuerzo mutuo, también se ha hablado antes. A lo ya dicho, hay que añadir que si el tráder ha identificado el Patrón №4 (o los Patrones № 4 y 5) y ha entrado en el mercado, será mejor que piense en la posibilidad de ignorar todos los Patrones №5 posteriores hasta el momento en que salga del mercado con el Patrón №4.
  • Con el paso del tiempo, la divisa fuerte comenzará a debilitarse,  y la débil comenzará a fortalecerse. La situación podría no comenzar a desarrollarse precisamente de esta forma, es posible que una divisa siga debilitándose y que la fuerte comience a perder fuerza, o que suceda al contrario, que la fuerte continúe fortaleciéndose, y que la débil deje de debilitarse. En cualquier caso, el gráfico del indicador comenzará a apartarse de los límites del diapasón y de los niveles de sobrecompra / sobreventa. Comenzará el movimiento hacia el valor cero del indicador, lo que denota que cada divisa tiene aproximadamente la misma fuerza. Esto significará que la tendencia cesará paulatinamente e incluso es posible que haya un viraje de tendencia y se repita esta situación, pero con las partes opuestas. Este desarrollo de la situación proporciona al tráder la señal para salir del mercado. Ciertamente, si el tráder ha entrado en el mercado basándose en que la primera divisa está débil y la segunda fuerte, entonces es razonable salir del mercado cuando la primera y la segunda divisa tengan aproximadamente la misma fuerza, acercándose al valor cero del indicador. Tanto más, que es peligroso quedarse en el mercado cuando la primera divisa se fortalece y la segunda se debilita, es decir, cuando el gráfico del indicador cruce el nivel cero, la situación "virará". Llamaremos a la zona cercana al cero Zona №3. El tráder puede elegir por sí mismo los límites de esta zona; el autor prefiere el rango desde el diez por ciento (10%) hasta el menos diez por ciento (-10%). En esta zona, todos los Patrones №5 serán ignorados, y las transacciones abiertas anteriormente se contemplarán para el cierre, el cierre parcial y el paso a ausencia de pérdidas.
  • El Patrón №5 tiene solo dos zonas para el comercio real:
    • Zona №1 para el comercio de compra. En la última captura, estas transacciones están marcadas con líneas verticales. Cuanto más cerca esté colocado el Patrón №5 del límite entre las Zonas №1 y №0, mayor será la probabilidad de que el comercio con el patrón traiga beneficios.
    • Zona №2 para el comercio de venta. En la última captura, estas transacciones están marcadas con líneas verticales rojas. Aquí funciona la misma observación: cuanto más cerca del límite superior de la Zona №2, mayor será la probabilidad de obtener beneficios.

    Regla general esencial: Los Patrones №5 de compra que se han formado en la Zona №2, se ignoran. Y al contrario, los patrones №5 de venta que se han formado en la Zona №1, también se ignorarán.

Para terminar el análisis del Patrón №5, hay que decir que aquí se conserva el mismo peligro que en el Patrón №4:

  • La aparición del Patrón №5 puede estar relacionada con una pareja de divisas distinta a la que el tráder quiere usar para entrar en el mercado. En otras palabras, el riesgo de obtener un resultado negativo seguirá estando presente, aunque hemos tratado de contemplar todas las posibilidades de minimizarlo.

Algunos momentos generales

Todos los patrones mencionados tienen algo común: la ruptura de los niveles de sobrecompra / sobreventa, que se registra al cerrarse la vela del marco temporal actual. Supongamos que registramos la ruptura del nivel de sobrecompra. El nivel se ubica a un 60% en la venta del WPR combinado. Bien, el gráfico del indicador ha crecido hasta un 61.5%, y después ha caído, y en el cierre de la vela se ha registrado un 59%. ¿Consideramos esto una ruptura o no? Desde un punto de vista técnico, las normas se han respetado, pero, ¿merece la pena comerciar según un patrón tan diminuto?

Otra situación que se encuentra con mayor frecuencia de lo que se podría esperar: cuando en el mercado se forma una vela con un cuerpo grande y el valor del indicador de cierre de la vela resulta en la zona del cero, e incluso junto al límite opuesto del diapasón. Aquí también podemos ver una situación cuando hay una ruptura técnica, pero, ¿merece la pena comerciar con ese patrón?

Resulta que merece la pena comerciar con los patrones que sean notorios para todos, sin discusión ni dudas. En otras palabras, podemos intentar aplicar aquí la verdad utilizada para construir las líneas de apoyo/resistencia: estas líneas deberán ser obvias para el resto. Aplicado al caso anterior, podríamos haber considerado la ruptura del nivel de sobrecompra en el caso de que el valor del indicador bajase desde un nivel aproximado del 70% hasta el 55%-45%. En este caso, la ruptura del nivel habría sido completamente obvia. Además, existe una posibilidad para el movimiento en la dirección de la zona cero, donde podemos cerrar o bien tomar otra decisión.

Lo mismo es justo para el cruce del gráfico del indicador con la media móvil. Este cruce deberá suceder en la zona necesaria y ser claro y notorio, podríamos incluso decir, "bonito". Si el gráfico del indicador comienza a desplazarse en las cercanías de la media móvil, rebasándola ligeramente en una dirección y después en otra, tiene sentido pensar que hay que omitir este patrón.

En otras palabras, los patrones inseguros o discutibles se deben contemplar como patrones de alto riesgo, y deberán ser omitidos. Sin embargo, todo lo dicho en los tres párrafos anteriores constituye la opinión personal del autor: su punto de vista sobre el mercado. Por consiguiente, no se deberá admitir de ninguna forma como axioma.


Conclusión

Todo lo escrito aquí usando como ejemplo el indicador WPR combinado será también justo para otros indicadores combinados que toman osciladores como base. Esto nos proporciona unos niveles de sobrecompra / sobreventa claros, pero también conserva las limitaciones propias de los osciladores. Por consiguiente, es pronto para poner punto final, puesto que existen muchos otros instrumentos interesantes que se pueden usar en el comercio con cestas de parejas de divisas.

Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/2816

Archivos adjuntos |
monitor.zip (855.82 KB)
pattern3.zip (137.12 KB)
testWPR.zip (15.36 KB)
testWPRjpy.ex5 (14.86 KB)
testDistance.zip (13.37 KB)
testDistanceMA.zip (16.56 KB)
Localización automática de extremos basada en un salto de precio establecido Localización automática de extremos basada en un salto de precio establecido
Al automatizar estrategias comerciales que usen modelos gráficos, es necesario encontrar los extremos en los gráficos para su posterior procesamiento e interpretación. Los instrumentos existentes no siempre dan la posibilidad de hacer esto. Los algoritmos presentados en el artículo permiten encontrar todos los extremos en los gráficos. Los instrumentos desarrollados son igualmente efectivos tanto para trabajar en el mercado de tendencia, como para el movimiento lateral. Los datos obtenidos dependen en poca medida del marco temporal elegido, y se definen solo por la escala establecida.
Distribuciones estadísticas en forma de histogramas sin búferes de indicador y matrices Distribuciones estadísticas en forma de histogramas sin búferes de indicador y matrices
En el artículo se estudia la posibilidad de crear los histogramas de las distribuciones estadísticas de las características del mercado usando memoria gráfica, es decir, sin usar búferes de indicador y matrices. Se adjuntan ejemplos detallados de la construcción de este tipoo de histogramas y se muestra la llamada funcionalidad "oculta" de los objetos gráficos del lenguaje MQL5.
Cómo desarrollar y poner a prueba una estrategia de opciones binarias en el Simulador de Estrategias de MetaTrader 4 Cómo desarrollar y poner a prueba una estrategia de opciones binarias en el Simulador de Estrategias de MetaTrader 4
Guía de desarrollo de estrategias para opciones binarias y su correspondiente simulación en el Simulador de Estrategias de MetaTrader 4, usando la utilidad Binary-Options-Strategy-Tester del Mercado en MQL5.com.
Oscilador universal con interfaz gráfica Oscilador universal con interfaz gráfica
En el artículo se describe la creación de un indicador universal basado en todos los osciladores del terminal con una interfaz gráfica propia. Esto permitirá cambiar de forma rápida y cómoda los parámetros de cada oscilador por separado, directamente desde la ventana del gráfico (y sin abrir la ventana de propiedades), comparar sus índices y elegir el óptimo para usted para una tarea concreta.