Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 908

 
AlexeyVik:

Lo siento, no quiero ser grosero. ¿Por qué querrías dedicarte a la programación?

Aunque aquí hay mucha gente que escribe trozos de código en lugar de explicar para qué sirve. Tienes que dármelo.

Prefiero explicar, pero no escribir trozos.

¡Lo tengo! Ahí lo tienes. Gracias.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //primera barra
int MaxVol=0;
int=0, n=0;
for (i=bar1; i>0; i--)
{
//si (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
si (iVolumen(Símbolo(),0,i)>MaxVol)
{
MaxVol=iVolumen(Símbolo(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik:

¡Lo tengo! Eso es todo. Gracias.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //primera barra
int MaxVol=0;
int=0, n=0;
for (i=bar1; i>0; i--)
{
//si (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
si (iVolumen(Símbolo(),0,i)>MaxVol)
{
MaxVol=iVolumen(Símbolo(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

Bueno, aquí lo tenemos.

Ahora puedes pensar en reducir y simplificar el código.

Aquí has encontrado el primer bar. Esto significa que tendremos que copiar tantas barras en el array. Esto reduce el código a tres cadenas.

1. Encuentra la primera barra.

2. copiar los volúmenes del primer ejemplo en el array

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3. ArrayMaximum(de este array)


No está claro por qué estás usando la variable n para

 

Descargado el archivo de citas. Este es un ejemplo de una entrada:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Los títulos de los campos son los siguientes: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
¿Qué significan los dos primeros campos?

 
PostoronnimV:

Descargado el archivo de citas. Este es un ejemplo de una entrada:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Los títulos de los campos son los siguientes: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
¿Qué significan los dos primeros campos?

Las tres primeras columnas se pueden descartar con seguridad, no tienen ninguna aplicación práctica para crear cotizaciones para MT4.
 

¡Hola!

Utilizo muchos bloques en Expert Advisor, cada bloque tiene el mismo indicador. ¿Puedo declarar este indicador una vez en OnTick() y luego en cada bloque no tengo que volver a declararlo?

 
abeiks:

¡Hola!

Utilizo muchos bloques en Expert Advisor, cada bloque tiene el mismo indicador. ¿Puedo declarar este indicador una vez en OnTick() y luego en cada bloque no tengo que volver a declararlo?

Puedes hacerlo
 
¿Cómo? Por favor, muéstrame un ejemplo.
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
¿Cómo? Por favor, muéstrame un ejemplo.
Lea el manual sobre la visibilidad de las variables declaradas en diferentes niveles de código.
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
Lea el manual sobre la visibilidad de las variables declaradas en diferentes niveles de código.
Gracias.
 

Hola,

¿Podría decirme por qué hay advertencias: conversión implícita de 'cadena' a 'número' y conversión implícita de 'número' a 'cadena' en las ubicaciones de las variables (después del comando int y después del mensaje)? Debe ser una misma advertencia. No soy bueno en programación.

Además, dime más, si el código funciona pero sólo hay avisos, ¿es malo?

Y una pregunta más, ¿cómo puedo poner la hora local en el mensaje? Escribo message= TimeLocal()+..... y no pasa nada...


Fragmento de código:

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }
Razón de la queja: