Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1214

 
Artyom Trishkin:

Afin de maintenir les données historiques à jour "à chaud", vous devez accéder à ces données toutes les deux minutes en utilisant l'une des fonctions CopyXXX, iXXX, par exemple CopyTime(), iTime(), etc...

Je ne sais pas quels volumes vous n'avez pas dans le testeur. Il existe des volumes réels et des volumes fictifs. Sans le code ne peut pas répondre à la substance.

Le code est le même que celui que j'ai téléchargé précédemment (légèrement modifié). Copie des tics :

 MqlTick tick_array[];
      uint start = GetTickCount();
      int received = CopyTicks(_Symbol, tick_array, COPY_TICKS_TRADE, periodStartTime*1000, ticksSizeToCopy);
            if(received != -1) {
               PrintFormat("%s: received %d ticks in %d ms", _Symbol, received, GetTickCount() - start);
               if(GetLastError() != 0) 
                  PrintFormat("%s: таймер Ticks are not synchronized yet, %d ticks received for %d ms. Error=%d",
                              _Symbol, received, GetTickCount() - start, _LastError);
            }

Ensuite, il y a une demande de volumes. Par exemple (simplifié) :

int ticks = ArraySize(tick_array);
for (int i = 0; i < ticks; i ++) {
         if((tick_array[i].flags&TICK_FLAG_BUY) == TICK_FLAG_BUY) {
               if(tick_array[i].volume > max) max = tick_array[i].volume;
        }
}

Si vous ne faites que l'attacher à un graphique, c'est bon. Si je l'attache à un testeur, alors pour une raison quelconque, il n'y a pas de volumes...

 
Yevhenii Levchenko:

Le code est le même que celui que j'ai posté précédemment (légèrement modifié). Copie des tics :

Ensuite, il y a une demande de volumes. Par exemple (simplifié) :

Si je me contente de le joindre à un graphique, tout va bien. Si c'est dans le testeur de stratégie, alors il n'y a pas de volumes...

Note sur la fonction CopyTicks(). A propos des drapeaux.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
[in]  Количество запрашиваемых тиков. Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные последние тики, но не более 2000. Первый вызов CopyTicks() инициирует синхронизацию базы тиков, хранящихся на жёстком диске по данному символу. Если тиков в локальной базе не хватает, то недостающие тики...
 

Chers collègues, veuillez m'expliquer pourquoi je ne peux pas mettre 2 ou 3 indicateurs ATR avec des délais différents sur un graphique en même temps ?

Même en modifiant le décalage pour éviter les chevauchements visuels, un seul indicateur fonctionne et est affiché sur le graphique ?

entrée int InpOffsetX = 10 ; // Offset X
entrée int InpOffsetY = 80 ;// Décalage Y

Plus précisément, si je change de TF, le deuxième apparaît, mais le premier disparaît ; les trois s'affichent alternativement sur différents TF, mais pas tous ensemble. L'ordre ne peut pas être tracé.

 
Artyom Trishkin:

Lisez la note sur CopyTicks(). A propos des drapeaux.

Je ne comprends pas ce que vous voulez dire. Je semble utiliser les bons drapeaux... Et ça marche dans la vraie vie... mais le testeur ne le veut pas.
 
Artyom Trishkin:

Où ai-je dit que je n'étais pas bon en logique ?

Vos mots du post précédent : " Pour faire des algorithmes, il me semble qu'il faut de la logique. Et on est loin des mathématiques. Et ici, je ne suis pas ami avec elle - seulement le matériel de référence nécessaire et l'aide de ceux qui sont amis".
 
Artyom Trishkin:
Pour faire des algorithmes, je pense qu'il faut de la logique. Et on est loin des mathématiques. Et ici, je n'y connais rien - seulement le bon matériel de référence et l'aide de ceux qui le font.

Le travail du programmeur n'est pas de résoudre des tâches complexes, mais de faire en sorte que l'ordinateur les fasse pour lui. Mais cela peut nécessiter la résolution d'autres tâches complexes, que le programmeur exécute docilement. :)

 
ANDREY:
Vos mots d'un post précédent : " Pour faire des algorithmes, il me semble qu'il faut de la logique. Et on est loin des mathématiques. Et je ne suis pas ami avec elle - seulement le bon matériel de référence et l'aide de ceux qui le sont".

Non, ça ne l'est pas. C'est comme ça :

"Pour faire des algorithmes, il me semble qu'il faut de la logique. Et on est loin des mathématiques. Et je n'en suis pas l'ami - seulement le bon matériel de référence et l'aide de ceux qui le sont".

En termes de sens, les deux phrases sont voisines. Mais vous avez trouvé votre sens...

 
Mihail Matkovskij:

Le travail du programmeur n'est pas de résoudre des tâches complexes, mais de faire en sorte que l'ordinateur les fasse pour lui. Mais cela peut nécessiter la résolution d'autres tâches complexes, que le programmeur exécute docilement. :)

Le maître d'œuvre des règles du cours. Mais il doit être un programmeur pour rester dans la course)))).

 
Valeriy Yastremskiy:

La règle du problème, bien sûr. Mais il doit être un programmeur pour rester dans la course)))).

C'est ça le truc, le gestionnaire de tâches est aussi l'exécuteur. Mais pas toujours.

 

Veuillez me conseiller. J'ai un EA qui prend les données (temps) d'un indicateur et compte la différence en millisecondes entre les ticks.

Je l'ai sortie via Alert et j'obtiens ce qui suit (voir image). Comme je le vois, j'obtiens d'abord le nombre total de millisecondes, puis la différence en millisecondes entre les 4 derniers ticks (entre 1 et 2, 2 et 3, 3 et 4).

Pourquoi est-ce que c'est comme ça ? J'ai seulement besoin des valeurs pour le 4ème tick.

temps

Dossiers :
ind_time.mq4  1 kb
exp_time.mq4  2 kb