Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1939

 
Valeriy Yastremskiy #:
Aparece una nueva barra si iTime != OldTime entonces Alerta y OldTime =iTime en el cambio/barra cero.

¿qué valor debe escribirse en OldTime? O_o

La flecha se dibuja en el momento en que se abre la barra de cero.

Hice esta condición.

 if(iTime(NULL,0,0)!=iTime(NULL,0,1))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

No funciona correctamente - incluso en el probador, hay un montón de alertas en el registro.

if(iTime(NULL,0,1)!=iTime(NULL,0,0))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

también recibo un montón de alertas - no sé cómo escribir esta cosa(((

 
DanilaMactep #:

¿qué valor debe escribirse en OldTime? O_o

La flecha se dibuja en el momento en que se abre la barra de cero.

Hice esta condición.

No funciona correctamente - incluso en el probador, hay un montón de alertas en el registro.

También me salen un montón de alertas - no entiendo cómo se escribe esto(((

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

Así, al arrancar, también recibirás una alerta. Cuando aparezca una nueva barra se cambiaráiTime(NULL,0,0) y no habrá igualdad una vez, luego habrá igualdad y el if será falso.

También puedes hacerlo así.

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

O podemos obtener una nueva barra en cualquier marco temporal.

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

La convocatoria sería la siguiente

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }
 
Valeriy Yastremskiy #:

De esta manera también habrá una alerta al cargar. Cuando aparezca una nueva barra se cambiaráiTime(NULL,0,0) y no habrá igualdad una vez, luego habrá igualdad y el if será falso.

Muchas gracias por tu ayuda - lo he estropeado - ha salido 1 alerta en la compilación - vamos a ver qué pasa después :-)
 

"Nueva barra" es mala, en este evento se pueden obtener datos del indicador "última barra", es decir, newbar-1.

Si usted ejecuta 3 terminales en un servidor y, dependiendo de la frecuencia de negociación de la señal se salta en algunos terminales, es decir, antes de enviar el conjunto de órdenes de impresión (señal de compra, por ejemplo), y el valor de impresión del indicador mostrará el valor de la barra anterior.

Por supuesto, puedes realizar algunas comprobaciones...

 
Valeriy Yastremskiy #:
La carpeta general de metacotizaciones es la carpeta del terminal, contiene las carpetas generales del terminal, allí los registros del terminal, los datos y la carpeta del probador, tiene sus propios registros y carpetas de archivos. La carpeta mcl contiene registros de EAs, scripts, indicadores, ventanas y subventanas.
todo. Spc. Ayer lo limpié. Lo comprobaré de nuevo hoy. He limpiado 30 GB. De unos 10 terminales y la historia sobre todo en herramientas y troncos...
 
Artyom Trishkin:

En este hilo quiero empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.

Este blog será un buen lugar para discutir los problemas, los algoritmos de su solución y cualquier otra cuestión relacionada con la programación de MT de una manera u otra.

Espero que otros miembros experimentados de nuestro foro se unan a la discusión y la rama sea interesante para todos.

Hola, nadie me puede ayudar con la función de cerrar la orden, estoy probando lo siguiente,

for (int i=1; i<=TotalPedidos(); i++)

{

if(OrderSelect(i-1,SELECT_BY_POS)==true)

{

if( Ask<= OrderOpenPrice())CloseBay();

}

}

Cuando Ask está por encima de la bahía de la orden, todo está bien, tan pronto como Bid se convierte por encima de la bahía de la orden, la orden se elimina, y debe ser eliminado cuando Ask está por debajo del precio abierto. Por favor, ayúdenme, les estaré muy agradecido. Sinceramente Alexander.

 
Alexandr Spravchikov #:

Hola, nadie me puede ayudar con la función de cerrar la orden, lo estoy intentando de esta manera,

¿Has probado esto?

void CloseBuy()
{
   for(int i= OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if((OrderSymbol()==_Symbol) && (OrderMagicNumber()==Magic) && (OrderType()==OP_BUY))
         {
            if( Ask<= OrderOpenPrice())
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Green))
            {
               Print("Error closing a buy order!"+  IntegerToString(_Period,0) +" Error code = " + IntegerToString(GetLastError(),0));
            }
         }
      }
   }
   return;
}
 

Saludos. ¿Pueden decirme cómo hacer una consulta api de comercio para "BTCUSDT" para indicar el número de lotes no en BTC sino en USDT?

 

Hola a todos. Un consejo, por favor.


La idea es sencilla. Escribir un EA que abra una posición y cierre la contraria al romper una de las fronteras del canal global. El canal es trazado por el indicador.

He realizado una variante utilizando las guías de Internet. Este bot abre/cierra posiciones en el probador de estrategias, pero si miras el gráfico, no cumple mis condiciones en absoluto. He probado todas las variables del buffer y comprobado los errores. No obtuve ningún resultado.


Si alguien puede, por favor, aconséjeme qué es lo que está mal, en qué dirección cavar. :3


Adjunto un archivo con las variables del buffer, la demostración del indicador, sus variables iniciales, mi variante de Asesor Experto.

Archivos adjuntos:
9.png  14 kb
f2.png  26 kb
second.mq4  15 kb
 
E1Macho1 #:

Hola a todos. ¿Puedes darme una pista, por favor?

Qué camino tomar. :3

Profundizar en la dirección de uso del depurador

Razón de la queja: