[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 262
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
Messieurs, pouvez-vous me dire où j'ai fait une erreur en insérant cette fonction de chronométrage dans mon code EA ?
Le compilateur m'a juste inondé d'erreurs.
À l'endroit où vous avez déclaré une fonction à l'intérieur d'une autre fonction :
Voir le 10ème paramètre de la fonction spécifiée. Défini à 0.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) ;
J'ai trouvé cette ligne et qu'est-ce qu'il faut y changer ?
L'utilisation est simple - je lance le script...
Vous trouverez des exemples de fonctions similaires ici : Fonctions utiles de KimIV.
Si les produits du commerce ne conviennent pas, vous pouvez en construire un vous-même en vous inspirant des produits existants.
Ici, le calcul est basé sur l'inertie des prix. C'est-à-dire que le stop loss du premier ordre est déclenché, le second ordre est à un profit avec une valeur un peu inférieure à la perte. Si le prix évolue dans la même direction un peu plus, alors oui, nous pouvons être dans le bénéfice total.
Mais, à mon avis, cette stratégie n'en vaut pas la peine.
C'est exactement ce que nous devons prouver. En d'autres termes, vous avez besoin d'un code qui trouverait l'ordre nécessaire. Il existe des dizaines de situations de ce type, et nous ne pouvons pas fournir une fonction spéciale pour chacune d'entre elles afin de simplifier le code. Il doit être rédigé pour chaque cas.
Vous trouverez des exemples de fonctions similaires ici : Fonctions utiles de KimIV.
Si les produits du commerce ne conviennent pas, vous pouvez en construire un vous-même en vous inspirant des produits existants.
Je crois que je n'ai pas bien compris.
Assertion 1 : Chaque code, après le déclenchement de l'ordre en attente, lorsqu'il accède à la date d'ouverture de cet ordre (qui est devenu négociable au moment de ce déclenchement), obtiendra la date d'ouverture égale à la date de placement de l'ordre en attente - c'est ainsi que fonctionne la fonction OrderOpenTime().
Affirmation 2 : Vous ne pouvez pas vous souvenir du moment exact du déclenchement d'un ordre en attente, sans un conseiller expert qui surveille constamment l'état des ordres sur le compte.
Solution possible 1. Nous pouvons essayer d'exécuter l'ordre à partir de la date d'établissement de l'ordre en suspens jusqu'à la date actuelle et noter l'heure du premier croisement du prix ouvert et du niveau de déclenchement.
Ce sera plus ou moins l'heure exacte, mais il y a un gros moins : l'écart. Puisque nous n'enregistrons pas le spread dans l'historique (je ne prends pas l'historique des ticks avec le spread de Dukas, par exemple, puisque je ne négocie pas dans Dukas et que nous devons le collecter et l'enregistrer), l'ordre peut s'être déclenché beaucoup plus tôt, lorsque le prix a presque touché le niveau ouvert mais ne l'a pas franchi, et l'ordre a été ouvert en raison de l'expansion du spread, et non plus tard, lorsque nous avons effectivement vu le prix franchir la ligne de fixation de l'ordre en attente.
La solution la plus probable est de créer un conseiller expert, de le placer sur le graphique et de surveiller les ordres sur le compte. Je ne veux pas le faire pour certaines raisons et il y a aussi des inconvénients liés à d'éventuels problèmes lors des interruptions de l'opération EA.
Les fonctions, auxquelles vous avez fait référence. Vous avez fourni un lien vers la fonction OrderOpenTime(). Pour les commandes différées, ce sera la date de leur création, et non de leur déclenchement. Par conséquent, les fonctions existantes ne sont pas adaptées. Et il n'y a aucun moyen de les combiner, puisqu'ils font toujours référence à OrderOpenTime() pour la date d'ouverture de l'ordre.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) ;
J'ai trouvé cette ligne et qu'est-ce qu'il faut y changer ?
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) ;
J'ai trouvé cette ligne et qu'est-ce qu'il faut y changer ?
voici la ligne entière
voici la ligne entière
Encore une fois :
Documentation :
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Votre dixième paramètre dans la chaîne "Newest" n' est pas un nombre. C'est pourquoi il y a une erreur
.
PapaYozh:
Où vous avez déclaré une fonction dans une autre fonction :
Finalement, le compilateur m'a montré ces erreurs, et je pense qu'il s'agit d'une mauvaise définition de variable ?.Merci pour vos commentaires, cher PapaYozh,mais j'ai inséré cette fonction dans int start(), mais le résultat du compilateur ne change pas pour autant.
Je m'excuse pour tout inconvénient, l'incompréhension, après tout, juste commencer à acquérir de l'expérience dans une telle question pas facile, et je pense que grâce à ce forum et les gens qui ont répondu ici, continuer à développer et améliorer leurs compétences, merci.