Questions des débutants MQL5 MT5 MetaTrader 5 - page 223
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Après-midi. Veuillez aider un trader débutant à trouver un conseiller approprié pour le trading automatisé, qui soit capable d'ouvrir des ordres verrouillés dans des paires de devises avec la possibilité d'un réglage arbitraire du take profit. Merci.
Autre possibilité : déclarer dans chacun d'eux une méthode de type, dans laquelle l'identifiant du type de retour.
Heh, si tu pouvais éditer le code source... Vous n'avez pas besoin de simplifier autant les choses. Et encore - y a-t-il un nom de classe dans mql5 ?
Heh, si tu pouvais éditer le code source... Vous n'avez pas besoin de simplifier autant les choses. Cependant, existe-t-il un moyen pour mql5 de connaître le nom d'une classe ?
Regardez dans la direction des modèles. Ce code retournera le nom de la classe ou un type primitif.
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
voidOnStart()
{
//---
Commerce CTrade ;
double d_value=M_PI ;
int i_value=INT_MAX ;
Print("d_value : type=",GetTypeName(d_value),", value=", d_value) ;
Print("i_value : type=",GetTypeName(i_value),", value=", i_value) ;
Print("transaction : type=",GetTypeName(trade);
//---
}
//+------------------------------------------------------------------+
//| Retourne le type sous forme de chaîne de caractères|
//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T&t)
{
//---renvoie le type sous forme de chaîne de caractères
return(typename(T))
//---
}
Cherchez des modèles. Ce code renvoie le nom d'une classe ou d'un type primitif.
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
voidOnStart()
{
//---
Commerce CTrade ;
double d_value=M_PI ;
int i_value=INT_MAX ;
Print("d_value : type=",GetTypeName(d_value),", value=", d_value) ;
Print("i_value : type=",GetTypeName(i_value),", value=", i_value) ;
Print("transaction : type=",GetTypeName(trade);
//---
}
//+------------------------------------------------------------------+
//| Retourne le type sous forme de chaîne de caractères|
//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T&t)
{
//---renvoie le type sous forme de chaîne de caractères
return(typename(T))
//---
}
J'ai quelque chose ! Mais cela ne fonctionne pas avec new - dans le code il y a un exemple de ce dont j'ai besoin - peut-être que quelqu'un peut suggérer comment ?
J'ai quelque chose ! Mais cela ne fonctionne pas avec new - il y a un exemple dans le code de ce dont j'ai besoin - quelqu'un peut-il suggérer un moyen ?
Quelqu'un peut-il m'expliquer pourquoi ce code ne fonctionne pas dans le testeur, alors qu'en temps réel il fonctionne ! !!? Je suis particulièrement intéressé par la raison pour laquelle, dans le testeur, après HistorySelect(0, TimeCurrent()), le HistoryOrderGetInteger...
Capture d'écran dans le testeur de stratégie :
Capture d'écran en temps réel dans la démo :
p.s. Ce qui est intéressant, c'est que la première commande dans le testeur est traitée correctement mais les autres ne le sont pas. De même, si nous commentons HistroryOrderSelect(ticketOrder), nous obtenons un message dans le testeur de stratégie indiquant que l'ordre n'a pas été sélectionné et dans le testeur de stratégie, tout commence à fonctionner, sauf le premier ordre.
Et j'ai un problème avec HistorySelect(). J'ouvre une position avec le script en envoyant un ordre au marché, et si une transaction s'ouvre, je vérifie immédiatement le nombre de transactions dans l'historique depuis le lancement du script, et je le vérifie 10 fois à une seconde d'intervalle. Évidemment, il ne devrait y avoir qu'un seul échange. Voici le script :
Et voici le résultat dans Alfa-Forex :
Une transaction est effectivement effectuée, mais elle n'apparaît pas dans l'historique, même après 10 secondes. Qu'est-ce que c'est ? Un bug de MT ? Un problème d'alpha ? Une sorte de puce que je ne connais pas ? Alpari a le même script qui fonctionne normalement, seulement occasionnellement un zéro est détecté à la première étape (zéro) (bien, c'est compréhensible - l'historique n'a pas encore eu le temps de se mettre à jour), toutes les autres étapes sont un. Mais après dix secondes, pourquoi n'y a-t-il pas d'accord dans l'histoire ?
Et j'ai un problème avec HistorySelect(). J'ouvre une position avec le script en envoyant un ordre au marché, et si une transaction s'ouvre, je vérifie immédiatement le nombre de transactions dans l'historique depuis le lancement du script, et je le vérifie 10 fois à une seconde d'intervalle. Évidemment, il ne devrait y avoir qu'un seul échange. Voici le script :
Et voici le résultat du courtier Alpha :
Une transaction est effectivement effectuée, mais elle n'apparaît pas dans l'historique, même après 10 secondes. Qu'est-ce que c'est ? Un bug de MT ? Un problème d'alpha ? Une sorte de puce que je ne connais pas ? Alpari a le même script qui fonctionne normalement, seulement occasionnellement un zéro est détecté à la première étape (zéro) (bien, c'est compréhensible - l'historique n'a pas encore eu le temps de se mettre à jour), toutes les autres étapes sont un. Mais pourquoi n'y a-t-il pas d'accord dans l'histoire en dix secondes ?
Ce qui me dérange, c'est la ligne suivante
datetime dtStartTime = TimeCurrent() ;
Êtes-vous sûr que dtStartTime et TimeCurrent() ne sont pas le même nombre par le moment pour ? Peut-être que l'arrondi à une seconde place la transaction terminée en dehors de dtStartTime.
La ligne
datetime dtStartTime = TimeCurrent() ;
Etes-vous sûr que dtStartTime et TimeCurrent() ne sont pas le même nombre par le temps pour ? Peut-être que l'arrondi à une seconde place la transaction terminée en dehors de dtStartTime.
Et même si c'est un, MT ne devrait-il pas sortir l'historique de cette seconde ? En d'autres termes, ne produit-il pas l'historique dans les limites spécifiées, Y COMPRIS les limites elles-mêmes ?
Mais de toute façon, j'ai essayé d'écrire à la fois dtStartTime = TimeCurrent() - 1, et dtStartTime = TimeCurrent() - 10. Ça ne marche pas.