Erros, bugs, perguntas - página 94

 
vdv2001:

Encontrei um tal problema, um conhecido pediu-me para escrever a um especialista para verificar a funcionalidade TS. Pensei que o escreveria em 5 (é mais conveniente escrevê-lo + depurador). Eu escrevi, obtive o resultado:

Acho que é bom, posso reescrevê-lo para 4.

Reescrevi-o 1:1. Este TS não tem indicadores, apenas tempo e intervalo de preços. O resultado surpreendeu-me muito:

O período de testes é de 1.01.2000 até hoje.

Qual será o testador que mostra o resultado certo?

O número de transacções é muito grande, pelo que surge a questão dos spreads - são os mesmos para ambos os testes?

 

Como atribuir um valor a uma matriz bidimensional? Escrevo assim:

positions[j, 0]=PositionGetInteger(POSITION_MAGIC);

O resultado é um erro: ',' - ficha inesperada''.


 
EvgeTrofi:

Como atribuir um valor a uma matriz bidimensional? Escrevo assim:

O resultado é um erro: ',' - ficha inesperada'.


Faça-o desta forma:

   double array[2][4];
   array[1][0]=5;
PS. Há exemplos de declarações de matriz na ajuda.
 

Como posso traduzir correctamente um tipo de dados para outro?

Por exemplo, arredondar para cima um valor de ponto flutuante e transferi-lo para uma variável com um tipo de dado inteiro.

Ao tentar fazer isto:

   double Close = iCloseMQL4(Symbol(),Period(), 1);
   double Open =  iOpenMQL4(Symbol(),Period(), 1);
   int Midle=MathRound(MathAbs(Close-Open)/_Point);

Na última linha da compilação, aparece um aviso:"possível perda de dados devido à conversão do tipo".

Haverá alguma forma de o evitar?

 
Rosh:

Faça-o:

PS. Há exemplos de declarações de matriz na ajuda.
Obrigado! Funcionou. Mas é exactamente a mesma linha na ajuda
array[1][0]=5;
Não consegui encontrar!
 
EvgeTrofi:
Obrigado! Funciona. Mas não consegui encontrar um fio desses na ajuda!

Pode não ser escrito directamente, mas há um exemplo de declaração de uma matriz multidimensional, e há um exemplo de referência a um elemento de matriz no texto:

Arrays

Uma matriz é uma colecção indexada de dados idênticos:

int a[50]; // Uma matriz unidimensional de 50 números inteiros.
duplo m[7][50];// Uma matriz bidimensional de sete matrizes,
// cada uma constituída por 50 números.
MyTime t[100];// matriz contendo elementos do tipo MyTime

Um índice de matriz só pode ser um número inteiro. Não são permitidas mais do que arrays tetradimensionais. Os elementos de uma matriz são numerados começando por 0. O último elemento de um array unidimensional é numerado 1 menos do que o tamanho do array, ou seja, aceder ao último elemento de um array de 50 inteiros parecerá um[49]. O mesmo é válido para as matrizes multidimensionais, com uma dimensão a ser indexada de 0 a 1. O último elemento da matriz bidimensional do exemplo parecerá m[6][49].

 
EvgeTrofi:

Como posso traduzir correctamente um tipo de dados para outro?

Por exemplo, arredondar para cima um valor de ponto flutuante e transferi-lo para uma variável com um tipo de dado inteiro.

Ao tentar fazer isto:

Há um aviso na última linha ao compilar:

Haverá alguma forma de o evitar?

Sim, fazer uma conversão de tipo explícita.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Obrigado! descobriu!!!! :)
 
Rosh:

O número de transacções é muito elevado, pelo que se coloca a questão sobre os spreads - são os mesmos para ambos os testes?

Par de moedas EURJPY em Cinco teste, de acordo com os seus dados.

Quatro é Alpari, o minuto em que os dados foram descarregados do seu servidor através de Quote Archive -> Download.

Obviamente há uma diferença nos spreads, mas o resultado é muito diferente.

Para 2500 negócios a diferença deveria ser no máximo 2500$-5000$, mas é 10000$, como dizem não acredite nos seus olhos.

A propósito, há 1 comércio por dia na condição de um lucro não inferior a 8 (80 - cinco dígitos) pips.

 
Como posso alterar o meu e-mail no meu perfil?