Erros, bugs, perguntas - página 3005

 
O que aconteceu à ligação "Todas as mensagens" no perfil?
 
fxsaber:
Para onde foi o link para "Todas as mensagens" no perfil?
.
 
Alexey Viktorov:

Obrigado!

 

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

Preços não normalizados em MT4

fxsaber, 2021.04.30 10:42

Dois números diferentes convertidos em cadeia da mesma forma. É um insecto?

void OnStart()
{
  const double Num = 1.07299;
  const double Norm = NormalizeDouble(Num, 5);
   
  Print(Num);  // 1.07299
  Print(Norm); // 1.07299

  Print(Num - Norm); // 2.220446049250313e-16
}

A situação é semelhante a esta.

 

Indicador personalizado em subjanela, tipo oscilador.
Como ocultar a linha zero por defeito ?
A coloração da linha zero da GUI, para combinar com a cor de fundo não funciona.

i

definir propriedades no indicador, não funciona

#property indicator_level1  0.0
#property indicator_levelcolor C'35,35,35'
 
fxsaber:

Os números são diferentes, mas a diferença é de 17 casas decimais, e a Print lida apenas com 15 casas decimais, pelo que do ponto de vista da Print são os mesmos

 
A100:

Os números são diferentes, mas a diferença é a 17ª casa decimal, enquanto que o Print lida apenas com 15 dígitos, pelo que do ponto de vista do Print são os mesmos.

Apenas não imprimir, mas conversão de duplo em cordel.

 

Figura 1

Reparei nisto. Se os dados do teste de avanço forem repetidos (os mesmos), ao visualizar o Backtest para as três variantes, apenas a variante (10384.88) será mostrada primeiro.

Fig2

Os dados para variantes com resultados = 10435 ou 10843 são desconhecidos (tudo nos relatórios para variante = 10384)??


 

Pode dizer-me como copiar correctamente os dados dos apontadores?

É necessário copiar dados de um objecto para outro. Em seguida, apagar o objecto inicial. Quando se apaga o objecto original, os dados no objecto da cópia tornam-se inacessíveis.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;        // создаем объект для текущих параметров
    pCur.id = 25;               // вносим текущие данные
    ArrCur.Add(pCur);           // помещаем в массив объектов
    
    CID* pPrev = ArrCur.At(0);  // копируем данные??? Указатель???
    ArrPrev.Add(pPrev);         // помещаем в массив объектов
    
    ArrCur.Clear();             // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_INVALID
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

}
 
Aí estão as cópias do ponteiro
Razão: