Grazie per le risposte così complete e mi scuso per la mia fretta e disattenzione mentre studiavo la documentazione, le risposte erano effettivamente contenute nella descrizione della funzione OnCalculate.
A quanto pare sono stato troppo veloce a forzare il processo di apprendimento e non ho studiato le descrizioni di OnInit e OnCalculate.
Yedelkin:
Queste righe rispondono alla sua domanda?
MetaDriver:
In questo caso, questi valori non possono essere calcolati correttamente (non c'è abbastanza storia per calcolarli), quindi vengono stupidamente assegnati valori zero.
// Avrei preferito assegnare loro dei dati di input corrispondenti, ma non fa molta differenza.
Posto erroneamente la domanda (è ovvio, ho scritto lo stesso nel commento alla riga, e ho capito che l'assegnazione di valore nullo è presente). Per parafrasare
Profi_R:
Ho messo il tabulato e vedo che i valori diversi da 0 in ExtLineBuffer sono assegnati dall'indice limit-1all'indice rates_total-1, ma nel grafico l'indicatore è disegnato in tutto lo spazio, hmm, allora dov'è l'assegnazione dei valori(diversi da zero) al buffer dell'indicatore nello spazio da 0 a limit-1?
Che non possono essere calcolati e non hanno senso è chiaro fin dall'inizio. Ho guardato, sulla barra 0 il valore di una media semplice (indicatore) è uguale al valore massimo del prezzo (non sempre), all'inizio ho pensato che si trattasse del numero di barre visualizzate sul grafico e memorizzate nella cronologia, ho commutato questa opzione delle impostazioni in unlimit, il risultato non è cambiato, l'indicatore sulla prima barra limite (sinistra) è disegnato, e il suo valore è diverso da 0.
Grazie per le risposte così esaurienti e mi scuso per la mia fretta e disattenzione nello studiare la documentazione; le risposte erano effettivamente contenute nella descrizione della funzione OnCalculate.
A quanto pare sono stato troppo veloce a forzare il processo di apprendimento e non ho studiato le descrizioni di OnInit e OnCalculate.
Ok.
Parafrasando
Il fatto che non possono essere calcolati e non hanno senso è chiaro fin dall'inizio. Ho guardato, a 0 bar il valore di una media semplice (indicatore), equiparato al valore massimo del prezzo (non sempre), all'inizio ho pensato che si trattasse del numero di barre visualizzate sul grafico e memorizzate nella storia, ho commutato questa impostazione su "illimitato", il risultato non è cambiato, l'indicatore sulle prime barre (a sinistra) disegnate, e il suo valore è diverso da 0.
Ho controllato e sembra lo stesso. La cronologia nelle impostazioni è di 100000 barre, non voglio controllare se c'è un limite, ci credo).
Non ho una risposta a "come è possibile", è meglio chiedere agli sviluppatori (per esempio nel ramo "bugs, bugs, questions", che è visitato dagli sviluppatori molto regolarmente).
Sono sicuro che nessun miracolo apparirà qui, molto probabilmente il terminale non visualizza tutta la storia richiesta e le barre più a sinistra disponibili (programmaticamente) sono semplicemente lasciate fuori. :)
Profi_R: Il fatto che non possono essere calcolati e non hanno senso è chiaro fin dall'inizio. Ho guardato, a 0 barre, il valore di una media semplice (l'indicatore), equiparato al valore massimo del prezzo (non sempre), all'inizio ho pensato che si trattasse del numero di barre visualizzate sul grafico e memorizzate nella storia, ho commutato questa opzione in un illimitato, il risultato non è cambiato, l'indicatore sulle prime barre (a sinistra) è disegnato, e il suo valore è diverso da 0.
Lo ha fatto scientificamente: nella linea for(i=0;i<limit-1;i++) ExtLineBuffer[i]=0.0; sostituisci zero con uno e vedi dove appare. Confrontare con i risultati ottenuti in precedenza.
Sono sicuro che nessun miracolo apparirà qui, molto probabilmente il terminale non visualizza tutta la storia richiesta e le barre più a sinistra disponibili (programmaticamente) sono semplicemente lasciate fuori dal quadro. :)
Sì, come si è scoperto, l'intera profondità della storia è stata calcolata (senza collegarla a un grafico), solo che non è sufficiente per abilitare la profondità, visualizzata sul grafico, è necessario o riavviare il terminale o aprire nuovamente il grafico e solo allora questa opzione entra in vigore. Questo pezzo di codice è ora completamente chiaro.
Buona sera, sto studiando la strutturadel risultato della richiesta di trading (MqlTradeResult). Scritto così Stampa per questa struttura rispettivamente tra Print(999999999999999999999999);
OrderSend(request,result);
int Error=GetLastError(); ResetLastError();
printf("Error %i ",Error);
Print(i);
Print(999999999999999999);
uint re= result.retcode;
Print( "Код результата операции");
Print( re);
// int re=ulong ru= result. deal;
Print( "Тикет сделки, если она совершена");
Print( ru);
ru= result. order;
Print( "Тикет ордера, если он выставлен");
Print( ru);
double rd= result. volume;
Print( "Объем сделки, подтверждённый брокером");
Print( rd);
rd= result. price;
Print( "Цена в сделке, подтверждённая брокером");
Print( rd);
rd= result. bid;
Print( "Текущая рыночная цена предложения (цены реквота)");
Print( rd);
rd= result. ask;
Print( "Текущая рыночная цена спроса (цены реквота)");
Print( rd);
string rs= result. comment;
Print( "Комментарий брокера к операции (по умолчанию заполняется расшифровкой)");
Print( re);
// re= result. request_id; // Print( "Идентификатор запроса, устанавливается терминалом при отправке "); // Print( re);Print(999999999999999999);
Per molti valori la stampa è scritta zero, che cos'è!
Dimka-novitsek: Buona sera, sto studiando la strutturadel risultato della richiesta di trading (MqlTradeResult). Ho scritto Print(9999999999999999999999) per questa struttura rispettivamente; per molti valori Print ha scritto zero, che cos'è!
Perché scriviamo queste righe? Perché non analizziamo il risultato?
Grazie per le risposte così complete e mi scuso per la mia fretta e disattenzione mentre studiavo la documentazione, le risposte erano effettivamente contenute nella descrizione della funzione OnCalculate.
A quanto pare sono stato troppo veloce a forzare il processo di apprendimento e non ho studiato le descrizioni di OnInit e OnCalculate.
Yedelkin:
Queste righe rispondono alla sua domanda?
In questo caso, questi valori non possono essere calcolati correttamente (non c'è abbastanza storia per calcolarli), quindi vengono stupidamente assegnati valori zero.
// Avrei preferito assegnare loro dei dati di input corrispondenti, ma non fa molta differenza.
Posto erroneamente la domanda (è ovvio, ho scritto lo stesso nel commento alla riga, e ho capito che l'assegnazione di valore nullo è presente). Per parafrasare
Ho messo il tabulato e vedo che i valori diversi da 0 in ExtLineBuffer sono assegnati dall'indice limit-1all'indice rates_total-1, ma nel grafico l'indicatore è disegnato in tutto lo spazio, hmm, allora dov'è l' assegnazione dei valori(diversi da zero) al buffer dell'indicatore nello spazio da 0 a limit-1?
Grazie per le risposte così esaurienti e mi scuso per la mia fretta e disattenzione nello studiare la documentazione; le risposte erano effettivamente contenute nella descrizione della funzione OnCalculate.
A quanto pare sono stato troppo veloce a forzare il processo di apprendimento e non ho studiato le descrizioni di OnInit e OnCalculate.
Parafrasando
Il fatto che non possono essere calcolati e non hanno senso è chiaro fin dall'inizio. Ho guardato, a 0 bar il valore di una media semplice (indicatore), equiparato al valore massimo del prezzo (non sempre), all'inizio ho pensato che si trattasse del numero di barre visualizzate sul grafico e memorizzate nella storia, ho commutato questa impostazione su "illimitato", il risultato non è cambiato, l'indicatore sulle prime barre (a sinistra) disegnate, e il suo valore è diverso da 0.Ho controllato e sembra lo stesso. La cronologia nelle impostazioni è di 100000 barre, non voglio controllare se c'è un limite, ci credo).
Non ho una risposta a "come è possibile", è meglio chiedere agli sviluppatori (per esempio nel ramo "bugs, bugs, questions", che è visitato dagli sviluppatori molto regolarmente).
Sono sicuro che nessun miracolo apparirà qui, molto probabilmente il terminale non visualizza tutta la storia richiesta e le barre più a sinistra disponibili (programmaticamente) sono semplicemente lasciate fuori. :)
Il fatto che non possono essere calcolati e non hanno senso è chiaro fin dall'inizio. Ho guardato, a 0 barre, il valore di una media semplice (l'indicatore), equiparato al valore massimo del prezzo (non sempre), all'inizio ho pensato che si trattasse del numero di barre visualizzate sul grafico e memorizzate nella storia, ho commutato questa opzione in un illimitato, il risultato non è cambiato, l'indicatore sulle prime barre (a sinistra) è disegnato, e il suo valore è diverso da 0.
Sono sicuro che nessun miracolo apparirà qui, molto probabilmente il terminale non visualizza tutta la storia richiesta e le barre più a sinistra disponibili (programmaticamente) sono semplicemente lasciate fuori dal quadro. :)
In generale, si dovrebbe iniziare con gli articoli Come scrivere un indicatore in MQL5 e Indicatore per indicatore in MQL5.
Inoltre, c'è un ramo speciale nella sezione appropriata del forum, che ha lo scopo di rispondere a tali domande - Quello che devi sapere sugli indicatori
In generale, si dovrebbe iniziare con gli articoli Come scrivere un indicatore in MQL5 e Indicatore per indicatore in MQL5.
Inoltre, c'è un thread speciale nella sezione appropriata del forum, che ha lo scopo di rispondere a tali domande - Cosa devi sapere sugli indicatori
Buona sera, sto studiando la strutturadel risultato della richiesta di trading (MqlTradeResult). Ho scritto Print(9999999999999999999999) per questa struttura rispettivamente; per molti valori Print ha scritto zero, che cos'è!
Perché scriviamo queste righe? Perché non analizziamo il risultato?
Per quanto riguarda gli zeri: che tipo di zeri causano un disturbo?