[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 350

 
Sí, pero tendrá que actualizar el horario usted mismo.
 
smartemiy:

con el mismo bucle?

Voy a intentar
 
Serg16:

Por favor, ayúdenme a resolver el problema con el límite de desplazamiento en iHigh(Symbol(),timeframe,shift), que está limitado al número 1000.

iTime(Symbol(),timeframe,1001) da 1970.01.01 00:00

Nadie puede ayudar a que sólo haya una opción, leer desde el archivo de la historia? Si esa es la única opción, ¿alguien tiene una manera de determinar la información necesaria en el archivo de la historia.
 
sergeev:

No hay que pulsar la barra espaciadora, sino mantener pulsado el botón de encendido durante 5-10 segundos hasta que la señal desaparezca.

En KVN entre los moderadores, serás el capitán del equipo ... Repetiré la pregunta, tal vez alguien la responda: la alerta no se apaga tras pulsar la barra espaciadora... La versión del terminal es la última de 500... Nunca he visto esto antes.
 
Sin embargo, en la pestaña "Eventos" del menú "Herramientas - Configuración", las cosas están bastante mal. Intenta usarlo :(
 

Chicos, por favor, dadme una pista. Ya he hecho esta pregunta, pero no he conseguido que el código sea correcto.

Una vez más, le diré lo esencial de la idea. Mediante el indicador Awesom, desde la parte inferior (por debajo de 0) hasta la superior (por encima de 0), se calcula el volumen de la onda (indicador Volumes).

La etiqueta de texto con la suma del volumen de la onda, debe imprimirse en el gráfico del indicador y calcularse sobre todo el historial.

Tengo esto:

fig4

¿Cuál es el error?

#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  SteelBlue
#property  indicator_width1  2

//---- basic fan indicator parameters

extern bool Show_AOLine_2=true;
extern int SlowEMA3=34;
extern int EMA=3;
extern bool Show_Volume=true;
extern double coaf=0.5;
//---- indicator buffers
double AOBuffer3[];
double ExtMapBuffer1[];


    double VLUP, AO_up,AO_dn;
    double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s;
    datetime tmhgh, tmlw;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- drawing settings
   
  string name_ind = "Awesome_super_volumes";
   IndicatorShortName("Awesome_super_volumes");
   
   
//---- AO_fan line 2 (basic)
   if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; }
   else 
    {Show_AOLine_2=DRAW_NONE; }
   SetIndexBuffer(0,AOBuffer3);
   SetIndexStyle(0,Show_AOLine_2);
   SetIndexLabel(0,"basic line");   

   SetIndexBuffer(1,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexLabel(1,"Volume");
   
  //---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int start()
  {
  
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev,current;
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=0; i<limit; i++)
   {
     
 //---- AO_fan + Volumes
     
AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i);
if (Show_Volume==true)
{
double nSum = Volume[i]*Point*coaf;
   if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum;
   if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum;


double Vol_Arr[];
  if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf;
  if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;
}
}

  //-- Поиск High & Time & Min_AO  
  if (AOBuffer3[i]>0)
  {
    
  AO_up = AOBuffer3[i]*0.1+AOBuffer3[i];
  prhgh_s = High[i];
  if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
  //SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmhgh, AO_up, Black);
  }   
   
  //-- Поиск Low & Time & Max_AO 
  if (AOBuffer3[i]<0)
  {
  AO_dn = AOBuffer3[i]*0.1+AOBuffer3[i];
  prlw_s = Low[i];
  if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
  //SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
  } 
  
  // -- Пересчет баров от High до Low
  
  if(NewBar())
{ 
int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw);     
int shift=iBarShift(NULL,0,tmhgh);
 for (i=0; i<=colbr; i++)
{VLUP += MathAbs(iVolume(NULL,0, shift+i));}
}


    
   Comment("Vol_",VLUP,prlw_e,prhgh_e); 
  for(i=0; i<limit; i++)
   {     
SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);     
 }
        
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
void SetText(string name, string Vl, datetime t1, double p1, color c)
 {
 // if (ObjectFind(name)!=-1) ObjectDelete(name);
  ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0);
  ObjectSetText(name, Vl, 10, "Times New Roman", c);
  ObjectSet(name, OBJPROP_TIME1 , t1);
  ObjectSet(name, OBJPROP_PRICE1, p1);
  ObjectSet(name, OBJPROP_COLOR, c); 
  }
  
  bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
    return(false);
   }}
 
smartemiy:

1. La función de conversión convierte y los cambios de las variables en esta función no cambiarán si no hay un tick. TimeToStr(TimeLocal(), TIME_MINUTES) - depende del tick.

¿Tienes alguna idea de cómo sacar la hora de Win32/User32 para que el EA no se atasque?

1. Ninguna de estas funciones depende de las garrapatas. Sólo hay que llamar a la función para obtener el valor de retorno. El indicador y el Asesor Experto lo llaman a la llegada de un tick, pero no es gran cosa. Puede hacer un bucle con un Asesor Experto o un script. La frecuencia de las llamadas será la misma que en el indicador o guión.

2. No tiene sentido. Tendrá que inventar el mismo TimeLocal().

 
Heroix:

No he podido encontrar nada en el libro de texto sobre lo que significa "&" en los parámetros formales de la función. ¿Puede decirme a qué afecta y qué significa?


https://docs.mql4.com/ru/basis/variables/formal


La segunda parte de la página a partir de las palabras "Es posible pasar parámetros por referencia..." Mira cuidadosamente allí Ejemplo.

 
Pero eres rápido. He borrado el post porque lo he encontrado yo mismo. ¡Gracias!
 

Buenas tardes.

Podrías aconsejarme sobre la mejor manera de registrar el cruce de, por ejemplo, los estocásticos:

en la primera y tercera barra comparar los valores de las líneas de señal y principal o la primera y segunda ?