Questions des débutants MQL5 MT5 MetaTrader 5 - page 1159

 
Vladimir Karputov:
Êtes-vous sûr que l'échange fonctionne pour le symbole demandé la nuit ?

Je ne force pas le terminal à m'envoyer des ticks à un moment précis qu'il n'a pas, j'envoie juste une requête :

from=0,// la date à partir de laquelle les ticks sont demandés.

count=0// nombre de ticks à recevoir

Et ça m'envoie l'histoire elle-même, n'est-ce pas ?

 
VANDER:

Je ne force pas le terminal à m'envoyer des ticks à un moment précis qu'il n'a pas, j'envoie juste une requête :

from=0,// la date à partir de laquelle les ticks sont demandés.

count=0// nombre de ticks à recevoir

Et ça m'envoie l'histoire elle-même, n'est-ce pas ?

Si les transactions sont fermées pour le symbole demandé (par exemple, c'est la nuit) - d'où viendront les ticks pour le symbole demandé ?
 

Vérifié, pour le symbole principal RTS-12.19 sur lequel le Conseiller Expert fonctionne, le dernier tick était à 23:59:30 et SBRF-12.19 à 23:52:21 donc il ne pouvait pas télécharger les ticks ?

Et quel intérêt présente la fonction SymbolInfoTick qui l'aide à devenir intelligent ?

 
VANDER:

Vérifié, pour le symbole principal RTS-12.19 sur lequel le Conseiller Expert fonctionne, le dernier tick était à 23:59:30 et SBRF-12.19 à 23:52:21 donc il ne pouvait pas télécharger les ticks ?

Et quel intérêt présente la fonction SymbolInfoTick qui l'aide à le comprendre ?

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie

FAQ des débutants MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.12.08 13:20

Si les enchères sur le symbole demandé sont fermées (par exemple, la nuit), d'où le symbole demandé obtiendra-t-il ses ticks ?

 
VANDER:

Vérifié, pour le symbole principal RTS-12.19 sur lequel le Conseiller Expert fonctionne, le dernier tick était à 23:59:30 et SBRF-12.19 à 23:52:21 donc il ne pouvait pas télécharger les ticks ?

Et en quoi la fonction SymbolInfoTick est-elle intéressante ?

Voici l'EA :

//+------------------------------------------------------------------+
//|                                                  CopyTicks_1.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.100"
#property description "Сравнение трёх режимов получения тиков"
//--- input parameters
input string   name  = "RTSSiZ9";      // символ по которому запрашиваем тики
input int      ticks = 3000;           // количество запрашиваемых тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  SymbolSelect(name,true);
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- массив для приема тиков
   MqlTick ExTicks[];
//--- запросим тики
   ResetLastError();
   int copied=CopyTicks(name,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
  }
//+------------------------------------------------------------------+

Fonctionne sur RTSSRZ9 (c'est SBRF-Dec19) - voici les paramètres :


Demande de ticks en RTSSiZ9 (c'est Si-Dec19).

Résultat :

2019.08.30 07:00:00   Получено тиков: -1 код ошибки: 4004
2019.08.30 07:00:01   Получено тиков: 2 код ошибки: 0
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:01 bid: 22552.0 ask: 22697.0 last: 0.0 [1]
2019.08.30 07:00:02   Получено тиков: 3 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:02 bid: 22425.0 ask: 22856.0 last: 0.0 [2]
2019.08.30 07:00:02   Получено тиков: 4 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]

et ainsi de suite ...


C'est-à-dire que sur le serveur réel, tout fonctionne. Si cela ne fonctionne pas pour vous : 1. Travailler sur un serveur réel, pas un serveur de démonstration, 2. Vérifiez votre code.

Dossiers :
 

Le compte est plus que réel, je fais des transactions dessus. J'ai utilisé votre code, j'ai même défini tous les paramètres exactement et vous allez rire, voici le journal complet :


2019.12.08 21:08:38.787 MetaTester 5 started on 127.0.0.1:3000
2019.12.08 21:08:38.790 initialization finished
2019.12.08 21:08:39.088 login (build 2265)
2019.12.08 21:08:39.120 4372 bytes of account info loaded
2019.12.08 21:08:39.120 1482 bytes of tester parameters loaded
2019.12.08 21:08:39.120 1212 bytes of input parameters loaded
2019.12.08 21:08:39.138 29043 bytes of symbols list loaded
2019.12.08 21:08:39.138 expert file added: Experts\CopyTicks_1.ex5. 16437 bytes loaded
2019.12.08 21:08:39.152 6116 Mb available, 76 blocks set for ticks generating
2019.12.08 21:08:39.152 initial deposit 10000.00 USD, leverage 1:100
2019.12.08 21:08:39.153 successfully initialized
2019.12.08 21:08:39.153 37 Kb of total initialization data received
2019.12.08 21:08:39.153 Intel Core i5-3450  @ 3.10 GHz, 8157 MB
2019.12.08 21:08:39.198 RTS-12.19: symbol to be synchronized
2019.12.08 21:08:39.199 RTS-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:39.199 RTS-12.19: history synchronization started
2019.12.08 21:08:39.201 RTS-12.19: load 33 bytes of history data to synchronize in 0:00:00.000
2019.12.08 21:08:39.201 RTS-12.19: history synchronized from 2018.01.12 to 2019.12.06
2019.12.08 21:08:39.201 RTS-12.19: ticks synchronization started
2019.12.08 21:08:39.202 RTS-12.19: load 40 bytes of tick data to synchronize in 0:00:00.000
2019.12.08 21:08:39.202 RTS-12.19: history ticks synchronized from 2019.01.03 to 2019.12.05
2019.12.08 21:08:39.205 RTS-12.19,H1: history cache allocated for 2480 bars and contains 971 bars from 2018.01.12 13:00 to 2019.08.29 23:00
2019.12.08 21:08:39.205 RTS-12.19,H1: history begins from 2018.01.12 13:00
2019.12.08 21:08:39.207 RTS-12.19,H1 (Open-Broker): generating based on real ticks
2019.12.08 21:08:39.207 RTS-12.19,H1: testing of Experts\CopyTicks_1.ex5 from 2019.08.30 00:00 to 2019.11.26 00:00 started with inputs:
2019.12.08 21:08:39.207   name=SBRF-12.19
2019.12.08 21:08:39.207   ticks=3000
2019.12.08 21:08:39.263 SBRF-12.19: symbol to be synchronized
2019.12.08 21:08:39.263 SBRF-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:40.615 RTS-12.19 : real ticks begin from 2019.01.03 00:00:00
2019.12.08 21:08:55.958 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:56.877 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:57.764 2019.08.30 09:52:14   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:58.739 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:59.784 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:04.628 2019.08.30 10:00:03   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:05.579 2019.08.30 10:00:04   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:06.596 2019.08.30 10:00:06   Получено тиков: -1 код ошибки: 4401

La seule différence, c'est que ça commence le soir, mais ensuite c'est pareil même le matin.

 
VANDER:

Le compte est plus que réel, je fais des transactions dessus. J'ai utilisé votre code, j'ai même défini tous les paramètres exactement et vous allez rire, voici le journal complet :


La seule différence est que ça commence la nuit, mais ensuite c'est pareil même le matin...

ERR_HISTOIRE_NON_FONDÉE

4401

L'historique demandé n'a pas été trouvé

Depuis quelle date et jusqu'à quelle date leSBRF-12.19 est-il négocié? Ces dates sont-elles comprises entre le 30.08.2019 et le 26.11.2019 ?

 
Vladimir Karputov:

ERR_HISTOIRE_NON_FONDÉE

4401

L'historique demandé n'a pas été trouvé

Depuis quand leSBRF-12.19 est-il négocié et jusqu'à quand ? Ces dates sont-elles comprises dans la fourchette 2019.08.30-2019.11.26 ?

Oui, ça arrive à toutes les dates.


Oubliez ça, j'ai trouvé une solution pour moi, en utilisant la fonction

SymbolInfoTick(необходимый символ)

Ensuite, CopyTicks() commence à fonctionner avec lui, peut-être que Openbox a des problèmes avec d'autres courtiers que je n'ai pas vérifiés, peut-être que cela sera utile pour quelqu'un.

 
VANDER:

Oui, ils le font, ça arrive à toutes les dates.


Ok, oublie ça, j'ai trouvé une solution pour moi, utilise la fonction avant...

Ensuite, CopyTicks() commence à fonctionner avec lui, peut-être qu'il a des problèmes sur d'autres courtiers que je n'ai pas vérifiés, peut-être que cela sera utile pour quelqu'un.

Cela dépend clairement du serveur de négociation - cela a fonctionné pour moi.
Peut-être qu'ils ne mettent pas à jour leur partie serveur pendant dix ans.
 
fxsaber :

Qu'est-ce qui empêche de corriger le code pour qu'il n'y ait pas d'avertissement ?

Lorsque vous avez 600 avertissements, vous devez trouver des lignes avec des erreurs (en fait, j'en ai plus si j'active le mode strict).

Et presque tous les avertissements sont inutiles. Parce que beaucoup d'entre elles concernent des variables cachées ou des conversions de type. Certaines personnes pensent peut-être que vous pouvez vous tromper, mais ce n'est pas courant chez les programmeurs expérimentés.

Mt4 était justifié pour les débutants. Mais le langage mql5 actuel est suffisamment sophistiqué pour avoir une utilité pour les débutants. Et les programmeurs expérimentés n'ont pas besoin de 600 lignes sur quelque chose qui est clairement fait pour une raison.


Il s'agit évidemment de mon opinion subjective, mais d'autres langues vous permettent de décider du niveau de verbosité que vous souhaitez.

Raison: