Erreurs, bugs, questions - page 1203

 

Erreur pendant l'exécution : casting incorrect des pointeurs (build 977, mais ça arrivait de temps en temps avant)

//AAA15.mq5
#define  PF              Print( __FUNCTION__ );
#define  PFI( i )        Print( __FUNCTION__, " ", i );
class A { public:
};
class R { public:
        void y( A* a )          { PF  ((B *)a).g( 1 ); }
};
class L : public R { public:
        void y( A* a )          { PF  ((B *)a).g( 2 ); }
};
class B : public A { public:
        virtual void g( R* r )  { PF  r.y( GetPointer( this ) ); delete( r ); }
        virtual void g( int i ) { PFI( i ) }
};
class C : public B { public:
        virtual void g( int i ) { PFI( i ) }
};
#import "AAA17.ex5"
        C *f();
#import "AAA16.ex5"
        void h();
        R *w();
#import
#ifndef  HEADER
void OnStart()
{
        f().g( w() );
        h();
}
#endif
//AAA16.mq5
#property library
#define  HEADER
#include "AAA15.mq5"
void h() export { PF  f().g( w()); }
R *w()   export { PF  return new L(); }
//AAA17.mq5
#property library
#define  HEADER
#include "AAA15.mq5"
class X { public:
        X()           { PF  c = new C(); }
        virtual ~X()  { PF  delete( c ); }
        C *c;
};
static X x;
C *f() export { PF  return ( x.c ); }

Si vous déplacez quelque chose (par exemple, échanger les déclarations #import) ou créer 2 fichiers au lieu de 3 ou supprimer l'appel h() - alors au lieu des erreurs spécifiées, d'autres erreurs se produisent

Si vous recomposez le code ci-dessus, il finira par appeler R::y au lieu de L::y

Dans une version plus complexe, certaines fonctions courantes des modules sont appelées avant ( !) les constructeurs statiques eux-mêmes (comme si dans l'exemple ci-dessus f() était appelé avant X::X, qui à son tour est correctement appelé avant OnStart). Je vais essayer de citer un exemple, mais les fichiers sont énormes. Mais parfois cela fonctionne correctement, donc l'erreur ne vient pas de moi car l'ordre de création des objets est défini par le compilateur lui-même et je ne peux pas le changer.

 

J'ai également remarqué que si le module principal (OnStart) est modifié de façon insignifiante (ajout d'une variable ou d'une impression), il ne démarre souvent pas tant que tous les modules ex5 utilisés ne sont pas recompilés. À ce moment-là, un message dans Experts informe qu'il n'y a pas de fonction, dont l'existence est connue, dans l'un des modules ex5 non essentiels (dont il est prouvé qu'il est opérationnel après recompilation de tous les modules).

Et expérimentalement, il a été constaté que les fonctions qui sont appelées avant ( !) les constructeurs statiques sont appelées exactement à partir de cette fonction (que MT ne peut trouver périodiquement)

 
Chers programmeurs, qui pourrait me conseiller sur la façon de préparer un EA pour le marché ? Vous pouvez m'écrire en personne et/ou ici.
 
yosuf:
Chers programmeurs, qui pourrait me conseiller sur la façon de préparer un EA pour le marché ? Je peux le faire en personne et/ou ici.
Vous pouvez ouvrir un sujet distinct et y discuter de la question.
 
Aujourd'hui, il y a eu un étrange problème avec MT4 : le compte de démonstration sur le serveur MetaQuotes-Demo dans le "Navigateur" du terminal a été soudainement déplacé vers la liste d'un autre courtier. J'ai dû supprimer ce compte errant du terminal, puis le saisir à nouveau.
 
Renat:

Sur les vrais serveurs d'échange, bien sûr, les volumes sont séparés pour la vente et l'achat.

Sur les serveurs d'échange de test (à ne pas confondre avec le forex), les cotations proviennent souvent d'un système de simulation de test complètement différent et les "serveurs de démonstration" d'échange ne doivent en aucun cas être utilisés pour l'analyse.

Renat,

Merci !

 
Renat:
А время было торговым? Лучше всего обратиться в службу поддержки брокера.
Время торговое, тики тикают. К брокеру обратился. Они ответили, что российские CFD - индикативы. Почему они отображаются в терминале черным, они не знают.
En général, la poursuite de la recherche a donné les résultats suivants. Lorsque vous placez le curseur de la souris sur les tickers dans la vue d'ensemble du marché, une info-bulle apparaît, où pour les symboles gris Trade : No. Mais pour les CFD russes, qui sont affichés en noir, Trade : Close est affiché (une fois encore, il convient de noter que le temps est à la négociation et que les ticks sur le symbole viennent à ce moment). J'en conclus que le courtier dispose de plusieurs niveaux de blocage des transactions, dont certains seulement (ou même un seul) sont marqués en gris, et tous les autres sont empilés dans une pile commune avec les symboles actifs, car ils sont affichés en noir.
 
marketeer:
Quoi qu'il en soit, des recherches plus poussées ont donné ces résultats. Lorsque vous placez le curseur de la souris sur les tickers dans la vue d'ensemble du marché, une info-bulle apparaît, dans laquelle pour les symboles gris il est écrit Trade : No. Mais pour les CFD russes, qui sont affichés en noir, Trade : Close est affiché (une fois encore, il faut noter que le temps est à la négociation et que les ticks sur le symbole viennent à ce moment). J'en conclus que le courtier dispose de plusieurs niveaux de blocage des transactions, dont certains seulement (ou même un seul) sont marqués en gris, et tous les autres sont empilés dans une pile commune avec les symboles actifs, car ils sont affichés en noir.

Une question a été posée sur la coloration des personnages.

Voici la réponse spécifique à la coloration sur le serveur de démonstration MQ^.

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

Coloriage dans Market Watch

barabashkakvn, 2014.05.12 18:55

Voici la réponse du Service Desk : "Sur notre serveur, la couleur de fond du symbole ne signifie essentiellement rien.

Si nous parlons spécifiquement de la couleur de la police dans le nom du symbole : le gris signifie que la négociation sur le symbole est désactivée, le noir uni signifie que la négociation est autorisée.

Par exemple, pour déchiffrer la couleur de fond du symbole, vous devez contacter votre courtier et il n'existe pas de norme unifiée en matière de coloration.

Mais voici une promesse pour y remédier :

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

Les couleurs sur le marché

Renat, 2014.05.13 12:37

La folie des couleurs aurait dû être abordée il y a longtemps.

Nous ajouterons une commande de réinitialisation des couleurs et de nouvelles commandes pour regrouper et trier les instruments dans la fenêtre.

Les systèmes de commande, les menus et les interfaces de MT4/MT5 ont été radicalement modernisés et une version bêta sera disponible avant l'iFX EXPO du 25 mai. D'une manière générale, les nouvelles constructions offriront des possibilités étonnantes aux commerçants.


 
barabashkakvn:

Une question a été posée sur la coloration des personnages.

Voici la réponse spécifique à la coloration sur le serveur de démonstration de MQ^.

et voici une promesse pour réparer ça :


Peut-être. Mais en fait, ce n'est pas encore très pratique, car l'interface utilisateur est trompeuse. En attente d'améliorations.
 

Rien n'est imprimé

string g( string str = __FUNCTION__ ) { return ( str ); }
void OnStart()
{
        Print( g() );
}

Pourquoi pas ?

Raison: