[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 263

 
Valdemar:


Merci pour votre commentaire cher PapaYozh,mais j'ai aussi inséré cette fonction dans int start(), cela ne change toujours pas le résultat du compilateur.

Au final, le compilateur me montre ces erreurs, et je pense qu'il s'agit d'une mauvaise définition de variable ?

.
Voldemar, les gens essaient de vous dire ce que tous les docs, tutoriels et exemples disent : le corps d'une fonction utilisateur doit être en dehors des autres fonctions, par exemple, après la dernière ligne de la fonction Start.
 
ilunga:

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
.

Il suffit donc de l'enlever ?
 
Pyxlik2009:
Il suffit donc de l'enlever ?

Vous devez transmettre les paramètres correctement à la fonction appelée.
 

Les gars, aidez-nous s'il vous plaît

 
granit77:
Voldemar, les gens essaient de vous dire ce que tous les docs, tutoriels et exemples disent : le corps d'une fonction personnalisée doit être placé AVANT les autres fonctions, par exemple après la dernière ligne de la fonction Start.


Mercigranit77 et à tous ceux qui m'ont accordé leur précieux temps. J'ai réussi, car je pense que tout le monde s'est réjoui de l'apparition des premiers succès dans la réalisation de l'objectif conçu.

Merci !!!!

...j'espère pouvoir aider quelqu'un ici dans un avenir proche.



 
Pyxlik2009:

Les gars, s'il vous plaît, aidez-nous.

Tu veux que je le tienne pour toi ? :))))

Remplacez "le plus récent" par un chiffre.

 
Starting:


Je ne pense pas avoir été assez clair.

Affirmation 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 du déclenchement) obtiendra une date d'ouverture égale à la date d'établissement 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 attente 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 ce type d'historique avec le spread devrait être collecté et enregistré), 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 que 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 pauses dans le fonctionnement de l'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.


Quelque chose m'alarme dans vos affirmations. Après la conversion d'un ordre en attente avec le ticket, par exemple 12, il n'y aura pas d'ordre en attente avec le ticket 12 dans l'historique. Il y aura une position ouverte avec le ticket 12, et son type sera OP_BUY ou OP_SELL. Le moment de son ouverture est le moment de la transformation de l'ordre en attente en un ordre de marché.

Veuillez me corriger si c'est faux.

Dans tous les cas, vous avez besoin d'un conseiller expert qui se chargera de comptabiliser les ordres à votre place. A chaque tick, vous vérifiez s'il y a un ordre en attente, vous mémorisez son ticket (si l'ordre est trouvé) et vous comparez ensuite les ticks des positions ouvertes avec celui en attente. Dès que vous trouvez une correspondance, rappelez-vous l'heure de son ouverture. Ce sera le moment que vous recherchez...

 

Question - est-il possible d'utiliser des scripts et des EA tiers (de la série "don't trade themselves") sur un hibou que vous faites passer par un testeur ?

 
artmedia70:

Voulez-vous que je le tienne pour vous ? :))))

Remplacez "le plus récent" par un chiffre.

J'ai déjà compris. Merci.)
 
artmedia70:

Il y a quelque chose dans vos déclarations qui me met mal à l'aise. Après la conversion d'un ordre en attente avec le ticket 12, par exemple, il n'y aura pas d'ordre en attente avec le ticket 12 dans l'historique. Il y aura une position ouverte avec le ticket 12, et son type sera OP_BUY ou OP_SELL. L'heure de son ouverture est l'heure de la transformation de l'ordre en attente en un ordre de marché.

Veuillez me corriger si c'est faux.

Dans tous les cas, vous avez besoin d'un conseiller expert qui se chargera de comptabiliser les ordres à votre place. A chaque tick, vous vérifiez s'il y a un ordre en attente, vous mémorisez son ticket (si l'ordre est trouvé) et vous comparez ensuite les ticks des positions ouvertes avec celui en attente. Dès que vous trouvez une correspondance, rappelez-vous l'heure de son ouverture. Ce sera celui que vous désirez.

Oui, le ticket de l'ordre au marché après le déclenchement de l'ordre en attente n'a pas changé (du moins avec mon courtier).

L'heure d'ouverture d'une position sur le marché sera l'heure de modification de l'ordre en attente, du moins selon les journaux, que j'ai comparés maintenant en utilisant l'un des ordres comme exemple.

L'affirmation 1, sur cette base, est évidemment fausse. Je vérifierai demain lorsqu'il sera frais ; j'ai travaillé dessus pendant deux nuits (pas exactement), mon cerveau est déjà embrumé.

Si l'OrderOpenTime() d'un ordre au marché avec un ordre en attente indique toujours l'heure de son ouverture, nous n'avons aucun problème et l'EA n'est pas nécessaire pour suivre les ordres. Tout ce dont nous avons besoin est l'heure de déclenchement de l'ordre en attente afin de trier correctement les ordres de l'historique en fonction de leur heure d'ouverture et du drapeau indiquant qu'ils sont fermés. Peu importe s'il s'agissait simplement d'un ordre au marché en attente et qu'aucun drapeau n'indiquait qu'il s'agissait d'un ordre en attente - ce n'est pas nécessaire. L'important est le fait - il a été fermé en dernier et avec la dernière date d'ouverture - notre client, apportez-le ici.

C'est juste qu'il n'y a aucun moyen pour mon script de donner le dernier ordre clôturé avec le dernier temps ouvert, exactement quand les ordres en attente ont été déclenchés. Quoi qu'il en soit, je vais tout vérifier. Merci pour le conseil, très utile !