![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
kombat 17.07.2009 22:13
Additionnez, obtenez l'achat-été de 3 lots et contre ce volume, la vente de 3 lots.
.......................
En tant qu'option, oui. Cependant, s'il y a déjà des ordres de vente ouverts, l'EA peut ne pas fermer ceux dont vous avez besoin. Il devrait être résolu.
kombat 17.07.2009 22:13.
Mais pour répondre à votre question : est-il possible de fermer toutes les positions ?
oui c'est ça, un par un, c'est quick script, aap ! et c'est tout...
.........................
C'est ce que j'utilise maintenant. Un ensemble de scripts - vous utilisez celui-ci, puis celui-là... Mais j'ai essayé de coder ma stratégie dans Expert Advisor et j'ai rencontré un certain nombre de difficultés.
J'ai quelque chose qui ne fonctionne pas ici, cela signifie qu'il ne ferme pas, sans erreur.
Dans la fonction ClosePositions(), sa bibliothèque b-Positions.mqh, KimIV utilise un appel à son autre fonction ClosePosBySelect() qui interdit l'utilisation de ee dans le testeur :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Pour les tests d'histoire, utilisez sa bibliothèque b-ForTest.mqh
Dans la fonction ClosePositions(), sa bibliothèque b-Positions.mqh, KimIV utilise un appel à son autre fonction ClosePosBySelect() qui interdit l'utilisation de ee dans le testeur :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Pour les tests d'histoire, utilisez sa bibliothèque b-ForTest.mqh
Vous avez mal compris mon code... Traduire en russe... Si ce n'est pas le mode test ET (l'EA n'est PAS autorisé à négocier OU le conseiller expert est arrêté), alors la boucle est interrompue. Pour faire simple, cette ligne assure la sortie de la boucle, lorsque vous appuyez sur le bouton "Expert Advisors" de la barre d'outils.
Bonsoir,
Malheureusement, il y a aussi une divergence avec le tableau... Quand le comptage des ordres est fait avec une condition si les lots sont plus grands que 0 (Lts>0), les lots sont fermés un par un (quand le profit a été atteint), mais le profit total devrait être pris en compte :
Et à la condition dans le compte des ordres, si les lots sont plus de 1 (Lts>1), les lots ne sont pas fermés :
Veuillez indiquer qui peut voir l'erreur.
Ou peut-être, Igor, ai-je mal compris l'utilisation de votre fonction ?
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY) ; // Appel de la fonction
Igor, s'il vous plaît, dites-moi comment insérer votre fonction PriceOpenLastPos dans l'indicateur.
Lors de la compilation, l'éditeur donne une erreur sur la première parenthèse et les variables suivantes.
double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
datetime t ;
double r=0 ;
int k=OrdersTotal() ;
if (sy=="0") sy=Symbol() ;
for (i=0 ; i<k ; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime() ;
r=OrderOpenPrice() ;
}
}
}
}
}
}
}
return(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.
J'implémente la logique de formation des signaux de trading dans un indicateur et j'envoie le signal généré à l'Expert Advisor via une variable globale pour ouvrir/fermer les ordres.
J'ai besoin du prix ouvert d'un ordre pour prendre certaines décisions, c'est ce que j'essaie de faire. Mon indicateur est dynamique et ne peut être débogué qu'en mode démo ou en mode visualisation dans un testeur.
L'image est que ce n'est pas le bénéfice total qui est pris en compte, mais le bénéfice des différentes commandes.
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY) ; // Appel de fonction
Passage incorrect des paramètres dans la fonction. Ça devrait être comme ça :
Passage incorrect des paramètres dans la fonction. Ça devrait être comme ça :
L'ajout d'une liaison au symbole dans l'appel de fonction n'aide pas. Pourquoi compte-t-il le bénéfice de chaque position séparément (image ci-dessus) ?