OrdersHistoryTotal() renvoie 0

4 réponses

Steve Green

Abonné, bbp_participant, communauté, 47 réponses.

Visiter le profil

il y a 5 ans #238359

Bonjour,

J'essaie d'obtenir la taille du dernier ordre pour un numéro magique et un symbole donné mais OrdersHistoryTotal() renvoie toujours 0 même si j'ai des ordres dans mon onglet Account History sur mon terminal mt4 ?

 

Mon code est le suivant.

 

extern int lv_hour = 6 ;
extern int lv_minute = 0 ;
extern int lv_orderMagicNumber = 0 ; // entrez le nombre magique correct ici

int lv_count = 0 ;

double lv_DefaultPositionSize = 5 ;
double lv_ReturnPositionSize = 0 ;

void start()
{
if (TimeHour(Time[0]) == lv_hour && Minute() == lv_minute && lv_count == 0)
{
lv_ReturnPositionSize = sqGetLastPositionSize(lv_orderMagicNumber) ;

if (lv_ReturnPositionSize != 0)
{
lv_DefaultPositionSize = lv_ReturnPositionSize ; //couvrir la taille de la position par défaut
}
printf("lv_DefaultPositionSize = " +lv_DefaultPositionSize) ;

lv_count = 1 ; // s'assure qu'il ne s'imprime qu'une fois dans le journal
}
}

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal() ; i>=0 ; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
return(OrderLots()) ;
}
}
}

retour(0) ;
}

 

 

Merci d'avance

Steve

 

0

coensio

Client, bbp_participant, communauté, 106 réponses.

Visiter le profil

il y a 5 ans #238361

Par exemple, vous pouvez faire un peu de débogage et voir où cela ne va pas.

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal() ; i>=0 ; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print("Symbole :",OrderSymbol()) ;
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {

Print("Magie : ",OrderMagicNumber()) ;
return(OrderLots()) ;
}
}
}

retour(0) ;
}

Il s'agit d'une fausse déclaration.

0

Steve Green

Abonné, bbp_participant, communauté, 47 réponses.

Visiter le profil

il y a 5 ans #238362

Merci Coensie,

 

 

Avez-vous exécuté votre code ? Il n'entre même pas dans l'instruction if(OrderSelect) car OrderSymbol() renvoie NULL et je suppose que OrderSelect renvoie false, c'est pourquoi ?

 

voir la modification de votre fonction sqGetLastPositionSize ci-dessous :

 

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal() ; i>=0 ; i-) {
Print("OrderSymbol() :",OrderSymbol()) ;
Print("Symbol() :",Symbol()) ;
Print("OrderMagicNumber() :",OrderMagicNumber()) ;

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print("Symbole :",OrderSymbol()) ;
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {

Print("Magie : ",OrderMagicNumber()) ;
return(OrderLots()) ;
}
}
}

retour(0) ;
}

 

 

 

Des idées ?

0

coensio

Client, bbp_participant, communauté, 106 réponses.

Visiter le profil

il y a 5 ans #238365

Celui-ci a été vérifié sur mon compte :

 

double sqGetLastPositionSize(int orderMagicNumber)
{
for(int i=OrdersHistoryTotal()-1 ; i>=0 ; i-)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol() == Symbol())
{
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber)
{
Print("Magic :",OrderMagicNumber()," OrderLots : ",LotsCommande()) ;
return(OrderLots()) ;
}
}
}
retour(0) ;
}

Il s'agit d'une fausse déclaration.

0

Steve Green

Abonné, bbp_participant, communauté, 47 réponses.

Visiter le profil

il y a 5 ans #238369

 

Cela ne fonctionne toujours pas, peut-être parce qu'il s'agit d'un compte de démonstration ?

 

Ma dernière commande était :

166861186 2019.01.24 08:00:01 acheter 0,79 usdjpy 109,625 109,690 0,000 2019.01.24 08:37:29 109,691 0,00 0,00 0,00 47,53

 

 

Voici ce que j'ai obtenu à partir de votre code :

2019.01.26 12:39:35.900 USDJPY,H1 : 109397 tick events (24 barres, 110397 bar states) traités en 0:00:00.016 (temps total 0:00:02.359)2019.01.26 12:39:35.900 USDJPY,H1 : 109397 tick events (24 barres, 110397 bar states) traités en 0:00:00.016 (temps total 0:00:02.359)2019.01.26 12:39:35.892 2019.01.25 06:00:00 dummy USDJPY,H1 : lv_DefaultPositionSize = 52019.01.26 12:39:35.889 2019.01.25 00:00:00 dummy inputs : lv_hour=6 ; lv_minute=0 ; lv_orderMagicNumber=2670682 ; 2019.01.26 12:39:33.536 TestGenerator : current spread 14 used

0

Affichage de 4 réponses de 1 à 4 (sur un total de 4)