Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 681
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
probablement comme ça, pour vendre :
profit=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) ;
pour acheter par Bid, c'est-à-dire ( Bid -OrderOpenPrice())
TakeProfit =100 points Lot = 0.1, quel sera le profit de la position ouverte dans la devise, lorsque la position est fermée par TP ?
ça ne marche pas comme ça.
Nécessité d'opérer :Lot -> Argent -> Distance, et le coût du tick
L'argent est justement ce qu'il faut pour le savoir.)
La solution ne tient pas compte des commissions et des swaps. Les points semblent être en profit, mais les coûts sont une perte.
Je n'aime pas la formule OrderProfit()+ OrderComission()+OrderSwap() avec les commissions et les swaps.
L'aide indique que la commission peut être en points ou en monnaie de dépôt, cette formule n'en tient pas compte et peut faire plus de mal que de bien lors des tests, mais c'est une question de goût.
Take_Profit =100 points, lot =0.1, quel sera le profit d'une position ouverte dans la devise, lorsque la position est fermée par TP ?
Ça ne marche pas comme ça.
Les maths, c'est pas ton truc ? ;)
autrement :
profit=NormalizeDouble((Take_Profit *Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) ;
si elle est raccourcie, elle sera
profit=NormalizeDouble(lot *TakeProfit*MarketInfo(_Symbol,MODE_TICKVALUE),2) ;
Ce que l'on veut dire ici, c'est que lafonction OrderProfit() doit être utilisée dans le calcul.
Comment calculer le lot d'une position avant d'envoyer un ordre pour obtenir un profit de 20 USD lorsque le TakeProfit entre en jeu ? La fonction OrderProfit() ne sera pas utile ici - il n'y a pas encore de position.
Ou en d'autres termes : Quel serait le takeprofit de la position future, de sorte que si j'ouvre avec 0,1 lot, j'obtiendrais un profit de 20 USD ? Et ici, OrderProfit() ne sera pas utile - pour la même raison.
Et d'une autre manière : Quel Stop Loss devrait être dans la position future, de sorte que lorsque j'ouvre avec 0.1 lot, j'obtienne une perte de pas plus de 3% des fonds disponibles ? Et ici, OrderProfit() ne sera pas utile - pour la même raison.
Mise à jour : tous les calculs seront approximatifs sans connaissance de la commission et du swap. Nous devrons ajuster les ordres d'arrêt "sur place" si nous avons besoin d'une précision au centime ou au point près.
Avant d'envoyer un ordre pour ouvrir une position, comment puis-je calculer le lot pour la future position, de sorte que lorsque le takeprofit est déclenché, j'obtienne un profit de 20 USD ? OrderProfit() n'est pas utile ici - il n'y a pas encore de position.
Ou encore : Quel serait le TakeProfit de la future position, de sorte que si j'ouvre avec 0.1 lot, j'obtiendrais un profit de 20 USD ? Et ici, OrderProfit() ne sera pas utile - pour la même raison.
J'ai juste écrit et compris ce que je devais calculer avant d'ouvrir et de supprimer immédiatement le message. Quelle intelligence de votre part de répondre)
J'ai déjà écrit un tel document, et j'ai entré un montant par lot dans les paramètres d'entrée comme commission.
augmente-t-il à chaque tic-tac? Aide : ))))
cela signifie que vous comptez sur chaque tick le code que vous avez soumis et que vous n'initialisez pas les variablesSredRazmax etSredRazmin
c'est une bonne habitude d'initialiser les variables avant de les utiliser - c'est ce que les universités vous apprennent, cela réduit le temps nécessaire pour trouver les bugs ;)
Chers collègues, pourquoi ce code refuse-t-il de s'exécuter dans le testeur de stratégie, mais s'exécute correctement en temps réel. Je parle spécifiquement de la fonction OnChartEvent(). En mode visualisation dans le testeur, il n'est pas exécuté lorsque les boutons sont cliqués.
Chers collègues, pourquoi ce code refuse-t-il de s'exécuter dans le testeur de stratégie, mais s'exécute correctement en temps réel. Je parle spécifiquement de la fonction OnChartEvent(). En mode visualisation dans le testeur, il n'est pas exécuté lorsque les boutons sont cliqués.
Parce que dans MT4 OnChartEvent() ne fonctionne pas dans le testeur. Vérifiez le drapeau d'état du bouton dans le testeur.
Merci ! J'avais ce soupçon, mais je n'ai pas trouvé d'information dans l'aide indiquant que OnChartEvent() ne fonctionne pas dans le testeur.