Erros, bugs, perguntas - página 708

 

Olá OpenCL! Em modo de depuração o código funciona bem.... Mas no testador dá erro 5100 ao chamar CLContextCreate. Balcão de serviço?

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 com OpenCL 1.1 (6 unidades, 725 MHz, 1024 Mb, versão CAL 1.4.1703 (VM))

Construir 619 Windows 7 SP1 64-x

...

Repetiu-o no PC com outro videojogo - não ajudou...

Arquivos anexados:
 
MigVRN:

Em modo de depuração o código funciona bem.... Mas no testador gera erro 5100 quando CLContextCreate é chamado... Balcão de serviço?

Não penso que seja um insecto, penso que o OpenCL não funciona no testador - o suporte está desactivado. Temporariamente incapacitado ou permanentemente, é uma questão em aberto.
 
MigVRN:

Olá OpenCL! No modo de depuração o código funciona bem.... Mas no testador dá erro 5100 ao chamar CLContextCreate. Balcão de serviço?

...

Repetiu-o no ambiente de trabalho com um videogame diferente - não ajudou...

Não me lembro de ter anunciado que o OpenCL foi activado no testador, talvez me tenha escapado algo.

Enquanto a funcionalidade estiver depurada no terminal, assim que o suporte estiver pronto no testador será ligado.

Haverá também que apoiar os testes à distância.

 
MetaDriver:
Penso que o OpenCL não funciona no testador - o suporte está desactivado. Temporariamente incapacitado ou permanentemente, é uma questão em aberto.
Urain:

Não me lembro de ter sido anunciado que o OpenCL foi activado no testador, talvez me tenha escapado alguma coisa.

Enquanto a funcionalidade está a ser depurada no terminal, assim que estiver pronta, o suporte no aparelho de teste será ligado.

Terão também de apoiar os testes à distância.

Obrigado! :( Aguardo com expectativa... Quero mesmo experimentar já.
 

Decidi escrever um EA. Quando começo a escrever algo a partir do zero, verifico sempre cada passo em busca de erros, e verifico o código em busca de eficiência. Não gostei da forma como o Expert Advisor trabalhou com eventos como o "novo bar". Procurei longa e difícil de encontrar a razão - só cheguei ao fundo da questão quando o código contém apenas linhas

//+------------------------------------------------------------------+
//| Função de carrapato de perito|
///+
+ void OnTick()
{
Alert("Novo tick",TimeCurrent());
}
///+ +

Como resultado obtive uma qualidade de simulação de 100%, 38242987 ticks simulados, mas há omissões selvagens no registo do testador (dias inteiros), contei apenas 13259 ticks...
Qual poderia ser a razão?

Arquivos anexados:
20120408.log  2074 kb
 

Renat, Slava, é possível chegar perto da parametrização fazendo (facilmente) uma directiva especial depré-processador que funciona semelhante a #include, mas permite compilações repetidas do mesmo insluder. Exemplo:

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

Neste momento compila mas não funciona (ou melhor, só funciona para o primeiro #incluir). Uma directriz especial (#reincluir, #incluir ou #template) poderia resolver o problema. A propósito, poupar-lhe-ia muito tempo também, quando a função de escrita sobrecarrega para tipos padrão.E a biblioteca padrão pode tornar-se compacta e bonita. E pode aproximar-se das classes "normais" parametrizáveis - basta adicionar uma nova sintaxe à linguagem e automatizar o #reincluir oculto.

// exemplo de trabalho, onde esta inclusão é aqui implantada pelo meu próprio pré-processador.

Arquivos anexados:
ISort.mqh  2 kb
 

Esta é também uma variante de parametrização de 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));
     }
  }

Funciona. Pode mesmo acrescentar herança. ;)

Mas para poder utilizar esta opção de forma mais ou menos fiável, é necessário, pelo menos, mover linhas em macros.

// E este gimmick (quando não se está habituado?) parece bastante estranho. :))

Arquivos anexados:
DefTest.mq5  2 kb
 
MetaDriver:

Renat, Slava, pode chegar perto da parametrização fazendo (facilmente) uma directiva especial depré-processador que funciona semelhante a #include, mas permite compilações repetidas do mesmo insluder. Exemplo:

A ideia é clara, mas é melhor implementar de imediato os modelos.

Voltaremos a este assunto mais tarde.

 
Renat:

A ideia é clara, mas é melhor implementar os modelos de imediato.

Voltaremos a este assunto mais tarde.

Muito obrigado.
 

Esta entrada no testador passa com cores vivas, Tentar anexar a EA ao gráfico dá um erro.

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