[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 875

 
reag:

Sí, la primera opción no funciona, aunque estoy trabajando en un marco temporal no estándar, la segunda sí. Gracias a todos.


La primera opción funciona - al menos 20 días en una cuenta de demostración (no más tiempo para comprobar) y en el probador en la historia durante 10 años

ZS: Bueno, si no funciona, no funciona :)

 
IgorM:


la primera opción funciona - al menos 20 días en una cuenta de demostración (no más tiempo para comprobar) y en el probador en la historia durante 10 años

ZS: bueno, no trabajar significa no trabajar :)

El primero funciona en una cuenta real. Para mí funciona probablemente porque la ventana del gráfico es muy grande. Probablemente funciona porque la ventana del gráfico es muy grande y no llega al máximo... pero tal vez el EA es así - lo hará bien... :)
 
Andrei01:
no da miedo en la demo. :) pero en el sitio real, probablemente es mejor no arriesgarse y hacerlo normalmente ... Probablemente funciona porque la ventana del gráfico es muy grande y no llega al máximo ... pero tal vez el EA es así - que va a hacer bien ... :)


no realmente - contando el número de barras puedo "no perder" el momento de la carga de la historia - y en estos momentos, es mejor esperar un poco, la historia no sólo se carga al final de TF, pero a veces se carga el principio de TF también - ok, es un gran secreto shhhhhhhh

:)

 
IgorM:


no es así - contando el número de barras puedo "no perder" el momento de la carga de la historia - y en estos momentos, es mejor esperar un poco, la historia no sólo se carga al final de TF, pero a veces el comienzo de TF también se carga - ok, este es un gran secreto shhhhhhhh

:)


Resulta que la segunda variante tampoco funciona... ¡Los números de barra en la matriz de indicadores no cambian de todos modos! Entiendo que se debe a que el plazo no es estándar. Está formado por el estándar Period_Converter_Opt, lo consigo de M1 a M2, cuando abro M2 las barras son iguales a la mitad de la barra Max en la ventana, y cuando llego al valor de la barra Max en la ventana, la fomación del array SetIndexBuffer se detiene...((
 
reag:

Resulta que la segunda opción tampoco funciona... ¡los números de barra en la matriz de indicadores no cambian de todos modos! Supongo que se debe a que el plazo no es estándar. Está formado por el estándar Period_Converter_Opt, lo consigo de M1 a M2, cuando abro M2 las barras son iguales a la mitad de la barra Max en la ventana, y cuando llego al valor de la barra Max en la ventana, la fomación del array de índices SetIndexBuffer se detiene...((


¿pero al menos algunos parámetros de la nueva barra se pueden comparar con la barra memorizada?

Si tienes un TF no estándar - ¿es posible que la barra que crees que es cero- tenga un índice no 0, 1?

 
IgorM:


¿pero al menos algunos parámetros de la nueva barra pueden compararse con la barra memorizada?

Si tienes un TF no estándar, ¿es posible que la barra que crees que es cero tenga un índice distinto de 0, 1?


El algoritmo para reconocer una nueva barra funciona, pero el gráfico se detiene después de alcanzar una barra máxima en la ventana; supongo que fomentando la matriz de índices SetIndexBuffer se detiene. Este es el problema, es decir, después de activar todo funciona bien y luego el gráfico se congela y las barras se mueven... ¡y en consecuencia el indicador no funciona!
 
reag:

El algoritmo en sí reconoce una nueva barra pero el gráfico se detiene después de alcanzar una barra máxima en la ventana, supongo que la fomación del array de índices SetIndexBuffer se detiene. Este es el problema, es decir, después de activar todo funciona bien, y luego el gráfico se congela y las barras se mueven... ¡y en consecuencia el indicador no funciona!

Si funciona al inicio, quizá el problema sea que el número de barras que se redibujan está mal definido
 
IgorM:

Si lo hace al inicio, el problema puede ser que el número de barras a redibujar no esté definido correctamente

#propiedad ventana_del_gráfica_del_indicador
#property show_inputs
#property indicator_buffers 3 // número de buffers
#property indicator_color1 DarkSeaGreen // color de la primera línea
#property indicator_color2 SaddleBrown // color de la segunda línea
#property indicator_color3 SaddleBrown // color de la segunda línea

extern intHistory=300; // Número de barras en el historial calculado
extern int Flechas=1;
extern int Line=0; // Número de barras para los cálculos
//extern int Left_Right= 5; // Desplazamiento horizontal (barras)
extern int Up_Right=8; // desplazamiento vertical (puntos)
static int up = 1, intPost=600;
static datetime VPPosLStr,time0new,time0old;
double Línea_0[],Línea_1[],Línea_2[]; //declaración de matrices de datos

//--------------------------------------------------------------------
int init() //Función especial init()
{

si (Flechas==1 && Línea==1)int Estilo=1;
if (Arrows==1 && Lines!=1)style=3;
if (Flechas!=1 && Líneas==1)style=2;
switch(Style) // Interruptor de cabecera
{ // Interruptor de inicio del cuerpo
caso 1 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // Asignar matriz al buffer 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Estilo de línea
SetIndexEmptyValue(0,0.0);
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // Asignar matriz al buffer 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // Estilo de línea
SetIndexArrow (1,217);
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // Asignar matriz al buffer 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // Estilo de línea
SetIndexArrow (2,218);
//--------------------------------------------------------------------
break; // Opciones.
caso 2 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // Asignar una matriz al buffer 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Estilo de línea
SetIndexEmptyValue(0,0.0);
romper;
caso 3 :
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // Asignar matriz al buffer 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // Estilo de línea
SetIndexArrow (1,217);
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // Asignar matriz al buffer 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // Estilo de línea
SetIndexArrow (2,218);
//--------------------------------------------------------------------
romper;
por defecto: break; // el caso no coincide
}
int k=Barras; // fin del interruptor de cuerpo

return(0); // Salir de la función especial init()
}
//--------------------------------------------------------------------
int start() // Función especial start()
{
//----+ comprobar el número de barras para que sea correcto
//calcular el indicador
si(Historia-1 < 15)
return(0);

//+--- +==========================================+
int, // Índice de la barra
n, // parámetro formal (índice)
k, // índice del elemento índice de la matriz de índices
Counted_bars; // Número de barras calculadas
doble línea;
iBarShift(NULL, 0, VrPostStr);
//Comentario (indpostr," ",up);
//--------------------------------------------------------------------
/* Counted_bars=IndicatorCounted(); // Número de barras contadas
//---- comprobar posibles errores
if(Barras_contadas < 0)
return(-1);
i=Barras-Contadas_barras-1+indicadorContado; // Índice de la primera no contada
if (i>Historia-1) // Si hay muchas barras, entonces .
i=Historia-1; // ...calcular el número dado
time0new=Time[0];
if(tiempo0antiguo!=tiempo0nuevo)
{
i=Historia-1;
time0old=time0new;
Comentario ("Bares ",Bares,", Historia ",Historia,", i ",i);
}

for(i=i-1; i >= 3; i--) // Bucle sobre las barras no contadas
{
if(up==0)
{
Línea=Bajo[i];

if (Line<Low[i-1] && Line<Low[i-2] && Bpostr<Time[i])
{
Línea_0 [i] = Línea[i];
Línea_0 [i] = Línea;
Línea_2[i] = Línea_abajo*Punto;
up=1;
continuar;
}
}
if(up==1) //construir la rejilla de fibo por el criterio de dos velas rollback
{
Línea=Alta[i];

if (Line>High[i-1] && Line>High[i-2]&& Bpostr<Time[i])
{
Línea_0[i] = Línea[i];
Línea_0[i] = Línea;
Línea_1[i] = Línea+Abajo*Punto;
up=0;
}
}
//Cálculo del índice para la siguiente barra
}
// WindowRedraw();
//--------------------------------------------------------------------
return(0);
}
//--------------------------------------------------------------------
int deinit()
{

return(0);
}
 
reag:


   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++){
Escribo los indicadores de esta manera, este es mi inicio de indicador estándar - es un poco estirado, pero cuando estaba tratando con mql, lo escribí de esta manera y así se queda
es difícil entender tu código - los nombres de las variables en letras cirílicas me asustan - me confundo con los comentarios
 
IgorM:
Yo escribo los indicadores de esta manera, este es mi inicio de indicador estándar
es difícil entender tu código - los nombres de las variables en letras cirílicas me asustan - me confundo con los comentarios

Sí, soy yo quien lo intenta... Cyrillic )), la combinación de Bares e IndicatorCounted() en un marco temporal no estándar no funciona exactamente, cuando se supera la barra máxima en la ventana de Bares no va más allá.