[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 47

 
Tiken123:

Si vous connaissez la fonction permettant de calculer le solde total des pertes des positions fermées par SL et le solde total des transactions rentables ouvertes, veuillez nous écrire.

Le calcul du solde des pertes doit commencer à partir de la dernière valeur maximale du dépôt.

Votre question est un peu similaire à la précédente, j'ai donc un peu modifié la fonction de la réponse précédente. J'avoue ne pas l'avoir testé, mais cela devrait fonctionner. Les variables profit et perte déclarées au niveau global doivent indiquer le profit et la perte totaux respectivement pour les positions fermées.

Si vous avez besoin de faire cela pour les ordres ouverts aussi, ajoutez une deuxième boucle pour les sélectionner non pas dans l'historique, mais selon le critère OrdersTotal() : for(int n=1 ; n<=OrdersTotal() ; n++)

Et ajoutez les valeurs obtenues aux mêmes variables de profit et de perte .

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  profit = 0; loss = 0;
  for(int i=OrdersHistoryTotal(); i >= 0; i--){               // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){    // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;                // Ордера не нашего эксперта

        if(OrderProfit() > 0 ) profit = profit+OrderProfit(); // Если прибыль по посл.ордеру - суммируем

        if(OrderProfit() < 0 ) loss = loss + OrderProfit();   // Если убыток по посл.ордеру - суммируем

     }
  }
  return(-1);
}
 
Twilight:

Par exemple, j'ai besoin de savoir si une limite d'achat en attente a été déclenchée et si oui, à quel prix, puis d'en fixer une nouvelle.

S'il y a un ordre de type OP_BUYLIMIT sur chaque tick en utilisant la fonction OrderType(), lorsque ce type disparaît, cela signifie que l'ordre s'est ouvert et est devenu OP_BUY. Les 6 types sont répertoriésici. Grâce à la fonction OrderOpenPrice(), vous pouvez savoir à quel prix l'ordre a été ouvert.
 
Twilight:

Comment savoir si un ordre a déclenché un stop suiveur et placer de nouveaux ordres lorsque le stop suiveur a été déclenché ?

Vouliez-vous fermer la commande ou la modifier ?
S'il est fermé, avez-vous besoin de savoir s'il vient de fermer ? Ou a-t-il été fermé avec un StopLoss ? (Il peut fermer à TakeProfit et OrderClose() ou OrderCloseBy())
 

Voici ma nouvelle fonction de contrôle des barres :

bool IsNewBar()
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

où, i_trading_TF est une variable déclarée globalement externe. Ainsi, lorsque je configure mon Expert Advisor sur un graphique, je peux définir la valeur de cette variable dans la fenêtre pop-up et ainsi définir la période d'ouverture de la barre à contrôler.

J'ai vu une fonction similaire dans un conseiller expert, mais avec un paramètre formel dans l'en-tête de la fonction. C'est ici :

bool IsNewBar(int i_trading_TF)
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

Le délai est transmis par le paramètre de la fonction. Cependant, si la variablei_trading_TF est déclarée au niveau global, je ne pense pas qu'il soit utile de la passer via un paramètre formel puisque sa visibilité n'est pas limitée.

Veuillez commenter ce point.

La première option fonctionne pour moi aussi, mais il est étrange que certains programmeurs aient l'habitude de bourrer de paramètres formels même les fonctions où je ne le ferais pas moi-même.

 
pu6ka:
A chaque tick, surveiller la présence d'un ordre de type OP_BUYLIMIT en utilisant la fonction OrderType(), lorsque ce type disparaît, cela signifie que l'ordre s'est ouvert et est devenu de type OP_BUY. Les 6 types sont répertoriésici. Grâce à la fonction OrderOpenPrice(), vous pouvez savoir à quel prix l'ordre a été ouvert.
Il n'est pas nécessaire qu'il le soit. Il peut être tué manuellement. Il faut plutôt mémoriser le ticket de l'ordre ; dès que l'on constate l'absence de l'ordre avec ce ticket et l'apparition d'une position de marché avec le même ticket - alors oui, il est déclenché...
 
hoz:

Voici ma nouvelle fonction de contrôle des barres :

où, i_trading_TF est une variable déclarée globalement externe. Ainsi, lorsque je configure mon Expert Advisor sur un graphique, je peux définir la valeur de cette variable dans la fenêtre pop-up et ainsi définir l'horizon temporel de l'ouverture de la barre à laquelle je veux contrôler.

J'ai vu une fonction similaire dans un conseiller expert, mais avec un paramètre formel dans l'en-tête de la fonction. C'est ici :

Le délai est transmis par le paramètre de la fonction. Cependant, si la variablei_trading_TF est déclarée au niveau global, je ne pense pas qu'il soit utile de la passer via un paramètre formel puisque sa visibilité n'est pas limitée.

Veuillez commenter ce point.

La première option fonctionne pour moi aussi, mais il est étrange que certains programmeurs aient l'habitude de bourrer de paramètres formels même les fonctions où je ne le ferais pas moi-même.

Cela a du sens si l'EA analyse plusieurs cadres et qu'une nouvelle barre doit être formée à chaque cadre.

Ce n'est pas tout, ajoutons le nom de l'instrument aux paramètres transférés

bool IsNewBar(string Symb,int i_trading_TF)
{
  if(bartime != iTime(Symb,i_trading_TF,0))
  {
    bartime = iTime(Symb,i_trading_TF,0);
    return(true);
  }
  
  return(false);
}
et analyser le fait qu'une nouvelle barre se forme, n'importe quel instrument, n'importe quand.
 
artmedia70:
Pas nécessairement. Il peut également être tué manuellement. Il faut plutôt se souvenir du ticket de l'ordre en attente ; dès qu'un ordre en attente avec ce ticket est trouvé manquant et qu'une position de marché avec le même ticket apparaît, alors oui, il est déclenché....

Oui, c'est plus correct. Mais nous pouvons vérifier l'idée dans le testeur comme ça. Pour suivre quatre types d'ordres en attente, nous avons besoin de quatre variables supplémentaires pour suivre les ticks. Cependant, s'il y a plus d'un type de billets en attente, vous devez absolument entrer une variable pour les billets.
 
r772ra:

Cela a du sens si l'EA analyse plusieurs trames et que chaque trame a besoin du fait de former une nouvelle barre.

Ce n'est pas tout, ajoutons le nom de l'instrument aux paramètres

et analyser le fait qu'une nouvelle barre se forme, n'importe quel symbole, période.

Pensez-vous qu'il soit raisonnable d'"impliquer" un symbole dans le "mécanisme de recherche d'une nouvelle barre" ? :)))
 
TarasBY:
Pensez-vous qu'il soit approprié d'"impliquer" un symbole dans le "mécanisme de recherche d'une nouvelle barre" ??? :)))

Il serait intéressant de faire un contrôle universel de la nouvelle barre. D'ailleurs - tout est là pour ça
 
Vinin:

Il serait intéressant de faire un contrôle universel de la nouvelle barre. D'ailleurs - tout est là pour ça
Vous parlez de "considérer" et de DC ? ! ;)