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

 
nuan:
Question : comment puis-je fermer par programme tous les ordres, par exemple toutes les 30 minutes ?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }
 
Merci.
 
Remplacement des cours de clôture par des cours d'ouverture - le résultat est identique au précédent, sauf que maintenant la ligne d'équité est strictement au-dessus de la ligne d'équilibre. Le nombre de transactions et les bénéfices ont un peu diminué, mais la situation s'est encore stabilisée. Il n'y a pas de transactions perdantes sur la période étudiée.
 
Vinin:


Si je comprends bien, avec un contrôle de l'état des ordres sur le marché ? -

...
if (OrderType()<2) 
//здесь  корректировка размера позиций с учетом ввода/вывода


C'est intéressant ! Pouvez-vous afficher le code complet ? La manière dont les ordres sont liés aux fonds déposés ou retirés n'est pas très claire. Peut-on déterminer combien d'argent a été déposé sur le compte au début, le solde initial en quelque sorte, sans recalculer l'historique des positions fermées ? Tous les courtiers ne fournissent pas l'historique complet des transactions, certains ne remontant pas à plus d'un mois, de sorte que le nouveau calcul de la rentabilité du conseiller expert est erroné : la date de début est correcte, mais le solde est celui d'il y a un mois. Par conséquent, le bénéfice mensuel s'étend sur toute la période de négociation.

 
nuan:
Question : comment puis-je fermer par programme tous les ordres, par exemple toutes les 30 minutes ?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }


чет он не работает , закрывает в секунду
 
forexnew:


Si je comprends bien, avec un contrôle de l'état des ordres sur le marché ? -


C'est intéressant ! Pouvez-vous afficher le code complet ? La manière dont les ordres sont liés aux fonds déposés ou retirés n'est pas très claire. Peut-on déterminer combien d'argent a été déposé sur le compte au début, le solde initial en quelque sorte, sans recalculer l'historique des positions fermées ? Tous les courtiers ne fournissent pas l'historique complet des transactions, certains ne remontant pas à plus d'un mois, de sorte que le nouveau calcul de la rentabilité du conseiller expert est erroné : la date de début est correcte, mais le solde est celui d'il y a un mois. Par conséquent, le bénéfice mensuel s'étend sur toute la période de négociation.


Ce n'est probablement pas le cas après tout.
Dans le terminal, ouvrez l'onglet "Historique du compte", faites un clic droit, sélectionnez "Tout l'historique".
L'historique sera téléchargé en remontant jusqu'à l'ouverture du compte.
 
forexnew:


Si je comprends bien, avec un contrôle de l'état des ordres sur le marché ? -


C'est intéressant ! Pouvez-vous afficher le code complet ? La manière dont les ordres sont liés aux fonds déposés ou retirés n'est pas très claire. Peut-on déterminer combien d'argent a été déposé sur le compte au début, le solde initial en quelque sorte, sans recalculer l'historique des positions fermées ? Tous les courtiers ne fournissent pas l'historique complet des transactions, certains ne datant pas de plus d'un mois, ce qui fait que le nouveau calcul de la rentabilité de l'EA est erroné : la date de début est correcte, mais le solde est celui d'il y a un mois. Par conséquent, le bénéfice mensuel s'étend sur toute la période de négociation.

Il ne s'agit pas de cela ici, mais de garder une trace programmatique de l'existence de dépôts/retraits sur le compte à une certaine heure. Il n'y a pas encore de code, il y a une formule de base pour calculer l'ajustement du volume de la position ici. (Le nombre (en termes de fonds totaux) de placements/retraits y est lié)
 
nuan:


Que voulez-vous dire par "se ferme en une seconde" ?
Un long moment ? Ou quoi ?

 

Lacharte signifie qu'elle ferme l'ordre dans la même seconde, et non dans 30 minutes.


Je l'ai configuré comme dans votre exemple


datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
Le robot ne ferme pas pour d'autres raisons, c'est-à-dire qu'il ne ferme pas au stop ou au profit.


1 2011.07.29 00:00 acheter 1 0.01 1.4328 1.3328 1.5328 0.00 1000.00
2 2011.07.29 00:01 close 1 0.01 1.4327 1.3328 1.5328 -0.10 999.90
3 2011.07.29 00:01 acheter 2 0.01 1.4329 1.3329 1.5329 0.00 999.90
4 2011.07.29 00:01 close 2 0.01 1.4326 1.3329 1.5329 -0.30 999.60
5 2011.07.29 00:01 acheter 3 0.01 1.4328 1.3328 1.5328 0.00 999.60
6 2011.07.29 00:03 close 3 0.01 1.4327 1.3328 1.5328 -0.10 999.50
7 2011.07.29 00:03 acheter 4 0.01 1.4329 1.3329 1.5329 0.00 999.50
8 29.07.2011 00:03 close 4 0.01 1.4329 1.3329 1.5329 0.00 999.50


 
Roman.:
Il ne s'agit pas de cela ici, mais de garder une trace programmatique pour savoir s'il y a eu des dépôts/retraits sur le compte à une certaine heure. Il n'y a pas encore de code, il y a une formule de base pour calculer l'ajustement du volume de la position ici. (Le nombre (en termes de fonds totaux) des dépôts/retraits y est lié).

Je comprends.

Et si vous envisagez d'ouvrir un compte avec 0 $ comme point de départ, et le 1er dépôt comme complément. Est-il possible de déterminer de manière programmatique tous les toppings (y compris le premier) qui ont été effectués sur le compte ?

Raison: