¿Puede alguien decirme cómo escribir lo siguiente?
Hice un indicador de entrenamiento, que cuenta iVolume para cada tick: iVolume es positivo para los que se movieron hacia arriba, y iVolume es negativo para los que se movieron hacia abajo. Para hacer una curva, todo el iVolumen (positivo y negativo) lo sumo aumentando el total de barra a barra. Se obtiene una curva. Sin embargo, me encontré con dos problemas:
1) la línea resulta muy rota;
2) es imposible probar el Asesor Experto, porque el gráfico iVolume obtenido sólo tiene una vida real.
Pregunta:
1) ¿cómo describir el código que permite construir un gráfico basado en los datos promediados que escribo en el buffer?
2) ¿Es posible escribir los datos de este indicador (que se reciben en el modo real) en un archivo determinado, para que después, refiriéndose a este archivo, podamos construir el indicador sobre los datos históricos, aplicándoles los volúmenes de ticks ya recogidos? Si es posible, ¿cómo describirlo programáticamente? ¿O hay otra solución que no requiera escribir la información actual del iVolume en un archivo?
#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22datetime Время=0; // Время прошлого бараdouble Bid1;
double Buf_1[];
long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогомvoidOnInit()
{
IndicatorDigits(0);
SetIndexBuffer(0,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1=Bid;
V5 = 0;
}
//+------------------------------------------------------------------+//| 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[])
{
datetime Вр=Time[0]; // Время текущего бараif(Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
if(Bid >= Bid1)
{
if(Bid > Bid1)
{
V1 = iVolume(NULL, 0, 0); // если повышающий цену тик
V2 = V1 + V2;
}
else
{
V1 = 0; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2 = V1 + V2;
}
}
else
{
V3 = iVolume(NULL, 0, 0); // если понижающий цену тик
V4 = V3 + V4;
}
V5 = V2-V4;
Bid1=Bid;
Buf_1[0]= V5; // в буфер сгружаем return(rates_total);
}
YarTrade: ¿es posible escribir los datos de este indicador (que se obtienen en modo real) en un archivo, para que después, refiriéndose a este archivo, sea posible construir un indicador sobre datos históricos, aplicando a éste los volúmenes de ticks ya recogidos? Si es posible, ¿cómo describirlo programáticamente? ¿O hay otra solución que no requiera escribir la información actual de iVolume en el archivo?
Indicador basado en datos de un archivo - introdujo esta línea en la búsqueda y encontró
Hola a todos. Amigos, ¿podrían ayudarnos un poco? ¿Podría alguien poner una línea en el indicador donde se pueda especificar el nombre del archivo de sonido, para que la línea se muestre en la configuración del indicador?
¿Puede alguien decirme cómo escribir lo siguiente?
Hice un indicador de entrenamiento, que cuenta iVolume para cada tick: iVolume es positivo para los que se movieron hacia arriba, y iVolume es negativo para los que se movieron hacia abajo. Para hacer una curva, todo el iVolumen (positivo y negativo) lo sumo aumentando el total de barra a barra. Se obtiene una curva. Sin embargo, me encontré con dos problemas:
1) la línea resulta muy rota;
2) es imposible probar el Asesor Experto, porque el gráfico iVolume obtenido sólo tiene una vida real.
Pregunta:
1) ¿cómo describir el código que permite construir un gráfico basado en los datos promediados que escribo en el buffer?
2) ¿Es posible escribir los datos de este indicador (que se reciben en el modo real) en un archivo determinado, para que después, refiriéndose a este archivo, podamos construir el indicador sobre los datos históricos, aplicándoles los volúmenes de ticks ya recogidos? Si es posible, ¿cómo describirlo programáticamente? ¿O hay otra solución que no requiera escribir la información actual del iVolume en un archivo?
Tal vez añadir al final del código:
double macurrent=iMAOnArray(Buf_1[0],0,5,0,MODE_LWMA,0);
¡Eh, no! El compilador genera el error diciendo que no hay ningún array.
Anyone....., ¿puede ayudar? Mi callejón sin salida para mí se expone aquí:https://www.mql5.com/ru/forum/160683/page378#comment_6053255
Indicador basado en datos de un archivo - introdujo esta línea en la búsqueda y encontró
Una especie de pesadilla, no entiendo por qué da así:
Sección del código :
line[0]=MathFloor(Low[1]*MathPow(10,D-1));
Print("Var ",DoubleToStr(line[0],D));
Print("Code ",DoubleToStr(MathFloor(Low[1]*MathPow(10,D-1)),D));
Output :
EURUSD,M15: Var 0.00000
EURUSD,M15: Código 11754.00000
¿Qué ocurre con el valor después de la asignación?
line[0]=MathFloor(Low[1]*MathPow(10,D-1));
Print("Var ",DoubleToStr(line[0],D));
Print("Code ",DoubleToStr(MathFloor(Low[1]*MathPow(10,D-1)),D));
Print :
EURUSD,M15: Var 0.00000
EURUSD,M15: Código 11754.00000
¿Qué ocurre con el valor después de la asignación?
Imprime el valor de las variables después de la asignación y el valor de la variable D. Utiliza tu calculadora para hacer las cuentas.
Hola a todos. Amigos, ¿podrían ayudarnos un poco? ¿Podría alguien poner una línea en el indicador donde se pueda especificar el nombre del archivo de sonido, para que la línea se muestre en la configuración del indicador?
Imprime los valores de las variables después de la asignación y el valor de la variable D. Calculémoslo en una calculadora...
Así que imprimo el valor de la variable después de la asignación. Así que el código es básicamente el siguiente:
a=b;
Imprime (a);
Imprimir (b);
Pero a es igual a cero y b se imprime correctamente
Así es como emito el valor que se asigna. Así que el código es esencialmente el siguiente:
a=b;
Imprime (a);
Imprimir (b);
Pero a es igual a cero mientras que b se imprime correctamente
No veo el cero, te has equivocado en alguna parte