Domande da un "manichino" - pagina 59

 
Yedelkin:
Gli array bidimensionali come array[][] non funzionano?
In teoria, dovrebbero, ho anche provato... Non l'ho padroneggiato. Mi piacerebbe vedere un'implementazione pronta, se è possibile in linea di principio. Ci sono stati molti intoppi immediatamente... Se stiamo parlando di un array bidimensionale, la prima cosa che mi ha lasciato perplesso è che i buffer sono inizialmente indefiniti, cioè dinamici. Come potrebbero essere caricati nell'array padre? E poi... Se ogni buffer ha la sua lunghezza individuale quando viene riempito, ci ritroveremo con un array cubico invece di uno bidimensionale, e non sarà nemmeno un cubo, ma una specie di tetris 3D.
 
x100intraday:
In teoria dovrebbero, ho anche provato... Non potevo farlo. Mi piacerebbe vedere un'implementazione finita, se è possibile in linea di principio. Ci sono stati molti intoppi immediatamente... Se stiamo parlando di un array bidimensionale, la prima cosa che mi ha lasciato perplesso è che i buffer sono inizialmente indefiniti, cioè dinamici. Come potrebbero essere caricati nell'array padre? E poi... Se ogni buffer ha la sua lunghezza individuale quando viene riempito, ci ritroveremo con un array cubico invece di uno 2D, ma non sarà nemmeno un cubo, ma una specie di tetris 3D.
Usa la struttura come un wrapper per un buffer dinamico. È stato testato - funziona.
 

Potete dirmi come scoprire il tempo di chiusura di una transazione?

Non riesco a trovarlo nelle proprietà dell'affare.

 
masharov:

Potete dirmi come scoprire il tempo di chiusura di una transazione?

Non riesco a trovarlo nelle proprietà dell'affare.

Il trade (ordine) non ha un tempo di chiusura, come era in MT4. Per determinare la durata di un "singolo trade", come era in MT4, dovremo analizzare i trade di "apertura" (IN) e di "chiusura" (OUT/INOUT).

Lo stesso vale per la posizione.

 
Il manuale di riferimento dice che per la funzionePositionGetSymbol() "se non viene trovata nessuna posizione, viene restituita una stringa vuota". E se è il ritorno di stringhe vuote che deve essere monitorato, a cosa dovrebbe essere confrontato il valore restituito dalla funzione: con NULL o con "" (due virgolette)?
 
Yedelkin:
Il manuale di riferimento dice che per la funzione PositionGetSymbol() "se non viene trovata nessuna posizione, viene restituita una stringa vuota". E se è necessario monitorare il ritorno di stringhe vuote, a cosa dovrebbe essere confrontato il valore di ritorno della funzione: NULL o "" (due virgolette)?
Dovete usare un'altra funzione per controllare se c'è una posizione.
 
Renat:
Dovete usare un'altra funzione per controllare se c'è una posizione.
No, lo scopo non è controllare se c'è una posizione, ma applicare l'operatore continue quando viene restituita una stringa vuota nel ciclo. Ho scritto in un post precedente:"è necessario monitorare il ritorno di stringhe vuote", quindi chi può dirmi cosa confrontare?
Документация по MQL5: Основы языка / Операторы / Оператор продолжения continue
Документация по MQL5: Основы языка / Операторы / Оператор продолжения continue
  • www.mql5.com
Основы языка / Операторы / Оператор продолжения continue - Документация по MQL5
 
Yedelkin:
No, lo scopo non è controllare se la posizione esiste, ma applicare l 'operatore continue quando viene restituita una stringa vuota nel ciclo. Ho scritto in un messaggio precedente:"è necessario tracciare il ritorno delle stringhe vuote".Quindi cosa confrontare, chi lo dirà?

La sezione di aiuto ha un tipo void e una costante NULL. In effetti, avresti potuto controllarlo molto tempo fa:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string a=NULL;
   string b="";
   if(a==b)
      Print("Пустая строка и NULL - одно и то же");
   else
      Print("Пустая строка не равна NULL");
  }
//+--
 
Rosh:

C'è una sezione nell'aiuto sul tipo void e sulla costante NULL.

Beh, sì, c'è una sezione. Solo che questa sezione non dice esattamente come viene denotata una stringa vuota. L'esempio della sezione usa la variabile NULL solo per rilevare una stringa non inizializzata.

Per quanto riguarda l'autocontrollo, la questione è sorta dopo che il compilatore ha fatto esplodere la frase

switch(PositionGetSymbol(i)!=(NULL || ""))

come segue:"conversione implicita da 'numero' a 'stringa'" ma il confronto dei valori di stringa specificati separatamente non ha causato alcuna obiezione al compilatore. Ecco perché ho fatto la domanda invece di aggravarmi con ragionamenti quasi teorici su "cast a un tipo più vecchio" e cercare di semplificare il codice.

Dal tuo esempio si può vedere che almeno gli sviluppatori di lingue usano le doppie virgolette senza spazi per indicare una stringa vuota. Questo è quello che volevo sapere. Grazie.

 
Yedelkin:

Beh, sì, c'è una sezione. Solo che questa sezione non dice esattamente come viene identificata una stringa vuota. L'esempio della sezione usa la variabile NULL solo per rilevare una stringa non inizializzata.

Per quanto riguarda l'autotest, la questione è sorta dopo che il compilatore ha sbottato la seguente frase

Cosa ti aspettavi di ottenere da questa espressione?

(NULL || "")
Leggere operazioni booleane