Domande da un "manichino" - pagina 135

 
Cmu4:

Riduco il volume per contrordine, ci scrivo un commento, ma il commento rimane dentro, non si "aggrappa" alla posizione...

La cosa più interessante è che se l'ordine viene inviato con un commento nella direzione della posizione, riceve questo commento, se contro - non lo fa.

Forse è un bug?

Ho guardato il mio EA in modalità visualizzazione e ho visto che a volte i commenti si "attaccano" e a volte no. Non posso ancora dire nulla (non è critico per me). Osservate ancora un po' e scrivete al Service Desk se trovate un modello da riprodurre.
 
tol64:
Ho guardato nella mia modalità di visualizzazione e ho visto che a volte i commenti "aderiscono" e a volte no. Non posso ancora dire nulla (non è critico per me). Osservate ancora un po' e scrivete al Service Desk se trovate qualche schema nel replay.

L'ho già fatto. Hmm, prendo sempre quelli sbagliati. E c'è un bel problema di "estrarre" un commento. Ufff...

A proposito, ecco una semplice funzione per ottenere il commento dell'ultimo trade (solo numeri nei commenti) su una posizione, è corretto? Altrimenti, forse sto "raschiando" male...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 }
 
Cmu4:

L'ho già fatto. Hmm, prendo sempre quelli sbagliati. E c'è un bel problema di "estrarre" un commento. Ufff...

A proposito, ecco una semplice funzione per ottenere il commento dell'ultimo trade (solo numeri nei commenti) su una posizione, è corretto? O forse non sto "capendo bene"...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 } 

La funzione HistoryDealGetString() dovrebbe avere come primo parametro il biglietto della transazione, e finora avete il numero di transazioni nella storia.

 
Yedelkin:

Il primo parametro della funzione HistoryDealGetString() dovrebbe essere un ticket di transazione, ma finora stai specificando il numero di transazioni nella storia.

L'ho corretto, ma ancora non funziona. Signori, vi prego di consigliarmi, perché sono confuso...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 int ticket = HistoryDealGetTicket(total);
 double Comments = StringToDouble(HistoryDealGetString(ticket,DEAL_COMMENT));
 if (Comments!=0)
  {Print("commentttt = ", ticket);
   return(Comments);
  }
 else return(0);
 }
 
 
 
Cmu4:

L'ho aggiustato, ma ancora non funziona. Signori, vi prego di consigliarmi, perché sono confuso...

Va bene, andiamo avanti :)

Ecco la linea.

int ticket = HistoryDealGetTicket(total);
non tiene conto del fatto che la numerazione degli elementi nelle liste (compresa la numerazione delle offerte nella lista delle offerte) inizia con "0", non con "1". Pertanto, specificando il valore totale come "numero della transazione nell'elenco delle transazioni", state specificando un numero inesistente. Vedere l'esempio in MQL5 Reference / Trading Functions / HistoryDealGetTicket.
 
Yedelkin:

Va bene, andiamo avanti :)

Ecco la linea

non tiene conto del fatto che la numerazione degli elementi nelle liste (compresa la numerazione delle offerte nella lista delle offerte) inizia con "0", non con "1". Pertanto, specificando il valore totale come "numero della transazione nell'elenco delle transazioni", state specificando un numero che non esiste. Vedere l'esempio su MQL5 Reference / Trading Functions / HistoryDealGetTicket.
Grazie mille, l'aggiunta di -1 ha risolto tutto (spero che l'abbia fatto - ho controllato via stampa per ora). :)
 
È strano...
   datetime Arr[], time1;
   int t;

   t=CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];
Print(time1) non stampa nulla in questa versione del codice, ma in questa:
   datetime Arr[], time1;

   CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];

- uscite.

È un bug o una caratteristica?

 
Forse t dovrebbe essere definito come datetime?
 
Cmu4:
Forse t dovrebbe essere definito come datetime?

t non può essere datetime, leggere attentamente la guida di CopyTime:

"Valore di ritorno:

Ilnumero dielementi dell'array copiati o -1 in caso di errore".

Intuitivamente, sembra che il ritorno di questa funzione sia elaborato e che il valore di ritorno sia assegnato in modo sicuro alla variabile t... e a questo punto il programma si blocca, come se non volesse essere copiato in Arr. Ma presumibilmente ho pensato che la copia nell'array deve essere eseguita prima, e solo dopo - assegnando alla variabile t il numero restituito di elementi copiati. Ma qui va...
 
alph:

Ciao!

Ho scritto un EA, tutto funziona. Ma ho un errore nella linea di apertura di ' request.type_filling = ORDER_FILLING_AON;'- identificatore non dichiarato e conversione enum implicita

Non riesco a capire cosa c'è di sbagliato, tutti gli EA compilati finora con le stesse stringhe funzionano come prima.

Grazie in anticipo.

Se cliccate sul link ORDER_FILLING_AON, vedrete che il nome è appena cambiato.