Erreurs, bugs, questions - page 708

 

Bonjour OpenCL ! En mode débogage, le code fonctionne très bien..... Mais dans le testeur, il donne l'erreur 5100 lors de l'appel de CLContextCreate... Service Desk ?

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)

Terminal GPU : Advanced Micro Devices, Inc. Turcs avec OpenCL 1.1 (6 unités, 725 MHz, 1024 Mb, version CAL 1.4.1703 (VM))

Build 619 Windows 7 SP1 64-x

...

Je l'ai répété sur PC avec un autre jeu vidéo - cela n'a pas aidé...

Dossiers :
 
MigVRN:

En mode débogage, le code fonctionne très bien..... Mais dans le testeur, il génère l'erreur 5100 lorsque CLContextCreate est appelé... Service Desk ?

Je ne pense pas que ce soit un bug, je pense qu'OpenCL ne fonctionne pas dans le testeur - le support est désactivé. Invalidité temporaire ou permanente, c'est une question ouverte.
 
MigVRN:

Bonjour OpenCL ! En mode débogage, le code fonctionne parfaitement.... Mais dans le testeur, il donne l'erreur 5100 lors de l'appel de CLContextCreate... Service Desk ?

...

Je l'ai répété sur le bureau avec un autre jeu vidéo, sans résultat...

Je ne me souviens pas avoir annoncé qu'OpenCL était activé dans le testeur, peut-être ai-je manqué quelque chose.

Tant que la fonctionnalité est déboguée dans le terminal, dès qu'elle sera prête, le support sera connecté dans le testeur.

Ils devront également prendre en charge les tests à distance.

 
MetaDriver:
Je ne pense pas que ce soit un bug. Je pense qu'OpenCL ne fonctionne pas dans le testeur - le support est désactivé. Invalidité temporaire ou permanente, c'est une question ouverte.
Urain:

Je ne me souviens pas qu'il ait été annoncé qu'OpenCL était activé dans le testeur, peut-être ai-je manqué quelque chose.

Pendant que la fonctionnalité est déboguée dans le terminal, dès qu'elle sera prête, le support dans le testeur sera activé.

Ils devront également prendre en charge les tests à distance.

Merci ! :( J'ai hâte de voir ça... J'ai déjà vraiment envie de l'essayer.
 

J'ai décidé d 'écrire une EA. Lorsque je commence à écrire quelque chose à partir de zéro, je vérifie toujours chaque étape pour voir s'il n'y a pas d'erreurs, et je vérifie l'efficacité du code. Je n'aimais pas la façon dont le conseiller expert travaillait avec un événement tel que "nouvelle barre". J'ai cherché longtemps pour trouver la raison - je n'ai trouvé le fond du problème que lorsque le code ne contient que des lignes

//+------------------------------------------------------------------+
//| Fonction tick expert|
//+------------------------------------------------------------------+
void OnTick()
{
Alert("New tick",TimeCurrent()) ;
}
//+------------------------------------------------------------------+

Le résultat est une qualité de simulation de 100%, 38242987 ticks simulés, mais il y a des omissions sauvages dans le log du testeur (jours entiers), je n'ai compté que 13259 ticks...
Quelle pourrait être la raison ?

Dossiers :
20120408.log  2074 kb
 

Renat, Slava, il est possible de se rapprocher de la paramétrisation en créant (facilement) une directive spéciale dupréprocesseur qui fonctionne comme #include, mais qui permet des compilations répétées du même insluder. Exemple :

#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"

Actuellement, il compile mais ne fonctionne pas (ou plutôt ne fonctionne que pour le premier #include). Une directive spéciale (#reinclude, #Include ou #template) pourrait résoudre le problème. D'ailleurs, cela vous ferait aussi gagner beaucoup de temps lors de l'écriture de surcharges de fonctions pour les types standard.Et la bibliothèque standard pourrait devenir compacte et agréable à regarder. Et vous pourriez vous rapprocher des classes paramétrables "normales" - il suffit d'ajouter une nouvelle syntaxe au langage et d'automatiser les #reinclude cachés.

// exemple de travail, où cette inclusion est déployée par mon propre préprocesseur ici.

Dossiers :
ISort.mqh  2 kb
 

Il s'agit également d'une variante du paramétrage des classes.

#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));
     }
  }

Cela fonctionne. Vous pouvez même ajouter l'héritage. ;)

Mais pour pouvoir utiliser cette option de manière plus ou moins fiable, vous devez au moins déplacer les lignes dans les macros.

// Et ce gimmick (quand on n'y est pas habitué ?) semble plutôt bizarre. :))

Dossiers :
DefTest.mq5  2 kb
 
MetaDriver:

Renat, Slava, vous pouvez vous rapprocher de la paramétrisation en créant (facilement) une directive spéciale dupréprocesseur qui fonctionne de manière similaire à #include, mais qui permet des compilations répétées du même insluder. Exemple :

L'idée est claire, mais il est préférable de mettre en œuvre des modèles dès maintenant.

Nous y reviendrons plus tard.

 
Renat:

L'idée est claire, mais il est préférable de mettre en œuvre les modèles dès maintenant.

Nous y reviendrons plus tard.

Yay !!! Merci.
 

Cette entrée dans le testeur passe avec brio, la tentative d'attacher l'EA au graphique donne une erreur.

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