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
peut-être que l'un d'entre eux fera l'affaire, -
La fonction PriceOpenLastPos().
Cette fonction renvoie le prix ouvert de la dernière position ouverte. La sélection des positions à prendre en compte est spécifiée par des paramètres externes :
sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions du symbole spécifié. La valeur par défaut - "" signifie tout instrument de marché. La valeur NULL signifie l'instrument actuel.
op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie n'importe quel identifiant.
https://forum.mql4.com/ru/11287/page24
Merci, je vais l'essayer, cette fonction fonctionne-t-elle aussi dans l'indicateur ?
Je ne peux pas le dire. Après tout, l'indicateur n'ouvre pas de positions . Pourquoi l'indicateur a-t-il besoin du prix des positions ouvertes ou fermées?
Il a d'autres tâches.
Je pense que cela fonctionnera aussi dans l'indicateur.
Je ne peux pas le dire. Après tout, l'indicateur n'ouvre pas de positions . Pourquoi l'indicateur a-t-il besoin du prix des positions ouvertes ou fermées ?
Il a d'autres tâches.
Je pense que cela fonctionnera aussi dans l'indicateur.
Savez-vous comment insérer correctement cette fonction dans l'indicateur ?
Lors de la compilation, l'éditeur génère une erreur sur la première parenthèse et les variables suivantes.
double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
date t ;
double r=0 ;
int k=OrdersTotal() ;
si (sy=="0") sy=Symbole() ;
for (i=0 ; i<k ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
si (OrderSymbol()==sy || sy==") {
si (OrderType()==OP_BUY || OrderType()==OP_SELL) {
si (op<0 || OrderType()==op) {
si (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderOpenTime()) {
t=OrderOpenTime() ;
r=OrderOpenPrice() ;
}
}
}
}
}
}
}
retour(r) ;
}
}
'(' - définition de fonction inattendue D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - variable non définie D:MT4\experts\indicators\Astrea.mq4 (632, 7)
etc.
C'est difficile à dire. Je ne suis pas un spécialiste des indices.
Et je ne comprends pas pourquoi le prix d'ouverture de l'ordre devrait être pris en compte dans l'indicateur.
Êtes-vous sûr que cet indicateur particulier est nécessaire pour vos besoins ?
Peut-être serait-il plus facile d'implémenter les fonctions dont vous avez besoin dans un EA séparé qui prend en compte les ordres ?
C'est difficile à dire. Je ne suis pas un spécialiste des indices.
Et je ne comprends pas pourquoi le prix d'ouverture de l'ordre devrait être pris en compte dans l'indicateur.
Êtes-vous sûr que cet indicateur particulier est nécessaire pour vos besoins ?
Peut-être serait-il plus facile d'implémenter les fonctions nécessaires dans un EA séparé qui prendrait en compte les commandes ?
J'implémente la logique de génération de signaux de trading dans un indicateur et j'envoie le signal généré à l'EA via une variable globale pour ouvrir/fermer les ordres.
J'ai besoin du prix ouvert d'un ordre pour prendre certaines décisions et c'est pourquoi j'essaie de résoudre ce problème. J'ai un indicateur dynamique, vous ne pouvez le déboguer que dans une démo ou dans un testeur en mode visualisation.
J'ai maintenant inséré cette fonction dans la première dinde que j'ai rencontrée (ATR) et tout est conforme.
(1 seul avertissement, comme il se doit).
Et dans quelle partie du code insérez-vous cette fonction ? Il doit être inséré à la toute fin du code, en dehors de la fonction START.
Et ensuite, dans la fonction START, appelez-la pour calculer votre
J'ai juste collé cette fonction dans la première dinde disponible (ATR) et tout s'est bien passé.
Comment a-t-il été inséré ? Tout le texte ci-dessus un-à-un, ou comme une sous-fonction vide ?
>> Un à un.
C'est étrange, j'ai des erreurs quand je compile.
J'ai maintenant inséré cette fonction dans la première dinde que j'ai rencontrée (ATR) et tout est conforme.
(1 seul avertissement, comme il se doit).
Et dans quelle partie du code insérez-vous cette fonction ? Il doit être inséré à la toute fin du code, en dehors de la fonction START.
Vous devez l'appeler dans la fonction START pour effectuer les calculs.
Je l'ai fait, je l'ai inséré en dehors de la fonction de démarrage, et la compilation s'est déroulée.
>> Merci.