Errori, bug, domande - pagina 1397

 
Ilya Malev:

E in secondo luogo, abbiamo bisogno di usare questo valore di buffer dell'indicatore in altri indicatori e Expert Advisors,

e qualcosa mi dice che se si fa un buffer per i calcoli, sarà impossibile ottenere il suo valore attraverso iCustom.

A proposito, non ricordo esattamente, ma sembra essere possibile. Fate una prova. )
 
Anatoli Kazharski:
A proposito, non ricordo esattamente, ma credo che si possa. Fate una prova. )
Anche così, ho una dozzina di indicatori con attributi come DRAW_NONE che si chiamano l'un l'altro, e poi ho già bisogno di qualche sottosistema separato che raggruppi in un posto le letture di tutti gli indicatori di lavoro per posizione del puntatore del mouse. :)
 
Ilya Malev:
Anche così, ho una dozzina di indicatori con attributi come DRAW_NONE che si chiamano l'un l'altro, e poi ho già bisogno di qualche sottosistema separato che raggruppi in un posto le letture di tutti gli indicatori funzionanti in base alla posizione del puntatore del mouse. :)
Questo argomento è più serio. Potremmo aggiungerlo nel servizio Desk. ))
 
Se puoi ottenere valori come INDICATOR_CALCULATIONS attraverso iCustom, allora sì, tutto quello che devi fare è permettere a questi valori di apparire nella finestra dei dati. Se ricevo una risposta alla mia richiesta da servicedesk, suggerirò questa opzione.
 
A100:
Errore di compilazione:'a' - non è un membro statico
ma va bene così. Qual è la differenza?

//должен обращаться к функции, хотя бы потому что уж стоят скобки и тип, да еще a базового класса приватный
class A     { int a; };
class B : A { void a(); };
void B::a() {}
// здесь инлайнится, все правильно
class A     { int a; };
class B : A { void a() {} };
// так работает, видно проблема с компилятором
class A     {int h; void f(); };
class B : A {void a(); };
void B::a() {}
 

Non so voi, ma io vedo già diversi errori di compilazione.

1) non distingue tra funzioni e variabili quando si eredita.

2) la variabile della classe base è privata, quindi prima dovrebbe uscire il messaggio che è impossibile accedere ai membri privati

 
sigma7i:

Non so voi, ma io vedo già diversi errori di compilazione.

1) non distingue tra funzioni e variabili quando si eredita.

2) la variabile della classe base è privata, quindi prima dovrebbe uscire il messaggio che è impossibile accedere ai membri privati

Si prega di citare alcuni esempi. Sarebbe interessante vedere quali casi particolari causano tali problemi in termini di formattazione del codice.
 
Anatoli Kazharski:
Dammi qualche esempio. È interessante vedere in quali casi tali problemi in termini di progettazione del codice.

Credo di aver già dato degli esempi. Ma lo renderò più dettagliato per renderlo ancora più chiaro:

Notate che nel terzo esempio nella classe A ho sostituito il nome della variabile con "h" e questo codice si compila (ovviamente se commentate gli esempi 1 e 2), il che conferma la mia intuizione.

//+------------------------------------------------------------------+
//|                                                           ds.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+



//должен обращаться к функции, хотя бы потому что уж стоят скобки и тип, да еще a базового класса приватный
class A     { int a; };
class B : A { void a(); };
void B::a() {}
// здесь инлайнится, все правильно
class A     { int a; };
class B : A {void a() {} };
// так работает, видно проблема с компилятором
class A     {int h; void f(); };
class B : A {void a(); };
void B::a() {}


void OnStart()
  {
    // c объектами работает правильно
  
    B variable;
    variable.a();   // ошибка доступа, здесь все нормально
    variable.a = 1; // ошибка доступа, как и следовало ожидать, здесь все нормально
  }
//+------------------------------------------------------------------+
 

Situazione: il test è su H1 (penso sia importante - stiamo parlando di un test multi-periodo). L'ultima barra giornaliera (D1) nel tester SeriesInfoInteger dà per esempio 2015.10.08. Prendo l 'indicatore iMA su D1 con un offset di 2. Dà il valore per 2015.10.05 (che dovrebbe essere 2015.10.06 con un offset di 2).

Significa che l'indicatore è in ritardo nel tester rispetto alla creazione della serie temporale. Succede chiaramente all'inizio di una nuova barra D1. Qualcuno ha vissuto una situazione simile? Non simulerò ancora l'esempio.

 
Ilya Malev:

Situazione: Il test è su H1. L'ultima barra giornaliera (D1) nel tester SeriesInfoInteger dà per esempio 2015.10.08. Prendo le letture dell'indicatore iMA con un offset di 2. Dà il valore per 2015.10.05 (che dovrebbe essere 2015.10.06 con un offset di 2).

Cioè, l'indicatore è in ritardo nel tester rispetto alla costruzione della serie temporale. A qualcuno è successo questo? Non ho ancora intenzione di simulare un esempio.

Sì, questo può accadere quando si lavora con il TF, per quanto mi ricordi, solo più vecchio di quello attuale nel tester. I dati non hanno avuto abbastanza tempo per essere aggiornati. Cioè, quando è un nuovo giorno in H1, il giorno precedente è il primo tick di questo nuovo giorno in D1.