[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 173

 
Ctmcn:

¿Puedes decirme qué significa el error al compilar el EA?

\fin_del_programa' - paréntesis izquierdo desequilibrado


Paréntesis izquierdo desequilibrado.
 
Roll:

Soporte izquierdo desequilibrado.

Oops... Lo encontré. GRACIAS.
 

He aquí una pregunta.

Las órdenes se abren como STOP de compra/venta. Algunas se convierten en órdenes de mercado, otras se eliminan.

Para las últimas órdenes de mercado N (abiertas y cerradas) necesitamos saber si fueron de Compra o de Venta.

Mi primera idea es buscar todos los pedidos de OrdersHistoryTotal() y OrdersTotal(), ordenarlos por

y luego ordenarlos por OP_BUY y OP_SELL. Pero esto es largo y ralentizará mucho el procesador.

- ¿Quizás haya alguna otra variante más sencilla?

Gracias.

 

Buenas tardes.

¿Alguien puede ayudar?

Escribí mi primer indicador simple, debe calcular la volatilidad promedio de los últimos 2,3,4 y 5 días.

El indicador tiene seis topes,

SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,VolatBuffer0);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,VolatBuffer1);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,VolatBuffer2);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,VolatBuffer3);
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexBuffer(4,VolatBuffer4);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,VolatBuffer5);

En su ventana en el gráfico normalmente dibuja sólo cinco líneas verticales de volatilidad para 0 días, 1 día, media para 2 días, 3 días y 4 días.

La volatilidad media según la suma de los 5 días anteriores se dibuja como una línea discontinua para 50 velas diarias, es decir, el número de velas especificado.

El contenido de los tampones se calcula de la siguiente manera: promedio de 5 días - en ciclo (para trazar una línea de 50 días), otros datos promediados - fuera de ciclo.

while(i>=0)
   {
    
   int day0= (High[i] - Low[i])/Point;
   int day1= (High[i+1] - Low[i+1])/Point;
   int day2= (High[i+2] - Low[i+2])/Point;
   int day3= (High[i+3] - Low[i+3])/Point;
   int day4= (High[i+4] - Low[i+4])/Point;
   int day5= (High[i+5] - Low[i+5])/Point;

        int D5_av = (day1+ day2+ day3+ day4+ day5) / 5;
       VolatBuffer5[i]=D5_av;
      i--;
        }
        day0= (High[0] - Low[0])/Point;
   day1= (High[1] - Low[1])/Point;
   day2= (High[2] - Low[2])/Point;
   day3= (High[3] - Low[3])/Point;
   day4= (High[4] - Low[4])/Point;
        
        int D4_av = (day1+ day2+ day3+ day4)/4;
        int D3_av = (day1+ day2+ day3)/3;
        int D2_av = (day1+ day2)/2;
        int D1_av = day1/1;
        int D0_av = day0/1;
        
        VolatBuffer0[0]=D0_av;
      VolatBuffer1[1]=D1_av;
      VolatBuffer2[2]=D2_av;
      VolatBuffer3[3]=D3_av;
      VolatBuffer4[4]=D4_av;
Comment("Волатильность. За 5 дн.= "+VolatBuffer5[5]+" За 4 дн.= "+VolatBuffer4[4]+" За 3 дн.= "+VolatBuffer3[3]+" За 2 дн.= "+VolatBuffer2[2]+" Вчера= "+VolatBuffer1[1]+" Сегодня= "+VolatBuffer0[0]);

La línea de comentario en el indicador, en la que se introduce el contenido de los búferes, da un absurdo en la pantalla:

Promedio de 5 días - sin volatilidad mayor a 194 pips para esos días y resultados correctos para los demás días.

Comentario = " Volatilidad. Durante 5 días = 219,000000 Durante 4 días = 171,0000000 Durante 3 días = 189,00000 Durante 2 días = 187,00000 Ayer = 194,00000 Hoy = 5 "

El día cero "Hoy" aumenta claramente con la volatilidad del día actual

Al llamar a estos búferes al Asesor Experto

int Volat0= iCustom(Symbol(), 1440, "Volat_Average_Gist",0,0);
      int Volat1= iCustom(Symbol(), 1440, "Volat_Average_Gist",1,0);
      int Volat2= iCustom(Symbol(), 1440, "Volat_Average_Gist",2,0);
      int Volat3= iCustom(Symbol(), 1440, "Volat_Average_Gist",3,0);
      int Volat4= iCustom(Symbol(), 1440, "Volat_Average_Gist",4,0);
      int Volat5= iCustom(Symbol(), 1440, "Volat_Average_Gist",5,0);

La línea de impresión del probador produce otro absurdo - no correcto, diferente de la línea de comentario, pero similar a la verdad, el resultado promedio de 5 días y la volatilidad correcta del "Día Cero" de hoy.

El resto da un número fijo absurdo.

La impresión del probador muestra la Volatilidad en 5 días=181 En 4 días= 2147483647 En 3 días= 2147483647 En 2 días= 2147483647 Ayer= 2147483647 Hoy= 5

Desde hace varios días no puedo entender por qué se llaman al Asesor Experto datos diferentes a los contenidos en las cinco memorias intermedias de los indicadores, a excepción de la memoria intermedia del "Día Cero"?

 

Pruebe a sustituirlo por

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

y todos los demás topes también.

 
Roger:

Pruebe a sustituirlo por

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

y todos los demás topes también.

Gracias.

Ha funcionado. El Asesor Experto comenzó a recibir datos normales.

Además, hay un efecto interesante - en la línea "Coment" del indicador

sólo 219 durante 5 días permanecerá como estaba.

Al mismo tiempo, el Asesor Experto recibe 181 en lugar de 219 como debería ser.

Coment'' muestra Volatilidad A lo largo de 5 días= 219,000000 A lo largo de 4 días= 2147483647 A lo largo de 3 días= 2147483647 A lo largo de 2 días= 2147483647 Ayer= 2147483647 Hoy= 5

 
Roger:

Pruebe a sustituirlo por

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

y todos los demás topes también.

He encontrado un efecto más. Todas las líneas verticales de la ventana del indicador se dibujan unas encima de otras

El valor más grande cubre todos los demás. No es esencial para el Asesor Experto.

 
Vekker:

Buenas tardes.

¿Alguien puede ayudar?

Escribí mi primer indicador simple - debe contar la volatilidad promedio de los últimos 2,3,4 y 5 días.

Puedes simplificar las cosas considerablemente utilizando el ATR:

iATR(NULL, PERIOD_D1, Number_Of_Days, 1)
 
Roll:
Dos guiones:

La cuestión ya no es cómo escribir el código, sino a nivel de una idea: ¿es posible evitar los bucles múltiples?

lo que supone una gran carga para el procesador. Por ejemplo, había una idea para seguir el número de órdenes STOP abiertas - si ha disminuido en uno, pero la orden no ha sido eliminada => abrir una orden de mercado =>.

su hora de apertura y su tipo deben colocarse en una matriz. Algo así.

Cualquier idea es bienvenida.

Gracias.

 
chief2000:

Puedes simplificar las cosas considerablemente utilizando el ATR:



Gracias. Voy a intentar