Risposta

OrdersHistoryTotal() restituisce 0

4 risposte

Steve Green

Abbonato, bbp_partecipante, comunità, 47 risposte.

Visita il profilo

5 anni fa #238359

Ciao,

Sto cercando di ottenere l'ultima dimensione dell'ordine per un dato numero magico e un simbolo, ma OrdersHistoryTotal() restituisce sempre 0 anche se ho ordini nella mia scheda Account History sul mio terminale mt4?

 

Il mio codice è riportato di seguito.

 

extern int lv_hour = 6;
extern int lv_minute = 0;
extern int lv_orderMagicNumber = 0; // inserire qui il numero magico corretto

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);

se (lv_ReturnPositionSize != 0)
{
lv_DefaultPositionSize = lv_ReturnPositionSize; /sovrascrive la dimensione della posizione predefinita
}
printf("lv_DefaultPositionSize = " +lv_DefaultPositionSize);

lv_count = 1; // fa in modo che venga stampato una sola volta nel diario
}
}

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());
}
}
}

ritorno(0);
}

 

 

Grazie in anticipo

Steve

 

0

coensio

Cliente, bbp_partecipante, comunità, 106 risposte.

Visita il profilo

5 anni fa #238361

Ad esempio, si può fare un po' di debug e vedere dove va male.

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

{

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

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

ritorno(0);
}

È un'affermazione falsa.

0

Steve Green

Abbonato, bbp_partecipante, comunità, 47 risposte.

Visita il profilo

5 anni fa #238362

Grazie Coensie,

 

 

Hai eseguito il tuo codice. Non entra nemmeno nell'istruzione if(OrderSelect) perché OrderSymbol() restituisce NULL e credo che OrderSelect restituisca false, per questo motivo?

 

vedere la modifica della funzione sqGetLastPositionSize di seguito:

 

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

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

{

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

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

ritorno(0);
}

 

 

 

Qualche idea?

0

coensio

Cliente, bbp_partecipante, comunità, 106 risposte.

Visita il profilo

5 anni fa #238365

Questo è stato verificato sul mio conto:

 

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: ", OrdineLotti());
return(OrderLots());
}
}
}
ritorno(0);
}

È un'affermazione falsa.

0

Steve Green

Abbonato, bbp_partecipante, comunità, 47 risposte.

Visita il profilo

5 anni fa #238369

 

Non funziona ancora, forse perché si tratta di un conto demo?

 

Il mio ultimo ordine è stato:

166861186 2019.01.24 08:00:01 buy 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

 

 

Questo è il risultato ottenuto dal vostro codice:

2019.01.26 12:39:35.900 USDJPY,H1: 109397 eventi di tick (24 barre, 110397 stati di barra) elaborati in 0:00:00.016 (tempo totale 0:00:02.359)2019.01.26 12:39:35.900 USDJPY,H1: 109397 eventi di tick (24 barre, 110397 stati di barra) elaborati in 0:00:00.016 (tempo totale 0:00:02.359).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 input: lv_hour=6; lv_minute=0; lv_orderMagicNumber=2670682; 2019.01.26 12:39:33.536 TestGenerator: spread corrente 14 usato

0

Stai visualizzando 4 risposte - da 1 a 4 (di 4 totali)