Imparare e scrivere insieme in MQL5 - pagina 36

 

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.
 
Profi_R:

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.
 
MetaDriver:

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.
Документация по MQL5: Операции с графиками / ChartOpen
Документация по MQL5: Операции с графиками / ChartOpen
  • www.mql5.com
Операции с графиками / ChartOpen - Документация по MQL5
 

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

 
Rosh:

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

))))) felice di vederti in buona salute, che tu possa perdonare la mia fiammata. Grazie, ne terrò conto)
 
È bello vederti anche sulla 5 :)
 
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?

uint re= result.retcode;
         Print( "Код результата операции");
         Print( re);  

Per quanto riguarda gli zeri: che tipo di zeri causano un disturbo?

 
Grazie! L'attuale prezzo di domanda e offerta è zero. Biglietto d'accordo. Ordine dei biglietti. Bene, ecco il papà.
Документация по MQL5: Торговые функции / OrderGetTicket
Документация по MQL5: Торговые функции / OrderGetTicket
  • www.mql5.com
Торговые функции / OrderGetTicket - Документация по MQL5