Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 627
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
Pouvez-vous me dire comment calculer la garantie d'une transaction ?
J'ai essayé deux approches
(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)
Et celui-ci
FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);
double val=AccountFreeMargin()-FreeMarginCheck;
Le premier donne des résultats étranges sur l'EURJPY si ma devise de dépôt est l' USD. Dois-je ajouter quelque chose à la formule ?
La seconde ne fonctionne également qu'une seule fois, parfois elle donne la bonne valeur, parfois elle donne un non-sens (cela dépend du dépôt).
Pour être plus précis, la variable val indique la valeur des fonds gratuits après que la commande ait été passée et la variableFreeMarginCheck indique la valeur du dépôt lui-même.
La deuxième option est la manière correcte de calculer la marge, ou plutôt vous obtenez la valeur des fonds libres dans la variable val après avoir passé un ordre, et la variableFreeMarginCheck est la valeur de la marge elle-même.
Vous êtes sûr ?
Contrôle de la marge libre du compte
Renvoie le montant des fonds libres qui resteront après l' ouverture de l'ordre spécifié au prix actuel dans le compte courant.
Il y a aussi une subtilité :
Si des contre-opérations sont ouvertes, c'est-à-dire s'il existe un verrouillage complet ou incomplet du compte, la fonction peut donner des valeurs incorrectes.
Vous êtes sûr ?
Oui, vous avez raison, c'est exactement ça :
Renvoie le montant des fonds libresrestant après l'ouverture de l'ordre spécifié au prix actuel dans le compte courant.
en ce qui concerne les transactions ouvertes, vous devez vérifier, je ne me souviens pas, mais très probablement ce que le terminal écrit, devrait correspondre aux données calculées : le nombre total de lots dans chaque sens des transactions (BAY/SELL) pour tous les symboles puis appeler pour chaque symbole
AccountFreeMarginCheck() en passant des lots dans chaque sens et en additionnant ces résultats
le marché fonctionne aujourd'hui, il n'est pas difficile de le vérifier, c'est comme ça
Salutations, pourriez-vous me dire ce qui ne va pas avec la fonction ? La fonction effectue une pause commerciale par temps, les paramètres sont le début de la pause et la fin de la pause.
La fonction lit l'heure non pas à partir du serveur du courtier, mais à partir de l'ordinateur, malgré le fait que TimeCurrent soit prescrit. En général, les transactions sont fermées pendant la pause, c'est-à-dire que la fonction ne fonctionne pas.
Salutations, pourriez-vous me dire ce qui ne va pas avec la fonction ? La fonction effectue une pause commerciale par temps, les paramètres comprennent le début de la pause et la fin de la pause.
La fonction lit l'heure non pas à partir du serveur du courtier, mais à partir de l'ordinateur, malgré le fait que TimeCurrent soit prescrit. En général, les transactions sont fermées pendant une pause, cela signifie que la fonction ne fonctionne pas.
DésimprimerTimeStart etStrToTime(TimeStart) ;
then unprintTimeCurrent()
votreTimeStart n'est pas au format de date complet, c'est-à-dire que l'heure sera toujours le jour, le mois et l'année en cours lorsque vous exécuterez l'EA, puis elle changera ?
Et globalement ... pour déterminer les heures et les minutes de trading, il faut comparer l' heure et la minute de l' heure du serveur, vous ne comparez que le fait que l'heure du serveur est plus longue que celle spécifiée
SZZ : pour éviter toute confusion, vous pouvezconsidérer la date comme un int, ce qu'elle est, et en comparant deuxdates, vous comparez deux int.
PSPS :
votre code va probablement fonctionner, vous devriez l'essayer de cette façon :
Je compte habituellement le temps de cette façon :
int h = TimeHour(TimeCurrent()) ;
int m = TimeMinute(TimeCurrent()) ;
et ensuite le comparer avec les paramètres de l'EA
Merci, je vais essayer de comprendre, je suis juste un débutant), avec l'option && au lieu de || je n'ai pas encore essayé en ligne, d'ailleurs dans le testeur ce code fonctionne, il lit le temps à partir du terminal, pas de fermeture des ordres pendant la pause, mais en ligne c'est différent.
Bonjour, le terminal ne démarre pas dans le testeur de stratégie. Je règle la date, par exemple (2017,04,01 à 2018,05,29), j'appuie sur start, il donne immédiatement un stop. Dans le journal, il est indiqué ce qui suit,
TestGenerator : pas de données historiques 'EURUSD30' de 2017.04.01 à 2018.05.29. Et ainsi de suite pour tous les segments. Mon ordinateur fonctionne, je pensais qu'il n'avait peut-être pas assez de RAM. Même chose sur l'ordinateur personnel, le redémarrage n'aide pas, mais il fonctionne pendant un moment. J'ai téléchargé Expert Advisor sur le marché, à l'essai. Si quelqu'un en connaît la raison, veuillez nous en informer.
Bonjour, le terminal ne démarre pas dans le testeur de stratégie. Je règle la date, par exemple (2017,04,01 à 2018,05,29), j'appuie sur start, il donne immédiatement un stop. Dans le journal, il est indiqué ce qui suit,
TestGenerator : pas de données historiques 'EURUSD30' de 2017.04.01 à 2018.05.29. Et ainsi de suite pour tous les segments. Mon ordinateur fonctionne, je pensais qu'il n'avait peut-être pas assez de RAM. Même chose sur l'ordinateur personnel, le redémarrage n'aide pas, mais il fonctionne pendant un moment. J'ai téléchargé le Conseiller Expert depuis le Marché, essai. Si j'ai une idée de la raison, pouvez-vous me donner un indice ?
Je pense que le testeur dit qu'il n'y a pas de données historiques, appuyez sur F2 et téléchargez l'historique, puis redémarrez le terminal.
Bonjour, le terminal ne démarre pas dans le testeur de stratégie. Je règle la date, par exemple (2017,04,01 à 2018,05,29), j'appuie sur start, il donne immédiatement un stop. Dans le journal, il est indiqué ce qui suit,
TestGenerator : pas de données historiques 'EURUSD30' de 2017.04.01 à 2018.05.29. Et ainsi de suite pour tous les segments. Mon ordinateur fonctionne, je pensais qu'il n'avait peut-être pas assez de RAM. Même chose sur l'ordinateur personnel, le redémarrage n'aide pas, mais il fonctionne pendant un moment. J'ai téléchargé le Conseiller Expert depuis le Marché, essai. Si je connais la raison, veuillez me conseiller.
L'absence de données historiques ne signifie-t-elle rien ?
Je pense que le testeur vous dit qu'il n'y a pas de données historiques, appuyez sur F2 et téléchargez l'historique, puis rechargez le terminal.
Merci ! Je vais essayer. La mise à jour du terminal l'affecte-t-elle de quelque manière que ce soit ? Qu'il soit mis à jour ou non, bien qu'il vous le dise lui-même.......