[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 104

 

Le numéro du jour du mois est ajouté au commentaire de la commande. Comment puis-je calculer combien d'ordres (fermés) il y a eu dans la journée avec le commentaire de ce jour ?

Je ne sais pas comment faire.

commentaire = Day() ;

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n ;
int f = 0 ;
int total = OrdersHistoryTotal() ;
for (n = total - 1 ; n >= 0 ; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY) ;
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++ ;
}
}
Print("nombre de commandes = ",f,") ;
return(f) ;
}

 
À serega393
Votre commentaire derrière la fonction est-il une chaîne de caractères ou un nombre entier ?
La fonction semble être composée correctement. Mettez une impression de toutes les variables entrantes à l'intérieur pour voir une image claire.
 
serega393 писал(а) >>

Le numéro du jour du mois est ajouté au commentaire de la commande. Comment puis-je calculer combien d'ordres (fermés) il y a eu dans la journée avec le commentaire de ce jour ?

Je ne sais pas comment faire.

commentaire = Day() ;

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n ;
int f = 0 ;
int total = OrdersHistoryTotal() ;
pour (n = total - 1 ; n >= 0 ; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY) ;
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++ ;
}
}
Print("quantité commandée = ",f,") ;
retour(f) ;
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
Et la même chose pour l'envoi des commandes !
 
StatBars >> :
Et de même pour l'envoi des commandes !

>> C'est mieux comme ça :

   comment = TimeDay(TimeCurrent());
C'est plus rapide, plus facile et plus fiable.
 

bool UseTF = true ;


int start()
{

string comment = TimeDay(TimeCurrent()) ;

if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false ;
Print("No") ;
}
else
{
UseTF = true ;
Print("Yes") ;

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green) ;
}
return(0) ;
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n ;
int f = 0 ;
int total = OrdersHistoryTotal() ;
for (n = total - 1 ; n >= 0 ; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY) ;
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++ ;
}
}
Print("nombre de commandes = ",f,") ;
return(f) ;
}

Essayez-le ici. Il ne lit pas les ordres dans l'histoire.

 

Bon après-midi à tous.

Je n'ai pas réussi à "marquer" correctement l'ouverture des ordres en attente dans mon code. J'ai lu le tutoriel, l'aide et d'autres documents. La réponse est probablement là, mais je n'arrive pas à la trouver...


Voilà le problème. J'ai une période de temps pendant laquelle je recherche le prix maximum et minimum et j'affecte ces valeurs à deux variables globales. Ensuite, nous devons ouvrir un ordre en attente à ce prix. Je n'arrive pas à me décider sur le prix. Je veux spécifier correctement l'intervalle du prix actuel.

1.Question - à quoi ressemble la fonction de prix de la barre actuelle, par exemple, à 6 heures du matin ?

2 Comment indiquer le paramètre du ticket afin de clôturer la commande ?

Ou un autre moyen de fermer l'un des deux ordres précédemment ouverts ?

Je dois essayer de cette façon...


for (int i=1 ; i<=OrdersTotal() ; i++)

{

si(OrderSelect(i,SELECT_BY_POS)==true)

{

int T=OrderTicket() ;

int Cur_Hour2=Hour() ; // heure du serveur en heures

double Cur_Min2=Minute() ; // Heure du serveur en minutes

double Cur_time2=Cur_Hour2 + Cur_Min2/100 ; // Heure du serveur

Alert(Cur_time2) ;

si (Cur_time2>=Time_of_buy_sell_2)

OrdreClose(T,1,Ask,3,Red) ;

}

return ; // Sortie de start()


S'il vous plaît, ne jugez pas strictement :)

 
TheXpert писал(а) >>

C'est mieux comme ça :

Et plus rapide, et plus facile, et plus fiable.

Je suis d'accord, mais je mettais plutôt l'accent sur l'autre.

 
serega393 писал(а) >>

Essayez ça. Il ne lit pas les ordres dans l'histoire.

Il lit tout normalement. Vérifiez le commentaire que vous avez après la fermeture. Certains courtiers ajoutent leurs propres entrées au commentaire lorsqu'un ordre est clôturé.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if ( OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if ( UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for ( n = total - 1; n >= 0; n--)   
   {      
      OrderSelect( n, SELECT_BY_POS, MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(), comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(), comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ", f,"");   
   return( f);
} 
 
Pouvez-vous suggérer un EA qui ferme toutes les positions (y compris celles qui ne sont pas rentables) lorsqu'un certain profit est atteint et supprime tous les ordres en attente non exécutés ?