Aggiornamento della piattaforma MetaTrader 5 build 3280: Miglioramenti e correzioni in base al feedback dei trader - pagina 2

 

Posso suggerire un miglioramento... È il seguente: Eseguendo il seguente codice di script

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
{ 
  
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

in qualsiasi finestra, avremo una nuova finestra aperta con il simbolo EURUSD e potremo aggiungere un indicatore personalizzato nella finestra appena creata .... PERFETTO... Tuttavia, se trasformiamo questo stesso script in un servizio come mostrato di seguito:

#property service
//+------------------------------------------------------------------+
void OnStart()
{
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

il comportamento sarà già diverso, la finestra sarà creata come previsto, ma anche avendo il valore ID della finestra non possiamo aggiungere alcun indicatore nella finestra, restituisce il 4802 errore ....

Sarebbe MOLTO BUONO se un servizio potesse aggiungere un indicatore, dato che possiamo usare i servizi per fare del lavoro extra, senza sovraccaricare un EA per esempio, ma anche se non fosse possibile farlo, è il suggerimento di chi sa, permettere a un servizio di eseguire uno script, comunque aiuterebbe molto...

E se non è troppo abusare ... sarebbe anche bello se il linguaggio MQL5 avesse un USCITA() per permettere un modo rapido per uscire dal codice ricorsivo quando genera un errore, ma non invece di avere un'uscita brusca, possiamo trattare l'errore e finire completamente l'esecuzione del programma tramite la chiamata EXIT()... proprio come quello che succede quando chiamiamo ExpertRemove() per finire un EA ... comunque GRAZIE PER L'ATTENZIONE ... 😁👍

 

Ho installato MT5 diverse volte per la modalità /portbale. Tre sono attualmente in esecuzione in parallelo, due sono sul canale di rilascio come commercio e uno sul canale beta.

Purtroppo, la finestra che chiede se aggiornare ora o più tardi per un nuovo aggiornamento non indica quale versione può essere aggiornata: Rilascio o Beta:


Sarebbe bello se questa finestra dicesse semplicemente:"L'aggiornamento della release (o gli aggiornamenti beta) sono stati scaricati. Tempestivo ... "

In questo modo l'utente saprebbe se vuole aggiornare durante la settimana (FX è aperto) o meglio ancora solo nel fine settimana.

Forse si potrebbe anche distinguere gli aggiornamenti della release da quelli della beta in base al colore. Questo potrebbe aiutare ad evitare errori.

 
MetaQuotes:

Venerdì 29 aprile 2022 verrà rilasciata una versione aggiornata della piattaforma MetaTrader 5. In esso abbiamo fatto alcune aggiunte e correzioni minori basate sul feedback ricevuto dopo la pubblicazione della versione 3270.

L'aggiornamento include le seguenti modifiche:

  1. Terminale: Corretto il riempimento dei livelli di Trailing Stop standard nel menu di contesto degli ordini e delle posizioni aperte.
  2. Terminale: traduzioni aggiornate dell'interfaccia utente.
  3. Correzioni per i cross-log.

L'aggiornamento sarà disponibile attraverso il sistema Live Update.

Dato che ci sono correzioni così "piccole", ti chiedo di includere nella prossima release una correzione per questo bug: rimozione delle informazioni sul volume dei tick quando si copiano i tick da un simbolo sorgente Time$Sale a uno personalizzato, utilizzando la funzionalità standard della piattaforma MT5.

Questo è un piccolo, ma molto fastidioso bug per coloro che lavorano con gli strumenti di scambio, perché questo bug porta al fatto che su futures personalizzati "continous", costruiti in MT5, è impossibile applicare indicatori che lavorano con la storia dei tick di scambio!

Continuo NQ

 
Questo avvertimento del compilatore non è ridondante?
void OnStart()
{
  Print(DEAL_REASON_TP == ORDER_REASON_TP); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

Errore del compilatore con la conversione enum.

ENUM_DEAL_REASON Reason() { return(DEAL_REASON_CLIENT); }

void OnStart()
{
  ENUM_ORDER_REASON Reason1 = Reason();                    // 'Reason' - cannot convert enum
  ENUM_ORDER_REASON Reason2 = (ENUM_ORDER_REASON)Reason(); // OK
}

Stringa di ricerca:Oshibka 040.

 
fxsaber #:

Errore del compilatore con la conversione enum.

Stringa di ricerca:Oshibka 040.

Non sembra esserci alcun errore. Ogni enum è il proprio tipo. Uno può essere lanciato in un altro solo tramite una conversione esplicita. Il compilatore andrà in crash su quello implicito.

 
Stanislav Korotky #:

Non sembrano esserci errori. Ogni enum è il proprio tipo. Uno può essere lanciato in un altro solo tramite una conversione esplicita. Il compilatore giura sull'implicito.

Errore invece di Attenzione.

'Reason' - cannot convert enum
1 errors, 0 warnings            
 
fxsaber #:

Errore invece di Attenzione.

E allora?

 
Stanislav Korotky #:

E allora?

Bene, allora non compiliamo tale codice.

void OnStart()
{
  double d = 0;
  int i = d;
}
 
fxsaber #:

Errore invece di Attenzione.

Secondo la documentazione: enum si riferiscea un insieme limitato di dati. In questo senso, il confronto e l'assegnazione non sono fondamentalmente diversi: in entrambi i casi ci deve essere o Warning o Error. E il fatto che si possa confrontare e non si possa assegnare è una sciocchezza