Pour une raison quelconque, lorsque votre bibliothèque est connectée, l'opérateur extern ne fonctionne plus, c'est-à-dire que les variables sont définies, tout se compile normalement, et en principe, l'EA fonctionne, mais en même temps, l'EA n'a aucun paramètre au démarrage du type, alors qu'il y a pas mal de paramètres. Quelle peut en être la raison ?
J'ai ajouté une variable j à cette fonction pour les avant-dernières transactions.
Si l'on considère que les commandes qui ont été clôturées sont prises en compte dans OrdersHistoryTotal() selon l'heure de clôture de droite à gauche (la dernière à droite) :
double GetProfitLastClosePos (string sy="", int op=-1, int mn=-1,
int j=0) // Искомый (по номеру) ордер от последнего закрытого
{
int k = OrdersHistoryTotal(), li_cnt = 0;
//----if (sy == "0" || sy == "") sy = Symbol();
for (int i = k - 1; i >= 0; i--)
{
if (!OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() != sy) continue;
if (OrderType() > 1) continue;
if (op >= 0) if (OrderType() != op) continue;
if (mn >= 0) if (OrderMagicNumber() != mn) continue;
if (j == li_cnt) return (OrderProfit());
li_cnt++;
}
//----return (-1.0);
}
La fonction retourne le profit j-ième du dernier ordre fermé, "filtré" par symbole, magik, type. Et les chiffres sont comptés à partir de 0.
Si l'on tient compte du fait que les ordres clôturés sont comptabilisés dans OrdersHistoryTotal() en fonction de l'heure de clôture de droite à gauche (le plus récent à l'extrême droite) :
La fonction retourne le profit j-ième du dernier ordre clôturé, "filtré" par instrument, Magik, type. Et les chiffres sont comptés à partir de 0.
Besoin d'une fonction pour fermer les ordres d'achat et de vente de lots égaux par des contre-ordres, lorsque leur profit passe à +. J'ai essayé d'exécuter cette fonction, mais l'erreur 4108 s'est produite (mauvais billets).
Pouvez-vous me dire quel est le problème ?
//+------------------------------------------------------------------+int fCloseBu(){
// Закрываем встречныеdouble LotB,LotS,PrB=0,PrS=0;
int TicketB,TicketS,i, k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==Symbol() || Symbol()=="")) {
if (Magic_N<0 || OrderMagicNumber()==Magic_N) {
//----------if(OrderType()==OP_BUY){
if (PrB<OrderProfit()+OrderSwap()+OrderCommission()) {
PrB=OrderProfit()+OrderSwap()+OrderCommission();
LotB=OrderLots();
TicketB=OrderTicket();
}
}
if(OrderType()==OP_SELL){
if (PrS<OrderProfit()+OrderSwap()+OrderCommission()) {
PrS=OrderProfit()+OrderSwap()+OrderCommission();
LotS=OrderLots();
TicketS=OrderTicket();
}
}
if (PrB>0 && PrS>0 && LotB==LotS) {
OrderCloseBy(TicketB,TicketS,CLR_NONE);
Print("Закрываем пару встречных ордеров c одинаковыми лотами в плюсе");
}
}
}
}
}
//-------------return(0);
}
//+------------------------------------------------------------------+
Les commandes doivent être clôturées lorsque le cycle complet de vérifications est terminé, c'est-à-dire après l 'instruction for, et non à l'intérieur.
Pouvez-vous m'indiquer où je peux trouver un EA qui fonctionne sur le croisement d'une moyenne mobile avec la possibilité de déplacer la moyenne mobile dans les paramètres ?
Roger: Les commandes doivent être clôturées lorsque le cycle complet de vérifications est terminé, c'est-à-dire après l'instruction for, et non à l'intérieur.
Merci ! Si quelqu'un d'autre a besoin d'une telle fonction, ce sera comme ceci :
//+------------------------------------------------------------------+//| Закрываем встречные |//+------------------------------------------------------------------+int fCloseBu(){
double LotB,LotS,PrB=0,PrS=0;
int TicketB,TicketS,i, k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==Symbol() || Symbol()=="")) {
if (Magic_N<0 || OrderMagicNumber()==Magic_N) {
//----------if(OrderType()==OP_BUY){
if (PrB<OrderProfit()+OrderSwap()+OrderCommission()) {
PrB=OrderProfit()+OrderSwap()+OrderCommission();
LotB=OrderLots();
TicketB=OrderTicket();
}
}
if(OrderType()==OP_SELL){
if (PrS<OrderProfit()+OrderSwap()+OrderCommission()) {
PrS=OrderProfit()+OrderSwap()+OrderCommission();
LotS=OrderLots();
TicketS=OrderTicket();
}
}
}
}
}
}//forif(PrB>0 && PrS>0 && LotB==LotS) {
OrderCloseBy(TicketB,TicketS,CLR_NONE);
Print("Закрываем пару встречных ордеров c одинаковыми лотами в плюсе");
}
//-------------return(0);
}
//+------------------------------------------------------------------+
Bonjour !
Pour une raison quelconque, lorsque votre bibliothèque est connectée, l'opérateur extern ne fonctionne plus, c'est-à-dire que les variables sont définies, tout se compile normalement, et en principe, l'EA fonctionne, mais en même temps, l'EA n'a aucun paramètre au démarrage du type, alors qu'il y a pas mal de paramètres. Quelle peut en être la raison ?
Trouvez dans le code
#property libraryEt supprimer.
J'ai ajouté une variable j à cette fonction, pour l'avant-dernière transaction.
double GetProfitLastClosePos(string sy="", int op=-1, int mn=-1, int j=0) {J'ai ajouté une variable j à cette fonction pour les avant-dernières transactions.
Si l'on considère que les commandes qui ont été clôturées sont prises en compte dans OrdersHistoryTotal() selon l'heure de clôture de droite à gauche (la dernière à droite) :
La fonction retourne le profit j-ième du dernier ordre fermé, "filtré" par symbole, magik, type. Et les chiffres sont comptés à partir de 0.
Si l'on tient compte du fait que les ordres clôturés sont comptabilisés dans OrdersHistoryTotal() en fonction de l'heure de clôture de droite à gauche (le plus récent à l'extrême droite) :
La fonction retourne le profit j-ième du dernier ordre clôturé, "filtré" par instrument, Magik, type. Et les chiffres sont comptés à partir de 0.
Bonjour à tous.
Besoin d'une fonction pour fermer les ordres d'achat et de vente de lots égaux par des contre-ordres, lorsque leur profit passe à +. J'ai essayé d'exécuter cette fonction, mais l'erreur 4108 s'est produite (mauvais billets).
Pouvez-vous me dire quel est le problème ?
Les commandes doivent être clôturées lorsque le cycle complet de vérifications est terminé, c'est-à-dire après l'instruction for, et non à l'intérieur.
Merci ! Si quelqu'un d'autre a besoin d'une telle fonction, ce sera comme ceci :
Existe-t-il des tutoriels vidéo sur ce langage ?