Errores, fallos, preguntas - página 708

 

¡Hola OpenCL! En el modo de depuración el código funciona muy bien.... Pero en tester da error 5100 al llamar a CLContextCreate... ¿Servicio de atención al cliente?

Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz with OpenCL 1.1 (4 units, 2095 MHz, 5990 Mb, version 2.0)

GPU terminal: Advanced Micro Devices, Inc. Turcos con OpenCL 1.1 (6 unidades, 725 MHz, 1024 Mb, versión CAL 1.4.1703 (VM))

Compilación 619 Windows 7 SP1 64-x

...

Lo repetí en PC con otro videojuego - no ayudó...

Archivos adjuntos:
 
MigVRN:

En el modo de depuración el código funciona muy bien.... Pero en el probador genera el error 5100 cuando se llama a CLContextCreate... ¿Servicio de atención al cliente?

No creo que sea un bug, creo que OpenCL no funciona en el tester - el soporte está desactivado. Invalidez temporal o permanente, es una cuestión abierta.
 
MigVRN:

¡Hola OpenCL! En el modo de depuración el código funciona muy bien.... Pero en el probador da el error 5100 al llamar a CLContextCreate... ¿Servicio de atención al cliente?

...

Lo repetí en el escritorio con un videojuego diferente - no ayudó...

No recuerdo haber anunciado que OpenCL estuviera habilitado en el probador, tal vez me he perdido algo.

Mientras la funcionalidad se depure en el terminal, en cuanto esté lista se activará el soporte en el probador.

También habrá que apoyar las pruebas a distancia.

 
MetaDriver:
No creo que sea un error. Creo que OpenCL no funciona en el probador - el soporte está desactivado. Invalidez temporal o permanente, es una cuestión abierta.
Urain:

No recuerdo que se anunciara que OpenCL estaba habilitado en el probador, tal vez me perdí algo.

Mientras se depura la funcionalidad en el terminal, en cuanto esté lista, se activará el soporte en el probador.

También tendrán que apoyar las pruebas a distancia.

¡Gracias! :( Estaré pendiente de ello... Tengo muchas ganas de probarlo ya.
 

Decidí escribir un EA. Cuando empiezo a escribir algo desde cero, siempre compruebo cada paso para ver si hay errores, y compruebo la eficiencia del código. No me gustó la forma en que el Asesor Experto trabajó con tal cosa como el evento "nueva barra". Busqué mucho para encontrar la razón - sólo llegué al fondo cuando el código contiene sólo líneas

//+------------------------------------------------------------------+
//| Función de garrapata experta|
//+------------------------------------------------------------------+
void OnTick()
{
Alert("New tick",TimeCurrent());
}
//+------------------------------------------------------------------+

Como resultado obtuve una calidad de simulación del 100%, 38242987 ticks simulados, pero hay omisiones salvajes en el registro del probador (días enteros), conté sólo 13259 ticks...
¿Cuál podría ser la razón?

Archivos adjuntos:
20120408.log  2074 kb
 

Renat, Slava, es posible acercarse a la parametrización haciendo (fácilmente) una directiva especialdel preprocesador que funcione de forma similar a #include, pero que permita la compilación repetida del mismo insluder. Ejemplo:

#define ArrayType double
#include "ISTemplate.mqh"
#define ArrayType float
#include "ISTemplate.mqh"
#define ArrayType int
#include "ISTemplate.mqh"
#define ArrayType uint
#include "ISTemplate.mqh"
#define ArrayType long
#include "ISTemplate.mqh"
#define ArrayType ulong
#include "ISTemplate.mqh"
#define ArrayType short
#include "ISTemplate.mqh"
#define ArrayType ushort
#include "ISTemplate.mqh"
#define ArrayType char
#include "ISTemplate.mqh"
#define ArrayType uchar
#include "ISTemplate.mqh"
#define ArrayType string
#include "ISTemplate.mqh"

Ahora mismo compila pero no funciona (o más bien sólo funciona para el primer #include). Una directiva especial (#reinclude, #Include o #template) podría resolver el problema. Por cierto, también ahorraría mucho tiempo al escribir sobrecargas de funciones para tipos estándar.Y la biblioteca estándar podría llegar a ser compacta y de aspecto agradable. Y podría acercarse a las clases parametrizables "normales" - sólo hay que añadir una nueva sintaxis al lenguaje y automatizar el #reinclude oculto.

// ejemplo de trabajo, donde esta inclusión es desplegada por mi propio preprocesador aquí.

Archivos adjuntos:
ISort.mqh  2 kb
 

Esta es también una variante de la parametrización de la clase.

#define _MyContainer(name,type,size) class name {public: type array[size]; virtual type At(int i){return array[i];}}
#define  ASize 8
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   _MyContainer(MyClass,int,ASize);
   MyClass MyVar;
   Print(sizeof(MyVar)); 
   for(int i=0;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for(int i=0;i<ASize;i++)
     {
      Print(MyVar.At(i));
     }
  }

Funciona. Incluso puedes añadir la herencia. ;)

Pero para poder utilizar esta opción de forma más o menos fiable, hay que mover al menos líneas en las macros.

// Y este truco (cuando no estás acostumbrado a él...) parece bastante raro. :))

Archivos adjuntos:
DefTest.mq5  2 kb
 
MetaDriver:

Renat, Slava, puedes acercarte a la parametrización haciendo (fácilmente) una directiva especialdel preprocesador que funcione de forma similar a #include, pero que permita la compilación repetida del mismo insluder. Ejemplo:

La idea está clara, pero es mejor aplicar las plantillas de inmediato.

Volveremos a hablar de esto más adelante.

 
Renat:

La idea está clara, pero es mejor aplicar las plantillas de inmediato.

Volveremos a hablar de esto más adelante.

Gracias.
 

Esta entrada en el probador pasa con éxito, al intentar adjuntar el EA al gráfico da un error.

int OnInit()
  {
   hPerCros=iCustom(_Symbol,0,"\\Каналы\PercentageCrossoverChannel",Percent,Shift) ;
   if( hPerCros < 0)
      Print("Ошибка создания индикатора=  ",GetLastError());
   return(0);
  }