Erros, bugs, perguntas - página 2291

 
Alexey Navoykov:

não é possível determinar programmaticamente que objecto é mais alto ou mais baixo.

Pode valer a pena observar a ordem em que os objectos são armazenados no modelo. Penso que quanto mais tarde o objecto é armazenado ali, mais alto está acima dos outros.
 

A biblioteca .ex5 não pode ser carregada se estiver localizada no directório comum de todos os terminais clientes MetaTrader 5 (Common\MQL5\Libraries) como descrito na Documentação- "Pesquisar a biblioteca EX5 importada na seguinte sequência: ponto 3".

#import "Test.ex5"
        void f();
#import
void OnStart()
{
        f();
}

Resultado: não pode abrir o ficheiro 'Test.ex5'.

enquanto 'Test.ex5' está na pasta Common\MQL5\Libraries

 
fxsaber:
Pode valer a pena observar a ordem em que os objectos são armazenados no modelo. Penso que quanto mais tarde um objecto é aí armazenado, mais alto está acima dos outros.
A fim de colocar um objecto acima de todos os outros, independentemente da ordem em que é armazenado, deve primeiro torná-lo invisível em todos os períodos de tempo, e depois torná-lo novamente visível
 
Tetyana Shcherba:

Não sei se estou a escrever no sítio certo, mas no meu sinal, que serve para monitorizar o desempenho da EA, surgiu um aviso que não tem absolutamente nada a ver com a realidade.

""80% dos ganhos foram obtidos em 16 dias. Isso é 4% da vida útil total do sinal de 376 dias".


Como pode isto ser, ou estou a interpretar mal alguma coisa?

Também ontem reparei nisso. Devem estar a fixar a fórmula.
 

Os passes que retornam INIT_PARAMETERS_INCORRECT durante a Optimização têm as seguintes entradas no registo

Core 3  pass 90 tested with error "incorrect input parameters" in 0:00:00.000
Core 3  pass 91 tested with error "incorrect input parameters" in 0:00:00.125
Core 3  pass 92 tested with error "incorrect input parameters" in 0:00:00.141


Ao mesmo tempo, aparecem nos resultados da optimização por alguma razão


Pode ver na imagem do ecrã que são classificados por lucro, mas os passes incorrectos não sucumbem a esta classificação. Portanto, quando desço a lista, vejo passagens incorrectas em vez de negativas. O valor zero supostamente indica que não há passagens negativas. Tenho de rolar para baixo para encontrar estes passes muito negativos, a menos que seja enganado por este comportamento da GUI.


Anteriormente, não era possível mostrar os nulos do OnInit e do ExpertRemove nos resultados da Optimização. E mesmo que fossem mostradas, as suas filas na tabela estavam marcadas a vermelho. É possível trazer este comportamento de volta?


Ao exportar XML, passa informação de que algumas linhas da tabela são Resultados incorrectos? Se bem entendi, esta bandeira de correcção é guardada no formato opt-format ainda não aberto.

Seria bom poder obtê-lo no OnTesterPass.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Erros, bugs, perguntas

fxsaber, 2018.09.13 06:16

No final da Optimização, o testador dá isto
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl são passes que chegaram ao fim. O resto é interrompido por ExpertRemove.


Por que bandeira o Testador classifica os passes recebidos dos Agentes? Como posso ler esta bandeira no OnTesterPass?


E na tabela de Optimização seria bom não mostrar passes incorrectos.


 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2018.09.13 06:16

No final da Optimização, o testador produz este
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl são os passes que chegaram ao fim. O resto é interrompido por ExpertRemove.


Não percebo porque é que o Testador não diz uma palavra sobre passes de sucesso

Tester  optimization finished, total passes 1800

Existem passes interrompidos ExpertRemove, mas a resposta no final não é de todo como se vê na citação acima.

 
Slava:
Para colocar um objecto acima de todos os outros, independentemente da ordem em que é colocado, deve primeiro torná-lo invisível em todos os períodos de tempo e depois torná-lo novamente visível
Já escrevi sobre isto na página anterior. A questão era diferente: como posso então determinar isto programmaticamente?
 
Alexey Navoykov:
Já escrevi sobre isto na última página. A questão era diferente: como é que se determina isto programmaticamente?
Não
 
Erro de compilação
typedef void (*fn1)();
void f1() {}
void g()
{
        fn1 f = f1; //(1) нормально
}
/*...*/
typedef void (*fn2)();
void f2() {}
void OnStart()
{
        fn2 f = f2; //(2) Error: 'f2' - type mismatch
}

Que diferença é que isso faz!?

 
Slava:
Não
// В комментарии к чарту выводит текущую Z-глубину всех графических объектов чарта

#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003
#undef private

#define  STRING_END "\r\n"
#define  OBJECT_NAME "name="
#define  OBJECT_BEGIN ("<object>" + STRING_END)

int GetZObjects( string &Names[], const long Chart_ID = 0 )
{
  const int Size = ArrayResize(Names, ObjectsTotal(Chart_ID));
  string Template = EXPERT::TemplateToString(Chart_ID);  
  
  for (int i = 0; i < Size; i++)
  {
    Template = EXPERT::StringBetween(Template, OBJECT_BEGIN);
    
    Names[i] = EXPERT::StringBetween(Template, OBJECT_NAME, STRING_END);
  }
  
  return(Size);
}

void OnChartEvent( const int id, const long&, const double&, const string& )
{
  if ((id == CHARTEVENT_OBJECT_CHANGE) ||
      (id == CHARTEVENT_OBJECT_CLICK) ||
      (id == CHARTEVENT_OBJECT_CREATE) ||
      (id == CHARTEVENT_OBJECT_DELETE) ||
      (id == CHARTEVENT_OBJECT_DRAG) ||
      (id == CHARTEVENT_OBJECT_ENDEDIT))
  {
    string ZObjects[];
    
    string Str = NULL;
    
    for (int i = GetZObjects(ZObjects) - 1; i >= 0; i--)
      Str += (string)i + " Z: " + ZObjects[i] + "\n";
      
    Comment(Str);
  }
}
Razão: