Erreurs, bugs, questions - page 2684

 
Renat Fatkhullin:

Il est fort probable que sur le terminal où la connexion échoue, les anciens points d'accès sont mis en cache et qu'il n'y en a pas de nouveaux (les courtiers changent la configuration des points d'accès).

1) Sur un terminal non connecté, avez-vous déjà établi des connexions (réussies ou non) avec le Swissquote-Server ?

Je ne l'ai pas fait.

2) Allez dans la fenêtre de compte ouvert, entrez "Swissquote-Server", appuyez sur Entrée, attendez le succès et essayez de vous connecter à nouveau.

Exactement ce que je fais toujours lorsque j'ai besoin de me connecter à un serveur qui n'était pas dans la liste. Le serveur est listé, pas de connexion.

3) S'agit-il d'un ordinateur réinstallé/nouveau/non utilisé ? Quel système d'exploitation et y a-t-il des mises à jour ?

Terminal natif.

2020.03.26 08:05:40.967 Terminal        Swissquote Bank MT5 Client Terminal x64 build 2368 started for Swissquote Bank SA
2020.03.26 08:05:40.969 Terminal        Windows 7 Service Pack 1 build 7601, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:05:40.969 Terminal        C:\Program Files\Swissquote Bank MT5 Client Terminal


Alien Terminal.

2020.03.26 08:06:51.678 ICMarkets - MetaTrader 5 x64 build 2368 started for International Capital Markets Pty Ltd.
2020.03.26 08:06:51.679 Windows 7 Service Pack 1 build 7601, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:06:51.679 C:\Program Files\ICMarkets - MetaTrader 5


Fonctionne sur la même machine. Si je détruis le dossier de configuration, la connexion passe. Mais alors je perds les données de tous les autres comptes sur Research Terminal.


ZS Pouvez-vous m'envoyer l'adresse IP du serveur pour que je puisse l'essayer directement ?

 
fxsaber:

Je ne l'ai pas fait.

C'est ce que je fais toujours lorsque j'ai besoin de me connecter à un serveur qui n'était pas dans la liste. Le serveur est listé, pas de connexion.

Terminal natif.


Alien Terminal.


Fonctionne sur la même machine. Si je détruis le dossier de configuration, la connexion se fait. Mais alors je perds les données de tous les autres comptes sur Research Terminal.


ZS Pouvez-vous me communiquer l'adresse IP du serveur pour que je puisse l'essayer directement ?

Je me suis connecté sans problème :

2020.03.26 13:34:06.558 Network new demo account '6036452' opened on Swissquote-Server
2020.03.26 13:34:21.308 Network '8550475': disconnected from MetaQuotes-Demo
2020.03.26 13:34:22.540 HistoryCenter   delete old files from E:\MetaQuotes\MetaTrader 5\bases\Swissquote-Server\history\AEP, last access time 2018.03.02 18:42
2020.03.26 13:34:23.588 Experts automated trading is disabled because the account has been changed
2020.03.26 13:34:23.946 Network '6036452': authorized on Swissquote-Server
2020.03.26 13:34:23.946 Network '6036452': previous successful authorization performed from 176.49.173.218 on 2020.03.26 07:34:05
2020.03.26 13:34:25.751 Network '6036452': terminal synchronized with Swissquote Bank SA
2020.03.26 13:34:25.751 Network '6036452': trading has been enabled - hedging mode
2020.03.26 13:34:26.843 Network '6036452': scanning network for access points
2020.03.26 13:35:01.961 Network '6036452': scanning network finished
 
Artyom Trishkin:

J'ai tout connecté sans problème :

Oui, la démo entre sans problème.

2020.03.26 08:42:07.401 new demo account '6036453' opened on Swissquote-Server
2020.03.26 08:42:09.188 '6036453': authorized on Swissquote-Server


Sur le vrai, ce n'est pas le cas.

2020.03.26 08:42:40.551 '6036453': disconnected from Swissquote-Server
2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server
 
fxsaber:

Oui, la démo entre sans problème.


Sur le vrai, non.

Il y avait deux serveurs :

J'ai créé la démo sur le premier.

Peut-être réel sur le second ?

 
Artyom Trishkin:

Il y avait deux serveurs :

J'ai créé une démo sur le premier.

La même chose.

Peut-être réel sur le second ?

Il y avait un serveur commercial différent sur le second.

 

Les gars, aidez-moi s'il vous plaît !

Il y a peu de temps, j'ai commencé à programmer, j'ai eu ces erreurs, dites-moi de quoi il s'agit...

1. J'ai utilisé MarketInfo(Symbol(),MODE_TICKVALUE). Ma paire EURUSD dans le testeur montre le nombre 0.01, mais dans le terminal il est 1.

2. iClose,iOpen,iHigh,iLow renvoient parfois 0 lorsque shift=1.


Merci.

 

La question de la vitesse de ArrayResize()+réserve me préoccupe toujours.
Cette fois, le problème concerne les tableaux detypes de données primitives.

#define  K 1000
#define  M (1000 * K)

#define    SpeedTest(test_count,msg,EX_pref, EX_test, EX_post) {         \
               uint result = 0; ulong count=test_count;                 \
               for(ulong ii=0;ii<count&&!_StopFlag;ii++){               \ 
                   EX_pref                                              \
                   uint start=GetTickCount();                           \
                   EX_test                                              \
                   result += GetTickCount() - start;                    \ 
                   EX_post                                              \
               }                                                        \
               printf("%-60s: loops=%i ms=%u",msg,count,result);}
                                              
class A{
public:
   int data;
};


template<typename T>
void test1(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize all", typename(T)),
      {}
      ,
      {
         ArrayResize(class_array, array_size);
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, array_size, i);
            class_array[i-1] = NULL;
         }
      },
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

template<typename T>
void test2(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize one by one with reserved memory", typename(T)),
      {},
      {
         ArrayResize(class_array, array_size);         
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, i, i);
            class_array[i-1] = NULL;
         }
      },   
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

 


void OnStart()
{
  const int test_count = 1;
  const int array_size = 20*K*K;  
  
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<int>(test_count, array_size);              // Avg time: release( 120) / debug( 155)
   test2<int>(test_count, array_size);              // Avg time: release( 205) / debug( 235)
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<double>(test_count, array_size);           // Avg time: release( 155) / debug( 190)
   test2<double>(test_count, array_size);           // Avg time: release( 250) / debug( 260)
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<A*>(test_count, array_size);              // Avg time: release( 190) / debug( 200)
   test2<A*>(test_count, array_size);              // Avg time: release( 330) / debug( 340)
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
}

Par rapport à la version précédente, le code a été légèrement amélioré :
- pour les deux tests, ArrayResize est garanti d'être appelé le même nombre de fois, précédemment l'optimiseur a contribué...
- Le temps d'ArrayFree est exclu du calcul de la durée d'exécution ;


Pour les types de données primitifs, ArrayResize()+reserve est exécuté plus de 3 fois plus lentement que le ArrayResize() habituel (205 ms contre 65 ms).
C'est beaucoup, ainsi pour Generic\ArrayList.mqh sur 20M d'appels à CArrayList::Add la vitesse sans et avec réservation de mémoire est 1,85 fois différente (170 ms vs 95 ms).
Il y a manifestement quelque chose qui ne va pas ici.

Existe-t-il un moyen d'améliorer la vitesse des types primitifs de fonctionnalité ArrayResize()+reserve?
Qu'est-ce qui pourrait être une si grande perte là-bas ?

Je comprends que la réalité puisse être bien plus compliquée, mais il n'y a que quelques contrôles qui affectent le résultat de l'exécution :

IsDynamic == true
IsIndexBuffer == false
IsSetAsSerrias == false
nouvelle_taille > taille
nouvelle_taille < capacité
IsFundamental == true (ou constructor et destructor == 0)

Certaines vérifications peuvent même être combinées via un bitmask pour accélérer la direction principale, plus probable, de l'exécution du code.
Et dans les rares cas où la vérification du bitmask échoue, pour préciser en plus lequel des drapeaux a affecté le résultat...

 
fxsaber:

Oui, la démo entre sans problème.

Sur le vrai, non.

2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server

Bonne journée,

1. Sur le terminal (recherche), où il n'y a pas de connexion au compte réel, ce compte est présent dans la liste des comptes ?

C'est-à-dire, est-ce que ce compte xxxxxxxx apparaît dans le navigateur ?


2. S'il existe un compte xxxxxxxx, est-il affiché avec le nom YYYYY après deux points (et pas seulement sous forme de numéro) ?

3. si le compte xxxxxxxx est présent, alors si vous le supprimez (dans le navigateur via la commande de menu Supprimer) et que vous vous reconnectez, alors la connexion est réussie ?


Merci.

 
Anton:

1. Sur le terminal (terminal de recherche) où la connexion au compte réel ne passe pas, ce compte est-il présent dans la liste des comptes ?

C'est-à-dire, si ce compte xxxxxxxx est affiché dans le navigateur :

Il affiche xxxx.

2. Si le compte xxxxxxxx est présent, est-il affiché avec le nom YYYYY après un deux-points (et pas seulement comme un numéro) ?

Pas de YYYY et pas de deux points.

3. si j'ai un compte xxxxxxxx, si je le supprime (dans le navigateur via Supprimer) et le reconnecte, se connectera-t-il ?

Je l'ai eu !


On dirait que la première fois que je me suis connecté, j'ai juste entré le nom du serveur. Cette entrée est apparue dans le navigateur, mais il n'y avait pas de données sur le serveur commercial et un blanc s'y trouvait. Et même après avoir forcé les données à travers la recherche de ce compte, un blanc était toujours substitué.


Merci !


SZZ Sur le sujet.

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

Nouvelle version de la plateforme MetaTrader 5 build 2280

fxsaber, 2020.02.19 11:32

Lorsque je me connecte à un compte de négociation existant, si je spécifie un nom de serveur de négociation erroné, le compte est déplacé dans le navigateur d'une manière telle que l'on pourrait penser qu'il a simplement disparu.


Lorsque vous vous connectez à MetaQuotes-Demo, spécifiez l'adresse du serveur MetaQuotes-Demo2. Voyez ce qui se passe dans le Navigateur. Veuillez appliquer cette règle aux comptes existants uniquement après une connexion réussie.

Chaîne de recherche: Uluchshenie 005.
 
Je n'ai pas trouvé d'informations à ce sujet

le testeur de stratégie en mode d'optimisation "Lent (énumération complète des paramètres)" - à quelle valeur totale des étapes d'optimisation passe-t-on à l'optimisation génétique ?

ZS : Je serais reconnaissant s'il existe une méthodologie pour effectuer une recherche complète de sorte que l'optimisation génétique ne soit pas activée.
Raison: