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

 
WinZip:
¿Pueden aconsejarme sobre este problema? Estoy haciendo un Asesor Experto de comercio, por conveniencia hice una copia del Asesor Experto como uno nuevo, y estoy experimentando allí. Pero hace una hora Expert Advisor para experimentos comenzó a devolver el error "Trading for Expert Advisor is prohibited". Tengo dos Asesores Expertos casi idénticos, uno está operando y otro no. Me he perdido el momento en que mi Asesor Experto dejó de operar. ¿Cómo puedo calcular lo que está prohibido para el comercio? Traté de hacer la función para cerrar las operaciones, pero cuando se elimina todo lo que he añadido, todavía no el comercio.

En su configuración, marque la casilla para permitirle comerciar.

 
Los registros y los resultados de las pruebas en 0 llenaron la unidad C, ¿hay alguna manera de cambiar la otra unidad para los registros en la configuración?
 

Pido disculpas por la pregunta estúpida, que probablemente se haya discutido un millón de veces...

¿Por qué no recibo notificaciones de respuestas o incluso de borrado de hilos? Ni en el correo ni en los mensajes locales... ?

¿Y cómo lo arreglo? Creo que está comprobado pero no funciona...

 
//+------------------------------------------------------------------+
int OnInit()
  {
  datetime open_bars_time = iTime(NULL,0,0); 
  Alert("старт ",open_bars_time);
  int i=0;
  while(iTime(NULL,0,0)==open_bars_time && !IsStopped()) 
  {Comment(iTime(NULL,0,0));}
  Alert("Цикл закончен",open_bars_time);
//--- create timer
   EventSetTimer(Period()*60);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

требуется запускать прогу в начале бара. Почему значение возвращаемое iTime(NULL,0,0) не изменяется?
 
Sergey Guliaev:

Tienes que añadir Sleep() y RefreshRates() al bucle, de lo contrario no se mueve nada.

Y en general, la idea es fundamentalmente errónea. No se puede hacer esto en OnInit.

Si hay que esperar a la apertura de la barra, hay que esperar en OnTick. Si quiere cambiar de hora - espere en OnTimer.

 
Maxim Kuznetsov:

Tienes que añadir Sleep() y RefreshRates() al bucle, de lo contrario no se moverá nada.

y la idea es fundamentalmente errónea. No se puede hacer esto en OnInit

Si es necesario esperar a la apertura de la barra - debe hacerse en OnTick. Si tienes que esperar el cambio de hora, tienes que esperar en OnTimer.

Gracias. La tarea consiste en garantizar que el primer tick tenga +/- un par de segundos al principio de la barra. Según mis observaciones, los ticks no están sincronizados con el inicio de la barra.

 
Sergey Guliaev:

Gracias. El objetivo es que el primer tick sea de +/- un par de segundos al inicio de la barra. Según mis observaciones los ticks no están sincronizados con el inicio de la barra.

Sus observaciones son extrañas. Has confundido causa y efecto. Los ticks no dependen de las barras, sino que la apertura de una nueva barra depende de la llegada de un nuevo tick. Si no hay garrapata, no hay barra. Esto ocurre con frecuencia en las actas.

 

¡Buenas tardes colegas!

No puedo entender la razón, tengo el volumen (LotSize) calculado en base al riesgo. Cuando saco el tamaño del lote con el mensaje Alert(LotSize), muestra 0.12 por ejemplo, pero la función OrderSend se queja del tamaño. Cuando escribo LotSixe=0.12 en el código; OrderSend funciona bien.

¿Cuál puede ser la razón?

 
Sandjar Ikramov:

¡Buenas tardes colegas!

No puedo entender la razón, tengo el volumen (LotSize) calculado en base al riesgo. Cuando saco el tamaño del lote con el mensaje Alert(LotSize), muestra 0.12 por ejemplo, pero la función OrderSend se queja del tamaño. Cuando escribo LotSixe=0.12 en el código; OrderSend funciona bien.

¿Cuál puede ser la razón?

En estos casos siempre piden el código... ...quién sabe lo que está escrito ahí y cómo está escrito...

 
Sandjar Ikramov:

¡Buenas tardes colegas!

No puedo entender la razón, tengo el volumen (LotSize) calculado en base al riesgo. Cuando saco el tamaño del lote con el mensaje Alert(LotSize), muestra 0.12 por ejemplo, pero la función OrderSend se queja del tamaño. Cuando escribo LotSixe=0.12 en el código; OrderSend funciona bien.

¿Cuál puede ser la razón?

Bueno... probablemente porque son variables diferentes... Y 0,12 (coma) no es igual a 0,12(punto) en absoluto

Razón de la queja: