Fijar el indicador en el gráfico. Obtiene el primer valor de bid1 en el primer tick. Recuérdalo (yo lo hice - introduzco el segundo buffer y[0] y registro su valor en init()).
En el segundo tick obtenemos el segundo valor de bid2.
Entonces tenemos que conseguir la diferencia de puntos. delta=bid1-bid2 (yo lo hice así: delta=x[0]-x[1]).
Ahora añade delta a y[0] y obtiene el valor de y[1], que en realidad corresponde al valor de bid2.
La curva del indicador debería ser idéntica a la que buscamos, pero se traza utilizando los valores calculados de las diferencias de oferta.
Este indicador es necesario como plantilla para los cálculos posteriores.
No tires piedras. Se lo expliqué lo mejor que pude.
Intentaré explicarlo. Pero ten en cuenta que soy un programador novato, prácticamente.
Tenemos un indicador de tick, que construye una curva por valores de oferta.
Ahora lo que quiero hacer.
Fijar el indicador en el gráfico. Obtiene el primer valor de bid1 en el primer tick. Recuérdalo (yo lo hice: introduje el segundo buffer y[0] y prescribí su valor en init()).
En el segundo tick obtenemos el segundo valor de bid2.
Entonces tenemos que conseguir la diferencia de puntos. delta=bid1-bid2 (yo lo hice así: delta=x[0]-x[1]).
Ahora añade delta a y[0] y obtén el valor de y[1] que realmente corresponde al valor de bid2.
La curva del indicador debería ser idéntica a la que buscamos, pero se traza utilizando los valores calculados de las diferencias de oferta.
Este indicador es necesario como plantilla para los cálculos posteriores.
No tires piedras. Intenté explicarlo lo mejor que pude.
Gracias.
No está claro lo que quiere hacer
Este es el problema general - usted utiliza los buffers de los indicadores como un array para almacenar los ticks (Bid), el tamaño del buffer de los indicadores cambia el propio terminal, y además - el propio terminal desplaza los buffers de los indicadores al aparecer una nueva barra
debe utilizar un array para almacenar los ticks, y utilizar un buffer de indicador para dibujar
He creado un código similar al tuyo, donde guardo los ticks en un array
#property indicator_separate_window#property indicator_buffers1#property indicator_plots1//--- plot Label1#property indicator_label1"Label1"#property indicator_type1DRAW_LINE#property indicator_color1clrRed#property indicator_style1STYLE_SOLID#property indicator_width11//--- input parametersinputint TickCount=10; //Размер массива тиков//--- indicator buffersdouble Label1Buffer[];
double TickArr[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
ArrayResize(TickArr,TickCount); //изменим размер массиваArrayInitialize(TickArr,SymbolInfoDouble(_Symbol,SYMBOL_BID)); // проинициализируем массив значением текущего Bid//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
for(int i=ArraySize(TickArr)-1;i>0;i--)
{
TickArr[i] = TickArr[i-1]; // сдвинули массив
}
TickArr[0] = SymbolInfoDouble(_Symbol,SYMBOL_BID); // в 0-й элемент массива запомнили новый Bid//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Ahora, debes añadir tu cálculo a este código y dibujarlo usando el buffer del indicador Label1Buffer según tu idea
Estaría bien que añadieran la posibilidad de cambiar las propiedades de otro indicador mediante programación. A grandes rasgos, después de añadir (mediante programación) otro indicador al gráfico, se puede establecer su color, estilo y grosor de las líneas
aquí está el problema exacto - usted utiliza los búferes de los indicadores como una matriz para almacenar los ticks (Bid), el tamaño del búfer de los indicadores cambia el propio terminal, y además - el propio terminal cambia los búferes de los indicadores cuando aparece una nueva barra
debe utilizar un array para almacenar los ticks, y utilizar un buffer de indicador para dibujar
He creado un código similar al tuyo, donde guardo los ticks en un array
Ahora, tienes que añadir tu cálculo a este código y dibujarlo usando el buffer del indicador Label1Buffer, según tu idea
Yevhenii Levchenko: Estaría bien que añadieran la posibilidad de cambiar las propiedades de otro indicador mediante programación. A grandes rasgos, tras añadir (mediante programación) otro indicador al gráfico, se puede establecer el color, el estilo y el grosor de las líneas
Para dibujar usando buffers de indicadores en MQL, significa poner un valor en el buffer de indicadores - en mi ejemplo, es Label1Buffer (asignar un valor)
¿en su ejemplo asigna valores sólo cuando se cumple una condición y si la condición no se cumple? - Así que no se imprimirá nada.
Y de nuevo, he creado una "plantilla" donde el array TickArr contiene los valores de los ticks Bid, pero en tus condiciones utilizas los valores anteriores del buffer del indicador - ¿y quién puso qué valores en estos buffers?
Trata de dibujar una línea por el buffer del indicador, entonces compararás los ticks.
Si dices que eres prácticamente un cero en programación, entonces ¿por qué te encargas de tareas tan poco habituales, quizás deberías empezar por las más sencillas? ¿O para mejorar su conocimiento de los fundamentos? Es más fácil que te lo hagan, sí.
Para dibujar usando buffers de indicadores en MQL, significa poner un valor (asignar un valor) al buffer de indicadores - en mi ejemplo, el Label1Buffer
¿en su ejemplo asigna valores sólo cuando se cumple una condición y si la condición no se cumple? - Así que no se imprimirá nada.
Y de nuevo, he creado una "plantilla" donde el array TickArr contiene los valores de los ticks Bid, pero en tus condiciones utilizas los valores anteriores del buffer del indicador - ¿y quién puso qué valores en estos buffers?
Trate de dibujar una línea por el buffer del indicador, y luego comparará los ticks.
Intenta formular la pregunta de otra manera, puede que tu pregunta no sea clara
Intentaré explicarlo. Pero ten en cuenta que no soy un programador, prácticamente.
Tenemos un indicador de tick que construye una curva por valores de oferta.
Ahora lo que quiero hacer.
Fijar el indicador en el gráfico. Obtiene el primer valor de bid1 en el primer tick. Recuérdalo (yo lo hice - introduzco el segundo buffer y[0] y registro su valor en init()).
En el segundo tick obtenemos el segundo valor de bid2.
Entonces tenemos que conseguir la diferencia de puntos. delta=bid1-bid2 (yo lo hice así: delta=x[0]-x[1]).
Ahora añade delta a y[0] y obtiene el valor de y[1], que en realidad corresponde al valor de bid2.
La curva del indicador debería ser idéntica a la que buscamos, pero se traza utilizando los valores calculados de las diferencias de oferta.
Este indicador es necesario como plantilla para los cálculos posteriores.
No tires piedras. Se lo expliqué lo mejor que pude.
Gracias.
Intentaré explicarlo. Pero ten en cuenta que soy un programador novato, prácticamente.
Tenemos un indicador de tick, que construye una curva por valores de oferta.
Ahora lo que quiero hacer.
Fijar el indicador en el gráfico. Obtiene el primer valor de bid1 en el primer tick. Recuérdalo (yo lo hice: introduje el segundo buffer y[0] y prescribí su valor en init()).
En el segundo tick obtenemos el segundo valor de bid2.
Entonces tenemos que conseguir la diferencia de puntos. delta=bid1-bid2 (yo lo hice así: delta=x[0]-x[1]).
Ahora añade delta a y[0] y obtén el valor de y[1] que realmente corresponde al valor de bid2.
La curva del indicador debería ser idéntica a la que buscamos, pero se traza utilizando los valores calculados de las diferencias de oferta.
Este indicador es necesario como plantilla para los cálculos posteriores.
No tires piedras. Intenté explicarlo lo mejor que pude.
Gracias.
No está claro lo que quiere hacer
Este es el problema general - usted utiliza los buffers de los indicadores como un array para almacenar los ticks (Bid), el tamaño del buffer de los indicadores cambia el propio terminal, y además - el propio terminal desplaza los buffers de los indicadores al aparecer una nueva barra
debe utilizar un array para almacenar los ticks, y utilizar un buffer de indicador para dibujar
He creado un código similar al tuyo, donde guardo los ticks en un array
Ahora, debes añadir tu cálculo a este código y dibujarlo usando el buffer del indicador Label1Buffer según tu idea
no está claro lo que quiere hacer
aquí está el problema exacto - usted utiliza los búferes de los indicadores como una matriz para almacenar los ticks (Bid), el tamaño del búfer de los indicadores cambia el propio terminal, y además - el propio terminal cambia los búferes de los indicadores cuando aparece una nueva barra
debe utilizar un array para almacenar los ticks, y utilizar un buffer de indicador para dibujar
He creado un código similar al tuyo, donde guardo los ticks en un array
Ahora, tienes que añadir tu cálculo a este código y dibujarlo usando el buffer del indicador Label1Buffer, según tu idea
Gracias por responder. Te torturaré un poco más.
¿Agrego el cálculo aquí?
Este es mi cálculo.
Lo añadí y nada.
Estaría bien que añadieran la posibilidad de cambiar las propiedades de otro indicador mediante programación. A grandes rasgos, tras añadir (mediante programación) otro indicador al gráfico, se puede establecer el color, el estilo y el grosor de las líneas
Utiliza Canvas y dibuja caricaturas.
Adjuntaré una foto más.
Añadido y nada.
no es así como funciona ))))
Para dibujar usando buffers de indicadores en MQL, significa poner un valor en el buffer de indicadores - en mi ejemplo, es Label1Buffer (asignar un valor)
¿en su ejemplo asigna valores sólo cuando se cumple una condición y si la condición no se cumple? - Así que no se imprimirá nada.
Y de nuevo, he creado una "plantilla" donde el array TickArr contiene los valores de los ticks Bid, pero en tus condiciones utilizas los valores anteriores del buffer del indicador - ¿y quién puso qué valores en estos buffers?
Trata de dibujar una línea por el buffer del indicador, entonces compararás los ticks.
Adjuntaré una foto más.
¿Y si el ángulo se invierte? ¿Cómo se haría el cálculo?
Adjuntaré una foto más.
eso no va a funcionar ))))
Para dibujar usando buffers de indicadores en MQL, significa poner un valor (asignar un valor) al buffer de indicadores - en mi ejemplo, el Label1Buffer
¿en su ejemplo asigna valores sólo cuando se cumple una condición y si la condición no se cumple? - Así que no se imprimirá nada.
Y de nuevo, he creado una "plantilla" donde el array TickArr contiene los valores de los ticks Bid, pero en tus condiciones utilizas los valores anteriores del buffer del indicador - ¿y quién puso qué valores en estos buffers?
Trate de dibujar una línea por el buffer del indicador, y luego comparará los ticks.
Advertí que soy un hacker).
Lo hice así.
Ahora dibuja el gráfico de ticks pero hay algunos cortes de línea.
Voy a hacer un 4.