Indicadores: Indicador de ticks ZoomPrice

 

Indicador de ticks ZoomPrice:

Muestra el gráfico del precio de cualquier nivel de escala.

Autor: fxsaber

 
Automated-Trading:

Tick indicador ZoomPrice:

Autor: fxsaber

¿Se puede mover el indicador a la ventana del gráfico sin marco o ralentizará el terminal?

y también es posible hacer líneas [marrón, azul, rojo] conmutable en la configuración?

 
 
sober:

¿Se puede mover el indicador a la ventana del gráfico sin marco o ralentizará el terminal?

Se trata de un objeto gráfico interactivo, algunas de cuyas propiedades se modifican (por ejemplo, las coordenadas) mediante CTRL+B (será visible como Gráfico si pulsa "Todo"). Por lo tanto, puede hacer con él todo lo que puede hacer con los objetos gráficos estándar. En particular, colocarlo en cualquier ventana (subventana).

La breve fuente EA de la descripción hace precisamente eso.

en esta variante puede cambiar el gráfico a otros símbolos, y el objeto seguirá mostrando el símbolo en el que fue creado originalmente.

¿y también puede hacer que las líneas [marrón, azul, rojo] sean conmutables en los ajustes?

Estas líneas llevan cierta información

  • marrón (por defecto) - la línea vertical muestra la posición temporal en la posición del cursor, la línea horizontal muestra el precio.
  • azul (por defecto) - muestra el precio de oferta en la posición del cursor. Al mismo tiempo, la hora de este tick y el spread se muestran a la derecha (a lo largo de la escala vertical).
  • rojo (por defecto) - lo mismo para el precio de venta.
No es posible eliminar estas líneas a través de los parámetros de entrada. La línea marrón se puede "eliminar" configurando el color de la Cruz como Ninguno. Del mismo modo, se puede hacer con las líneas Bid/Ask, pero afectará a la visibilidad de las líneas discontinuas históricas correspondientes.
 
fxsaber:

Se trata de un objeto gráfico interactivo, algunas de cuyas propiedades se modifican (por ejemplo, las coordenadas) mediante CTRL+B (será visible como Gráfico si pulsa "Todo"). Por lo tanto, puede hacer con él las mismas cosas que con los objetos gráficos estándar.

También es posible desactivar la escala vertical y colocar el objeto sobre el fondo del gráfico.

Así, puede obtener, por ejemplo, un gráfico de tick de fondo (histórico/en tiempo real) de escala variable.

En general, la forma de utilizar este objeto es cuestión de imaginación.

 

Por defecto, "Mostrar niveles de negociación (niveles de posiciones abiertas, Stop Loss, Take Profit y órdenes pendientes) en el gráfico" está desactivado en un gráfico de tick.

Pero habilitar este modo a veces es útil

En la pantalla puede ver claramente que se abrió una posición de VENTA y que el precio de compra (penúltima barra) cayó por debajo del nivel de TP. Sin embargo, queda claro por qué no se activó el TP: el precio de venta (línea roja discontinua) no alcanzó el TP.


La visualización se puede activar editando el código fuente

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // Mostrar niveles de negociación (niveles de posiciones abiertas, Stop Loss, Take Profit y órdenes pendientes) en el gráfico.

en esta línea debe reemplazar false por true. O, si desea que el gráfico de ticks tenga la misma configuración que el gráfico principal, comente esta línea.
.

 
fxsaber:

Por defecto, "Mostrar niveles de negociación (niveles de posiciones abiertas, Stop Loss, Take Profit y órdenes pendientes) en el gráfico" está desactivado en un gráfico de tick.

Pero habilitar este modo a veces es útil

En la pantalla puede ver claramente que se abrió una posición de VENTA y que el precio de compra (penúltima barra) cayó por debajo del nivel de TP. Sin embargo, queda claro por qué no se activó el TP: el precio de venta (línea roja discontinua) no alcanzó el TP.


La visualización se puede activar editando el código fuente

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // Mostrar niveles de negociación (niveles de posiciones abiertas, Stop Loss, Take Profit y órdenes pendientes) en el gráfico.

en esta línea debe reemplazar false por true. O, si desea que el gráfico de ticks tenga la misma configuración que el gráfico principal, comente esta línea.
.

El primer indicador de tick "fxsaber" es más funcional y conveniente. Usted podría superponer indicadores estándar en la parte superior de la ventana del gráfico. Puedes aplicar 'scale by pips per bar' al gráfico. Todo está claro. En el mismo indicador 'zoomprice' todo salta y se desliza, mientras lo ajustas a ti mismo pasarán cien años. Cruces y líneas azules y rojas son superfluas en absoluto, sólo te distraen.

La única ventaja de "zoomprice" es que parece más rápido que "fxsaber".

 
sober:

El primer indicador de tick "fxsaber" es más funcional y cómodo. Los indicadores estándar podían superponerse sobre él en la ventana del gráfico. Era posible aplicar 'escala por pips por barra' al gráfico. Todo está más claro.

Soy un usuario de terminal débil, así que no soy consciente de lo que necesitan los avanzados. Sería útil saber cómo se utiliza. Por ejemplo, el modo 'escala por puntos por barra' nunca lo he activado y no sé cómo puede ser útil. En general, por favor, comparte tu experiencia.

En el mismo indicador "zoomprice" todo salta y se desliza, mientras lo ajustas por ti mismo pasarán cien años.

Nada debe saltar y deslizarse. Comprender la interfaz de interacción. Es muy intuitivo, como me pareció a mí. Yo ajusto la escala con el ratón. Si alguien tiene problemas con ella, por favor, que lo diga. Hasta ahora, sólo tengo una insatisfacción.

Para entender cómo establecer la misma configuración para un objeto, aquí está un ejemplo EA.

input int exX = 50;       // Coordenada X
input int exY = 50;       // Coordenada Y
input int exWidth = 450;  // Anchura
input int exHeight = 300; // Altura

input bool exShowGrid = true;            // Rejilla
input color exColorBackGround = clrSnow; // Color de fondo
input bool exTradeLevels = true;         // Pedidos
input bool exPriceScale = true;          // Baremo de precios

#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>

// CHARTOBJECT_ZOOMPRICE ChartObject;
CHARTOBJECT* ChartObject;

void OnInit( void )
{
  ChartObject = new CHARTOBJECT_ZOOMPRICE; // Crear objeto ZoomPrice
  
  // Es posible establecer y leer las propiedades de cualquier objeto a partir de enumeraciones (F1 - ayuda)
  // ENUM_OBJECT_PROPERTY_INTEGER, ENUM_OBJECT_PROPERTY_DOUBLE, ENUM_OBJECT_PROPERTY_DOUBLE
  // ENUM_CHART_PROPERTY_INTEGER, ENUM_CHART_PROPERTY_DOUBLE, ENUM_CHART_PROPERTY_STRING
  
  // Escribir propiedades mediante ChartObject.SetProperty
  ChartObject.SetProperty(OBJPROP_XDISTANCE, exX);  // Distancia en píxeles a lo largo del eje X desde el ángulo de ajuste
  ChartObject.SetProperty(OBJPROP_YDISTANCE, exY);  // Distancia en píxeles a lo largo del eje Y desde el ángulo de ajuste

  ChartObject.SetProperty(OBJPROP_XSIZE, exWidth);  // Anchura del objeto a lo largo del eje X en píxeles.
  ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // Altura del objeto a lo largo del eje Y en píxeles.
  
  ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid);               // Mostrar la cuadrícula en el gráfico
  ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // El color de fondo del gráfico
  ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels);    // Mostrar niveles de negociación (niveles de posiciones abiertas, Stop Loss, Take Profit y órdenes pendientes) en el gráfico.
  ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale);         // Signo de visualización de la escala de precios para el objeto "Gráfico

#define TOSTRING(A) #A + " = " + (string)(A)
  
  // Leer propiedades mediante ChartObject.GetProperty
  Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
  Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}

void OnDeinit( const int Reason )
{
  delete ChartObject; // Borrar el objeto gráfico
}

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  EVENTBASE::MyEvent(id, lparam, dparam, sparam); // Necesidad de interactividad de los objetos
}

void OnTimer( void )
{
  EVENTBASE::MyEventTimer(); // Necesidad de interactividad de los objetos
}

void OnTick( void )
{
  EVENTBASE::MyEventTick(); // Necesidad de interactividad de los objetos
}

Crosshair y líneas azules y rojas son superfluas en absoluto, sólo distraen.

Para desactivar las líneas y el texto, es necesario encontrar una función en las fuentes

  void SetTextCross( const int X, const int Y )
  {
    if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
      return;

    const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
                                    ((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
                                     this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));

    this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
    this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

    this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

    this.SetTextPrices(TimeCross, Y);

    return;
  }

y comentar su cuerpo.

  void SetTextCross( const int X, const int Y )
  {
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;

const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
este.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5)));

this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

this.SetTextPrices(TimeCross, Y);
*/.

    return;
  }

Para desactivar las cruces, es necesario encontrar las líneas

        this.HLineCross = price;
        this.VLineCross = time;

y comentarlas

// this.HLineCross = precio;
// this.VLineCross = tiempo;

La única ventaja de "zoomprice" es que parece ser más rápido que "fxsaber".

ZoomPrice puede ser una gran adición a Ticks - le permite profundizar en lo que Ticks está mostrando. Después de escribir ZoomPrice, yo mismo dejé de usar Ticks.

Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • votos: 19
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.
 

He aquí un ejemplo

Necesito superponer otro indicador de cuadrícula sobre el indicador ZoomPrice para determinar visualmente cuántos pips ha recorrido el precio. Entre líneas azules vecinas 40 pips, entre líneas naranjas vecinas 200 pips. No necesito retículas, sólo niveles de rejilla vinculados a la escala. Un vistazo es suficiente para evaluar la situación. Y las líneas naranjas de la cuadrícula son números redondos del gráfico, si la línea está en el valor del gráfico de 1,10900, entonces no importa cómo cambiemos la escala, la línea no cambiará su valor.

Intenté poner un indicador de rejilla encima de ZoomPrice y vincular las líneas a la escala, nada funcionó. Tengo poca comprensión de código.

He comentado todo lo innecesario, ahora queda hacer la rejilla y quedará perfecto.

La escala por puntos por barra se pone en la pestaña: propiedades>>general

 
sober:

He intentado superponer un indicador de cuadrícula sobre ZoomPrice y vincular las líneas a la escala, nada funcionó. No soy muy bueno con el código.

He comentado todas las cosas innecesarias, ahora sólo necesito hacer una rejilla y será perfecto.

Puedes hacer una rejilla horizontal colgando un indicador correspondiente en este objeto gráfico. Pero esto, digamos, no es trivial para una persona que no entiende código.

La escala por puntos por barra se configura en la pestaña: propiedades>>general

ZoomPrice es el único indicador en los 16 años de historia de MQ que permite hacer CUALQUIER nivel de escala. Es decir, no seis escalas claramente definidas, sino la que usted desee. Esto requirió algunas soluciones no estándar (esta es la razón por la que el objeto no tiene una escala horizontal). Y es debido a estas soluciones no estándar que ZoomPrice tiene algunas limitaciones que no permiten superponer ciertos tipos de indicadores sobre el objeto (esto no se aplica a la cuadrícula horizontal). Y establecer otro tipo de zoom es algo en lo que tengo que pensar. Aún no he entendido qué es "escala por puntos por barra", incluso después de leer la Ayuda.

De hecho, sin entenderlo tú, has tocado el tema del comportamiento correcto de los indicadores. Debido a la posible presencia de objetos OBJ_CHART, puedes lanzar un indicador no sobre el propio gráfico, sino sobre el objeto OBJ_CHART. Y es lógico en este caso ejecutar el indicador exactamente en OBJ_CHART, no en el gráfico principal.

Por favor, proporcione un enlace a un indicador con una cuadrícula horizontal. A ver qué se te ocurre.

 
fxsaber:


Envíame un enlace a un indicador con una cuadrícula horizontal. A ver qué se nos ocurre.

Indicador https://www.mql5.com/es/code/14916
PriceGrid
PriceGrid
  • votos: 17
  • 2016.02.29
  • Nikolay Kositsin
  • www.mql5.com
Индикатор строит ценовую сетку из округленных на несколько порядков уровней.