Errori, bug, domande - pagina 1360

 
A100:
Questo è quello che ho suggerito:
...
Solo le operazioni == e != sono interessate dai cambiamenti.
Tutto il resto, incluso l'operatore =, dovrebbe essere lasciato com'è ora (invariato)

Come può l'operatore= essere lasciato invariato se ora causa confusione tra i puntatori e gli oggetti stessi? Se si usa * per esso, allora dovrebbe essere usato anche per tutti gli altri operatori. Ci deve essere un unico standard. Quello che suggerisci è che il compilatore dovrebbe scegliere quello giusto da solo - questo è sbagliato. Ci saranno un sacco di errori difficili da trovare. Tutto dovrebbe essere inequivocabile: azioni o con un oggetto o con un puntatore.

Beh, tutti quegli asterischi sono, ovviamente, stampelle forzate. Dobbiamo cambiare l'intero concetto che gli sviluppatori hanno scelto non molto bene fin dall'inizio, credo.

Avremmo dovuto abbandonare il binding al C++, e rispettivamente abbandonare l'uso dei puntatori come un tipo separato di variabile, sostituendoli con i riferimenti. I riferimenti sono essenzialmente la stessa cosa dei puntatori, solo interpretati dal compilatore come oggetti stessi.Pertanto, tutte le azioni con queste variabili, compresi gli operatori, sono trattate come azioni con un oggetto. Se avete bisogno di confrontare o assegnare esattamente i riferimenti, usate l'operatore di riferimento. Pertanto, non ci saranno contraddizioni:

 A  a;                     // воздаём объект
 A& aref;                  // создаём неинициализированную ссылку

 &aref = &a;                // присваиваем ссылку на a
 bool equalref = &aref==&a; // сравниваем ссылки

 aref = a;                  //вызываем оператор=()
 bool equal = aref==a;      // вызываем оператор==()

Tutto sommato, se gli sviluppatori concepiranno mai MQL6, dovremmo andare in quella direzione. Il binding a C++ non ha più senso, perché non corrisponde al concetto del linguaggio.

 
A100:
Qual è l'aggiornamento più recente che avete?

Sia MetaTrader che MetaEditor build 1159 (Windows 10 32 bit). Su un grande PC (64 bit) non sono sicuro di MetaEditor, ma MetaTrader è sicuramente la build 1159.
 
A100:
Qual è l'aggiornamento più recente che avete?

Ho il 1150. non vedo l'aggiornamento al successivo 1159
 
Gennadiy Stanilevych:
Ho 1150. non vede gli aggiornamenti al successivo 1159
È necessario connettersi al server MetaQuotes-Demo per ottenere gli ultimi aggiornamenti.
 
A100:
MetaQuotes-Demo è interessante perché eravamo soliti ricevere aggiornamenti 2-3 volte al mese. È chiaro che i broker hanno aggiornamenti molto meno frequenti.
Karputov Vladimir:
È necessario connettersi al server MetaQuotes-Demo per ottenere gli ultimi aggiornamenti.

Concordo, aggiornato tramite MetaQuotes-Demo, ancora 1150! E il terminale mi ha informato più volte che gli aggiornamenti sono stati scaricati e offerto di riavviare, ancora 1150.

Ok, ho scaricato il pacchetto di distribuzione da http://www.metatrader5.com/ru/download, ho aperto un conto demo su MetaQuotes-Demo, spento e acceso il terminale per diverse volte - 1150! UAC disabilitato, Windows 7 SP1 - 64

Скачать MetaTrader 5
Скачать MetaTrader 5
  • www.metatrader5.com
Скачать торговый терминал MetaTrader 5 для комфортной и успешной работы на финансовых рынках. Терминал обладает внушительными торговыми и аналитическими возможностями и является одним из лучших в мире
 

Ripeterò la domanda visto che nessuno ha risposto e che è scesa a causa dell'accesa discussione sull'OOP. Questa domanda è davvero importante, è un bug o una caratteristica? L'ho notato su MT4.

Ho incontrato una situazione in cui la variabile esterna cambia durante l'esecuzione del programma, ma quando cambio il timeframe, prende di nuovo il valore che ho impostato nella finestra delle proprietà. Per esempio, se prima dell'inizio imposto TradeEnable a EnableAll e cambio il valore in EnableBuy durante l'esecuzione del programma, il valore tornerà a EnableAll quando il grafico passa a un altro timeframe. Il valore che definisco nell'evento timer e l'output attraverso Comment, non ci può essere alcun errore.

enum ETradeEnable {EnableAll, EnableBuy, EnableSell, DisableAll};
extern ETradeEnable TradeEnable = EnableAll;

La variabile TradeEnable non è influenzata dal passaggio da un grafico all'altro. Leggete l'aiuto - A differenza delle variabili di input, i valori delle variabili esterne possono essere cambiati programmaticamente mentre il programma è in esecuzione.

Ecco come sono impostati OnDeinit e OnInit.

Domanda: Non capisco qualcosa o il cambiamento di TradeEnable è un errore di runtime?

int LastDeinitReason = 0;

void OnDeinit(const int reason)
{
    LastDeinitReason = reason;
    if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS)
        return;
    EventKillTimer();
// далее код при завершении работы советника
}

int OnInit()
{
    if(LastDeinitReason==REASON_CHARTCHANGE || LastDeinitReason==REASON_TEMPLATE)
    {
        LastDeinitReason = 0;
        return(INIT_SUCCEEDED);
    }
    if(LastDeinitReason==REASON_PARAMETERS)
    {
        SetParams();
        return(INIT_SUCCEEDED);                              
    }
// далее код инициализации при запуске
}
 
Karputov Vladimir:
Devi connetterti al server MetaQuotes-Demo per ottenere gli ultimi aggiornamenti.
Questo non aiuta. Ho anche demolito MT5. Aperto il demo su MetaQuotes. Ancora 1150.
 
Gennadiy Stanilevych:
Non aiuta. Ho anche tolto MT5. Aperto un demo sulle meta-citazioni. Ancora 1150.
La sola apertura di un conto demo sul server MetaQuites-Demo non è sufficiente: è anche necessario connettersi a questo conto demo per l'aggiornamento.
 
Karputov Vladimir:
La sola apertura di un conto demo sul server MetaQuites-Demo non è sufficiente: è anche necessario connettersi a questo conto demo per l'aggiornamento.

Certo che mi sono collegato. Poi ha riavviato di nuovo il terminale. Ancora non vede nessun aggiornamento.

File:
20150826.log  7 kb
 
Gennadiy Stanilevych:

Certo che mi sono collegato. Poi ha riavviato di nuovo il terminale. Ancora non vede nessun aggiornamento.

Strano (ho guardato il file di log). Per esperienza - se ci sono aggiornamenti, dopo la connessione letteralmente entro tre secondi inizia il download.