Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 820

 

Studiate la matematica. Confuso tra due pini...

C'è questo:

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 

Domande sull'inizio:

1. Che cos'è? Il suo valore = 0. È un indice?

2. Cos'è essenzialmente? Cosa sono i dati significativi? Quali altri tipi di dati ci sono?

3. Su quale base viene calcolato questo valore? E quali variazioni sono possibili in linea di principio? Per esempio, i dati significativi non possono iniziare dall'indice 0 ma dall'indice 5?

4. Perché questo parametro è inserito in OnCalculate?

Se mi sono perso dove è scritto nell'aiuto, per favore indicatelo.

 

Qualcuno può consigliare come sbarazzarsi di questi valori a più cifre nella finestra di debug (le variabili sono normalizzate)?


 
Андрей:

Qualcuno può consigliare come sbarazzarsi di questi valori a più cifre nella finestra di debug (le variabili sono normalizzate)?


Aggiungete una variabilestringa, impostatela su DoubleToString() e guardatela nella finestra di debug.

Si potrebbe mettere tutto in una macro #ifdef _DEBUG

 
Alexey Viktorov:

Aggiungete una variabilestringa, impostatela su DoubleToString() e guardatela nella finestra di debug.

Si potrebbe mettere tutto in una macro #ifdef _DEBUG

Grazie, ma la domanda sorge - questi valori a più cifre, corrispondono alla realtà o così, "gioco di luce".

Il punto non è che deve essere bello, ma quali valori vengono utilizzati per ulteriori calcoli.

 
Андрей:

Grazie, ma la domanda sorge spontanea - sono veri questi valori multi valore, o sono solo "giochi di luce".

Non si tratta di farlo sembrare bello, ma di quali valori vengono utilizzati per ulteriori calcoli.

Questi valori a più cifre corrispondono alla realtà. E a volte rovinano il quadro, soprattutto nelle espressioni di confronto.
Per essere sicuri, si raccomanda di usare NormalizeDouble() con una data precisione.
 
E nessuno si è preoccupato di dire qualcosa sulla beghina. Deve essere qualcosa di completamente estraneo...
 
User_mt5:
Questi sono quelli a più significati. E a volte rovinano il quadro, soprattutto nelle espressioni di confronto.
Per essere sicuri, si raccomanda di usare NormalizeDouble() con una precisione specificata.
Quindi queste "strisciate" emergono da valori normalizzati. Sembra che manchi qualcosa in questa zuppa (MT5).
 
Андрей:
Quindi sono queste "cimici" che escono dai valori normalizzati. Sembra che manchi qualcosa in questa zuppa (MT5).

Finora ho creduto ingenuamente che la normalizzazione fosse la verità in ultima istanza.
Potresti per favore mostrarmi un frammento di codice dove si verifica il problema. Forse la causa è qualcos'altro.

 
User_mt5:

Fino ad ora, ho ingenuamente creduto che la normalizzazione fosse la verità in ultima istanza.
Potresti per favore mostrarmi un frammento di codice dove si verifica il problema. Forse la causa è qualcos'altro.

Ecco un frammento, però, che è sufficiente per vedere l'"effetto".

Ecco il risultato:

È lo stesso con o senza normalizzazione.

 

Андрей:

È lo stesso con o senza normalizzazione.

Sì...

In realtà, nelle espressioni di confronto (come "al volo") la normalizzazione funziona.
Per quanto ho capito, i problemi sorgono nel processo di semplice calcolo.
Ma se un numero è normalizzato, anche il numero normalizzato dovrebbe essere memorizzato.

Ma ahimè.

Mi chiedo cosa abbiano da dire gli sviluppatori a riguardo.