28 !!! pares de divisas, 1 experto. Otro grial, pero este creo que nadie lo ha mostrado. + CUENTA DEMO - página 11

 

Sobre los Tres Chiflados:

http://www.libex.ru/detail/book74148.html

 
Así es, la portada es la misma.
 
MetaQuotes:
Desfile de fotos sin fuentes ni pruebas...


2 Rosh

En su EA de la página 5 ha comprobado los desajustes de Oferta y Cierre de todos los t/fs. Usted interpreta la ausencia de tales desajustes como una confirmación de que no es posible mirar hacia el futuro en el probador. En su momento, esta conexión me pareció extraña. Desde mi punto de vista no es el comportamiento de Close lo que hay que comprobar, sino el comportamiento de High y Low del t/f superior. Y tras el injusto reproche de MQ mencionado anteriormente, decidí dedicarle algo de tiempo. Pero era demasiado tarde.

A continuación se muestra el código del Asesor Experto que genera por sí mismo el Máximo y el Mínimo actual de la hora o del día en el gráfico de un minuto. Luego en cada tick lo compara con el Máximo y el Mínimo de la hora o del día, obtenidos del H1 o D1 y en caso de discrepancia lo envía al registro y al archivo.

 
//+------------------------------------------------------------------+
//|                                           Simple Prospection.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2007, Yurixx"
#property link      ""
double curHi,curLo,HiH1,LoH1;
int    mm,hh,dd,curM1,curH1,curD1,kk,nn,handle;
string str,mHi,mLo,hHi,hLo;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  handle = FileOpen("FU.csv",FILE_CSV|FILE_WRITE," ");
  if(handle<1) { Print("File FU.csv not found, Error:", GetLastError());
                 return(false);   }
  if (Period()>PERIOD_M1)
  {  Print("Период тестирования не соответствует задаче");
     return(-1);
  }
  Print("Период тестирования ",Period()," минут");
  FileWrite(handle,"Date","Time","curHi","HiH1","curLo","LoH1");
  nn=D'2007.07.12 23:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:02:00';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  curHi=0.0;
  curLo=1000.0;
  curD1=-1;
  curH1=-1;
  curM1=-1;
  nn=0;//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {  
//----
  mm = TimeMinute(TimeCurrent());
  hh = TimeHour(TimeCurrent());
  dd = TimeDay(TimeCurrent());
  if (mm!=curM1)
  {  if (hh!=curH1)
     {  if (dd!=curD1)
        {  curHi=NormalizeDouble(Bid,Digits);
           curLo=NormalizeDouble(Bid,Digits);
           curD1=dd;
        }
        //curHi=NormalizeDouble(Bid,Digits);
        //curLo=NormalizeDouble(Bid,Digits);
        curH1=hh;
     }
     curM1=mm;
  }
  if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits);
  if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits);
  //HiH1 = iHigh(NULL,PERIOD_H1,0);
  //LoH1 =  iLow(NULL,PERIOD_H1,0);
  HiH1 = iHigh(NULL,PERIOD_D1,0);
  LoH1 =  iLow(NULL,PERIOD_D1,0);
  HiH1 = NormalizeDouble(HiH1,Digits);
  LoH1 = NormalizeDouble(LoH1,Digits);
  str = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
  mHi = ", curHi=" + DoubleToStr(curHi,Digits);
  mLo = ", curLo=" + DoubleToStr(curLo,Digits);
  hHi = ", HiH1="  + DoubleToStr(HiH1, Digits);
  hLo = ", LoH1="  + DoubleToStr(LoH1, Digits);
  if (HiH1!=curHi||LoH1!=curLo)
  {  Print(str,mHi,hHi,mLo,hLo);
     FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1);
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{  Print("Работа закончена");
   FileClose(handle);
//---- done
   return(0);
}

Y este es un trozo del registro, que se obtuvo al ejecutar este EA en EURUSD, M1 de 2007.07.10 a 2007.07.14. Como se puede ver en el texto del EA, la comparación fue con los datos diarios. Sin embargo, si se compara con los datos horarios la situación no es mejor. Quería obtener una confirmación de la posibilidad de mirar hacia el futuro o asegurarme de que no existe tal posibilidad. Sin embargo, resultó ser algo completamente diferente.

Como se puede ver en la imagen, el tiempo impreso en el registro por el probador y el tiempo mostrado por el Asesor Experto ocasionalmente difieren entre sí. Además, hay algunos contratiempos incomprensibles. La hora 2007.07.13 00:58, 2007.07.12 00:58, 2007.07.13 00:02, 2007.07.13 00:04, 2007.07.13 00:06 y 2007.07.13 00:07. Y cada vez que el Asesor Experto da salida a 2007.07.12 23:58:59.

Tal vez, la discrepancia de datos alta y baja en esos momentos ha sido causada exactamente por esos fallos de sincronización.

Además, aconsejo prestar atención a la prueba de impresión en el archivo, que se encuentra en la función init(). Esta impresión muestra que los segundos no funcionan en el probador. En consecuencia, TimeToStr() en modo segundos y la función TimeSeconds() no funcionan. Tal vez, estaba previsto así, pero entonces ¿por qué tanto el probador como el Asesor Experto imprimen datos con segundos?

Ni siquiera planteo la cuestión de la discrepancia entre los datos de alta y baja, porque no está en absoluto claro de dónde proceden estos datos en esta época oscura.

Una cosa más. Al hacer las pruebas desde 2007.07.09 hasta 2007.07.14 y no desde 2007.07.10 hasta 2007.07.14 me encuentro con cosas anormales como que faltan totalmente los datos de los saldos altos y bajos, es decir, las variables HiH1 y LoH1 siempre tienen valores cero.

¿Puede ser que me haya equivocado en alguna parte?

 
Hola Yurixx.
He ejecutado su Asesor Experto sin cambiar nada en el código. Aquí están todos los datos del archivo que produce:
Fecha Hora curHi HiH1 curLo LoH1<br/ translate="no"> 2007.07.12 23:58:00 0 58 23 12
2007.07.13 00:58:00 0 58 0 13
2007.07.13 00:02:00 0 2 0 13
Aquí está el registro:
2007.08.13 09:54:51 2007.07.13 22:59 Prospección simple EURUSD,M1: Trabajo terminado
2007.08.13 09:54:48 2007.07.10 00:00 Prospección simple EURUSD,M1: Periodo de prueba 1 min
2007.08.13 09:54:48 Prospección simple iniciada para pruebas
2007.08.13 09:54:45 Prospección simple: cargada con éxito
Ni un solo error en las pruebas desde el 2007.07.10 hasta el 2007. 07.14. Cierto, entonces recordé que tengo una construcción especial de prueba de la semana pasada. La compilación habitual 208 de agosto 01 (ahora actualizado un término por LibeUpdate) no tiene ningún error también:
2007.08.13 10:13:04 2007.07.13 22:59 Prospección simple EURUSD,M1: Trabajo terminado
2007.08.13 10:13:04 2007.07.10 00:00 Prospección simple EURUSD,M1: Periodo de prueba de 1 minuto
2007.08.13 10:13:04 Prospección simple iniciada para pruebas
El asunto es que antes de la prueba he descargado los datos perdidos del Centro de Historias (no he iniciado este terminal desde hace un par de meses) y luego he recalculado todos los plazos - he pulsado "Descargar" en el Centro de Historias por segunda vez, en este caso sugiere recalcular todos los t/f automáticamente y no es necesario el convertidor de períodos (por si la gente no conoce esta función).


Pero antes había salidas de error en el registro:

2007.08.13 10:08:19 1999.05.26 02:01 Simple Prospección GBPUSD,M1: Trabajo terminado
2007.08.13 10:08:18 1999.01.04 09:31 Simple Prospección GBPUSD,M1: 1999.01. 04 09:31:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:30 Prospección simple GBPUSD, M1: 1999.01. 04 09:30:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:29 Prospección simple GBPUSD, M1: 1999.01. 04 09:29:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:28 Prospección simple GBPUSD, M1: 1999.01. 04 09:28:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:27 Prospección simple GBPUSD, M1: 1999.01. 04 09:27:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:26 Prospección simple GBPUSD, M1: 1999.01. 04 09:26:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:25 Prospección simple GBPUSD, M1: 1999.01. 04 09:25:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:24 Prospección simple GBPUSD, M1: 1999.01. 04 09:24:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:23 Simple Prospección GBPUSD, M1: 1999.01. 04 09:23:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:22 Prospección simple GBPUSD, M1: 1999.01. 04 09:22:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:21 Prospección simple GBPUSD, M1: 1999.01. 04 09:21:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:20 Prospección simple GBPUSD, M1: 1999.01. 04 09:20:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:19 Prospección simple GBPUSD, M1: 1999.01. 04 09:19:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:18 Prospección simple GBPUSD, M1: 1999.01. 04 09:18:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:17 Prospección simple GBPUSD, M1: 1999.01. 04 09:17:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:16 Prospección simple GBPUSD, M1: 1999.01. 04 09:16:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:15 Prospección simple GBPUSD, M1: 1999.01. 04 09:15:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:14 Prospección simple GBPUSD, M1: 1999.01. 04 09:14:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6686
2007.08.13 10:08:18 1999.01.04 09:13 Prospección simple GBPUSD, M1: 1999.01. 04 09:13:00, curHi=1.6682, HiH1=1.6697, curLo=1.6682, LoH1=1. 6597
2007.08.13 10:08:15 1999.01.04 09:13 Prospección simple GBPUSD,M1: Periodo de prueba 1 minuto
2007.08.13 10:08:15 Prospección simple iniciada para pruebas

Descargué esos datos para el EURUSD, pero empecé a probar para el GBPUSD, que no fue bombeado y recalculado. Esa era la razón de las incoherencias.
Intente hacer lo mismo: cargue los datos y sincronícelos automáticamente o utilice el script de conversión de períodos.

Investigaremos lo de los segundos, gracias.
 

¡Hola Rosh!

Gracias por su respuesta. Por lo que he entendido, crees que el desajuste de los datos de Alta y Baja de los diferentes embudos se debe a la calidad del flujo de cotizaciones. Por lo tanto, las velas se forman de manera diferente en diferentes embudos y por lo tanto pueden ser diferentes por 1-2-3 pips. Es muy posible.

He estado haciendo pruebas utilizando los datos del servidor de demostración MQ. Y no los escribo en tiempo real, sino que descargo todos los datos una vez a la semana, los fines de semana. En realidad pensaba que los candeleros se dibujan en todos los TFs, al menos en el servidor, por el software del servidor, de forma sincrónica para todos los TFs, basándose en un único flujo de cotización y por lo tanto tales diferencias son imposibles. Si no es así, es una pena, habrá que tenerlo en cuenta de alguna manera... Combinar los datos, la sincronización, etc. para que todo quede bien es, en mi opinión, el camino equivocado. Tanto su servidor como los servidores de los intermediarios entregan los datos a medida que los entregan. Y hay que operar sobre estos mismos datos y no sobre lo que se convierte después de algún tiempo. Para el proceso de prueba es especialmente importante. Todo el mundo conoce el problema de los griales - un espacio en el probador y una pérdida en el robot de comercio real. ¿De dónde viene? MQ insiste en que mirar al futuro es imposible y que la modelización de las garrapatas es muy apropiada para el proceso. Hay que suponer que es así. De ahí que, efectivamente, el problema sean los datos... MQ no puede resolver este problema, los datos no dependen de él. A continuación, hay que hacer que el comprobador funcione correctamente con cualquier dato, no sólo con los que están bien peinados.

Pero mi post no se refería a las discrepancias en los datos de diferentes t/f, sino a la confusión en el tiempo. Y el hecho de que hayas publicado no elimina el problema. Por el contrario, en relación con tu post quiero preguntar lo siguiente.

En mi registro los datos de tiempo tanto del probador como del EA contienen segundos. En el tuyo, los datos en el probador no contienen segundos en absoluto, y los datos en tu EA contienen sólo cero segundos. Esto me lleva a preguntar: en qué modo realizaste la prueba. Quiero ser claro - este EA sólo está destinado a las pruebas en el modo "todos los ticks". Y el error que he encontrado sólo se puede reproducir desde este modo. Por lo tanto, si usted ha estado probando en otro modo, por favor repita la prueba, sólo tomará un segundo.

En principio, no hay ninguna diferencia en cuanto a qué par y en qué rango de fechas probar. Y en los TFs que no sean M1, el Asesor Experto no funcionará. Sin embargo, para poder comparar nuestros resultados, le pido que haga una prueba en el EURUSD, en el rango entre el 2007 .07.10 y el 2007.07.14, y, en otra prueba, en el rango entre el 2007.07.09 y el 2007.07.14.

Se lo agradezco de antemano.

 
Yurixx:

¡Hola Rosh!

En mi registro, tanto los datos de tiempo del probador como los del EA contienen segundos. En el suyo, los datos del probador no contienen ningún segundo y los datos del EA sólo contienen cero segundos. Lo que nos lleva a preguntarnos: ¿qué modo has utilizado para las pruebas? Quiero ser claro - este EA sólo está destinado a las pruebas en el modo "todos los ticks". Y el error que he encontrado sólo se puede reproducir desde este modo. Por lo tanto, si usted ha estado probando en otro modo, por favor repita la prueba, sólo tomará segundos.

En principio, no hay ninguna diferencia en cuanto a qué par y en qué rango de fechas probar. Y en los TFs que no sean M1, el Asesor Experto no funcionará. Sin embargo, para poder comparar nuestros resultados, le pido que haga una prueba en el EURUSD, en el rango entre el 2007 .07.10 y el 2007.07.14, y, en otra prueba, en el rango entre el 2007.07.09 y el 2007.07.14.

Gracias de antemano.


Efectivamente, lo he buscado ahora y he visto que no tenía segundos. Creo que tiene que ver con el hecho de que no tenía datos para GBPUSD cargados automáticamente durante 1 hora y 1 día en la primera prueba (no tenía gráficos abiertos en la terminal en absoluto), pero intenté comprobarlo ahora por segunda vez y no hubo ningún error: cargué los datos necesarios en la primera prueba.

Es decir, la primera vez no había datos para los periodos H1 y D1 para el GBPUSD y, por tanto, hubo errores en la modelización.
 
Hice una prueba "en el EURUSD en el rango 2007 .07.10 a 2007.07.14, y, en una prueba separada, en el rango 2007.07.09 a 2007.07.14" como pediste, ninguna diferencia.
 
Rosh:

Investigaremos lo de los segundos, gracias.


Se ha corregido el error con los segundos (en el compilador). La versión corregida estará disponible en breve.
 
Rosh:
Se ha corregido el error con los segundos (en el compilador). La versión corregida estará disponible en breve.
¿Podemos esperar que en la compilación corregida el probador grail77 ya no funcione?
 
granit77:
Rosh:
Se ha corregido el error con los segundos (en el compilador). La versión corregida estará disponible en breve.
¿Podemos esperar que en la versión corregida del probador grail77 ya no funcione?

Lo comprobaré mañana.