[¡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 314

 
¿No lo entiendo? Cuando dibujo el indicador Kon en la ventana, funciona bien. Explica...
 
kon12 >> :
¿No lo entiendo? Cuando dibujo el indicador Kon en la ventana, funciona bien. Explica...

cuando se dibuja en la ventana, se tienen barras de histograma de color oliva o verde. las primeras corresponden al buffer de arriba y las segundas al dn. si sólo se dibuja dn en la barra 0, y se accede al indicador iCustom(0,0, "Kon",10,0,0), es decir, el parámetro de modo es 0 (mira tu 0 es arriba - SetIndexBuffer(0,arriba);), entonces el resultado de la llamada a la función será probablemente EMPTY_VALUE.


¿Está más claro?

 

He intentado cambiar el número de búfer a 1 y 2, pero no ha servido de nada.

 

comprobar si la cadena "Kon" en la llamada iCast es la misma que el nombre del archivo mq4, incluyendo las mayúsculas y minúsculas

¿y qué valor da la función de todos modos?

 

La cuestión es muy sencilla. Estoy tratando de referirme al indicador OsMA, que está en el conjunto estándar de indicadores personalizados. Quiero simplemente dibujar una línea de este indicador en la ventana de indicadores. El indicador OsMA tiene los parámetros 12,26,9 y se dibuja en el buffer 0. ¿Qué es lo que falla en el código? La línea 0 se dibuja en la ventana del indicador y ya está.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.0
#property indicator_color1 Olive

double z;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0, z);
   SetIndexStyle(0,DRAW_HISTOGRAM);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { z= iCustom(NULL,0,"OsMA",12,26,9,0,0); 
  //----
   return(0);
  }
 
kon12 >> :

La cuestión es muy sencilla. Estoy tratando de usar la función OsMA que está en el conjunto estándar de indicadores personalizados. Quiero simplemente dibujar una línea de este indicador en la ventana de indicadores. El indicador OsMA tiene los parámetros 12,26,9 y se dibuja utilizando el buffer 0. ¿Qué es lo que falla en el código? La línea 0 se dibuja en la ventana del indicador y ya está.

No, no funciona así.

La z es una matriz y los datos deben escribirse en ella elemento a elemento. Por ejemplo:

for(i=100;i>=0;i--)

{

z[i]= iCustom(NULL,0,"OsMA",12,26,9,0,i);

}

 
¡Sí, ha funcionado! Gracias por tu ayuda, los primeros pasos son los más difíciles...
 

Otra pregunta sobre mi tema. Supongamos que dibujo una curva en el gráfico, por ejemplo, MA. Luego utilizo un indicador personalizado que utiliza esta MA a través de la función iCustom. ¿Podemos conectarlos de tal manera que el período de MA en el gráfico se cambie automáticamente cuando se cambie el período de МА en el indicador personalizado?

 

¿Puede decirme si estoy trabajando en un horario diario?

Y quiero acceder a los datos de las actas. ¿Están actualizados o son datos antiguos?

 

Pregunta: ¿cómo funciona esto (optimización de indicadores)?


if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);
   ObjectDelete( RectangleSell);
   ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}


¿Entiendo correctamente que con cada nuevo tick el mismo rectángulo

(el mismo tamaño con igual número de barras) se borrará y se volverá a dibujar?

¿Vale la pena añadir una comprobación del número de barras (si hay más barras, entonces sólo se redibuja)

para aliviar la CPU del ordenador o la ganancia será mínima y no merecerá la pena molestarse en ello?