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

 
AlexeyVik:
Probablemente no es exactamente como lo intenté.
Acabo de recompilar el código en EA y lo he ejecutado. Cuando cambio el parámetro Sys en el comentario este valor cambia.

He probado a cambiar a tu versión de nuevo... sigue sin funcionar... Está en el EA, y es visible como un EA...
 
peace1984:

He probado a cambiar a tu versión de nuevo... sigue sin funcionar... está en el EA, y es visible como un EA...


¿O me he equivocado?

Archivos adjuntos:
11_1_1.mq4  8 kb
 
AlexeyVik:


¿O he entendido algo mal?



entiendo que el mensaje "sys no debería ser 1" aparecerá si sys!=1, pero si cambias el usuario de 0, debería ser 1. y "sys debería ser 1" debería aparecer

en tu versión del EA, durante las pruebas en la esquina superior izquierda dice sys=0 y este no debería ser el caso...

 
peace1984:

entiendo que el mensaje "sys no debería ser 1" aparecerá si sys!=1 y si cambias el usuario de 0, debería ser 1 y "sys debería ser 1" debería aparecer

Aquí tienes un vistazo al nuevo lanzamiento. Alinea desde el fondo.


El experto está cargado.

Lista de variables externas: Sys = 0

La inicialización ha pasado.

Las siguientes 3 líneas se imprimen desde EA.

Razón de desinicialización 5(Los parámetros de entrada fueron modificados por el usuario)

Lista de variables externas: Sys = 1

Inicialización pasada

Las siguientes 3 líneas, la impresión del Asesor Experto.

Motivo de desinicialización 1(El programa ha sido eliminado del gráfico)


¿Qué quiere aclarar? No entiendo qué es lo que no funciona...

ps: no hagas caso a esos símbolos. Es una cuenta de opciones por eso esos nombres de símbolos.

 
AlexeyVik:

Esa no es la cuestión. Nadie quiere su código secreto completo. Sólo tienes que escribir un código de prueba completo con el malentendido. ¿Qué te parece esto?

¿cuándo borraste la línea resaltada? Los telépatas no ayudarán, los simples mortales aún menos...

Luego está esta parte.

No sé qué programador lo escribió, pero es completamente inadecuado... No es tu culpa. Usted, como muchos otros, acaba de tomar el código y tratar de arreglarlo...

Si la variable counted_bars es igual al número de barras que no han cambiado desde la última llamada al indicador (la primera línea)

Cómo puede ser menor que cero if(counted_bars < 0) nunca podré entenderlo...

El resto también es una tontería, pero me da pereza desmontarlo...


Estoy totalmente de acuerdo con usted. ¿Por qué no pensaste en eso? )

Adjunto el código y el archivo de tan desgraciado indicador.

Poner la gráfica, el terminal se cuelga de forma natural, dejarlo durante 10 minutos (dependiendo del rendimiento del PC. Tengo i5 de 3,1 Ghz), cerrar forzosamente MT, abrir el archivo de registro con nombre "bug log.csv", observar el hecho del bug IndicatorCounted().

#property indicator_separate_window
#property indicator_buffers 1

double Buffer_1[];

bool busy=false;
int han;

int init()
{
   han=FileOpen("bug log.csv", FILE_CSV|FILE_WRITE);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1);       
   SetIndexBuffer(0,Buffer_1); 
   return(0);
}

int deinit()
{
   FileClose(han);
   return(0);
}

int start()
{
   //if(busy) return(0);
   int limit=3000;
   if(IndicatorCounted()>0) limit=1;
   
   for (int i=0; i<limit; i++)
   { 
      busy=true;
      FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), DoubleToStr(i, 0), DoubleToStr(IndicatorCounted(), 0));
      FileFlush(han);
      
      for(int j=1; j<7000; j++)
        for(int k=1; k<7000; k++)
          double var=2*0.34*MathArccos(0.5)+1.33*MathArcsin(0.23)+1.53*MathArctan(0.11)+2.33*MathCos(0.23)+1.22*MathLog(12)+1.22;
      
      Buffer_1[i]=var;
   }
   
   busy=false;
   return(777);
}
Archivos adjuntos:
bugqtest.mq4  2 kb
 

Hola a todos, podéis aconsejar qué falta en el script, si cierra todas las órdenes abiertas si se cumple la condición (AccountProfit()>1), ahora sólo cierra parte de las órdenes hasta que se cumpla la condición i

f(Beneficio de la cuenta()>1)

{ for (i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{ OrderClose(OrderTicket(),OrderLots(),Bid,10,Green); return(0);
} else { OrderClose(OrderTicket(),OrderLots(),Ask,10,Red); return(0);
}}}
 
Expert:


Estoy completamente de acuerdo con usted. ¿Por qué no pensaste en eso? )

Adjunto el código y el archivo del propio indicador woe-is-me.

Poner en la gráfica, el terminal se cuelga por supuesto, dejarlo durante 10 minutos (dependiendo de la velocidad del PC. Tengo i5 3,1 Ghz), cerrar forzosamente MT, abrir el archivo de registro con nombre "bug log.csv", observar el hecho del bug IndicatorCounted().

No lo sé. Tengo un indicador que grabó un archivo como este.

Archivos adjuntos:
test.zip  21 kb
 
AlexeyVik:

No lo sé. Tenía este indicador escribir un archivo como este.




Muchas gracias por sus comentarios.

He probado tu versión y el resultado es el mismo ((

¿Tiene alguna idea de por qué ocurre esto?
No soy sólo yo. He probado con otro PC, más potente que el mío, y es el mismo problema.

Archivos adjuntos:
bugflog.zip  122 kb
 
i999i:

Hola a todos, podéis aconsejar qué falta en el script, si cierra todas las órdenes abiertas si se cumple la condición (AccountProfit()>1), ahora sólo cierra parte de las órdenes hasta que se cumpla la condición i

f(Beneficio de la cuenta()>1)

{ for (i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{ OrderClose(OrderTicket(),OrderLots(),Bid,10,Green); return(0);
} else { OrderClose(OrderTicket(),OrderLots(),Ask,10,Red); return(0);
}}}
return(0); era redundante, gracias a todos
 
Expert:


Muchas gracias por sus comentarios.

He probado tu versión y el resultado es el mismo ((

¿Alguna idea de por qué ocurre esto?
No soy el único. Lo he probado en otro PC, más potente que el mío, y es el mismo problema.

O yo no te entiendo, o tú no entiendes algo... ¿Qué pasa con el archivo .csv? Hasta que se cuente la primera barra prev_calculada o IndicatorCounted() (en la versión antigua) será cero y esto es correcto.
Razón de la queja: