È stato creato un buon thread con informazioni visualizzate - Ilthread dei suggerimenti. Si raccomanda vivamente di leggere questo piccolo thread a tutti i neofiti (per sapere), e agli utenti esperti (per rinfrescare le loro conoscenze).
----------------
Servizio freelance
Come depositare fondi sul tuo conto MQL5
Come procedere alla fase successiva
Come lasciare un feedback
Cos'è uno screenshot
Come allegare un file di una specifica preliminare dei requisiti/file di altri formati
Cose da fornire ad uno sviluppatore se il programma ha un errore
Come inserire un'immagine/codice/video/tabella in un testo
Come fare uno screenshot su un dispositivo mobile
Come estendere il periodo di esecuzione/costo dell'ordine
Non sparire per 5 giorni dopo aver impostato 3 giorni per l'esecuzioneCliente: Come creare un'immagine GIF, invece di un video, da incorporare in una chat s
----------------
Piattaforma
Come installare un Expert Advisor/indicatore
Dove si trova il diario della piattaforma/tester/ottimizzatore
Dove si trova l'ID MetaQuotes per conferire le notifiche push
Come fare uno screenshot di un errore tramite il menu grafico in tre clic
Dove abilitare e configurare le notifiche e-mail
Dove sono i file con cui lavora un EA/indicatore
Cosa sono i campi "descrizione" e "icona" e dove trovarli
Dove trovare il numero di build della piattaformaCome abilitare la finestra dei dati e vedere i valori dell'indicatore
Come abilitare la scala temporale accurata
Come salvare un modello di grafico
Come aggiungere un URL per lavorare tramite WebRequestDove trovare i file EX4/EX5
----------------
Consulente esperto
Cos'è il numero magico
Come funziona il trailing stopDove si trova il diario dell'EA
Perché un EA/indicatore è grigio nel Navigator
Qual è la differenza tra Netting e Hedging
Come installare un prodotto acquistato nel mercato
----------------
Tester
Come salvare/caricare un file di set
Dove trovare il giornale della piattaforma/tester/ottimizzatore
Come sono diverse le modalità di test?
Come lanciare e utilizzare i test visivi
Come scaricare la cronologia dei prezzi disponibili in MetaTrader 4
La versione beta della piattaforma MetaTrader 5 aggiornata sarà rilasciata il 14 ottobre 2018. Aggiorneremo il nostro server pubblico MetaQuotes-Demo situato all'indirizzo access.metatrader5.com:443. Invitiamo tutti i trader a partecipare ai test per valutare le caratteristiche aggiornate della piattaforma e per aiutare gli sviluppatori a correggere gli errori.
Per aggiornare la piattaforma MetaTrader 5 fino alla build 1910, connettiti al server access.metatrader5.com:443.
La build finale della nuova piattaforma MetaTrader 5 sarà rilasciata dopo il beta test pubblico.
L'aggiornamento sarà caratterizzato dai seguenti cambiamenti:
Terminale: Ora è possibile staccare i grafici dei simboli finanziari dalla finestra del terminale di trading.
Questa caratteristica è conveniente quando si utilizzano più monitor. Così, puoi impostare la finestra principale della piattaforma su un monitor per controllare lo stato del tuo conto, e spostare i grafici sul secondo schermo per osservare la situazione del mercato. Per staccare un grafico dal terminale, disattivate l'opzione Docked nel suo menu contestuale. Dopodiché, sposta il grafico sul monitor desiderato.
Una barra degli strumenti separata sui grafici staccati permette di applicare oggetti analitici e indicatori senza dover passare da un monitor all'altro. Usa il menu contestuale della barra degli strumenti per gestire l'insieme dei comandi disponibili o per nasconderla.
Terminale: Aggiornate completamente le chat integrate. Ora supportano dialoghi e canali di gruppo. Conduci discussioni private con un gruppo di persone in un ambiente unificato senza passare da una finestra di dialogo all'altra e crea canali secondo i tuoi interessi e lingue. Comunicate con i colleghi e gli amici di MQL5.community senza visitare il sito web.
Le chat di gruppo e i canali possono essere pubblici o privati. I loro creatori decidono se è possibile unirsi a loro liberamente o solo su invito. È anche possibile assegnare moderatori a canali e chat per un ulteriore controllo della comunicazione.
Terminale: Aggiunto il supporto per una maggiore precisione del volume per il trading di criptovalute. Ora il volume minimo possibile delle operazioni di trading è di 0,00000001 lotti. La profondità del mercato, il tempo e le vendite, così come altri elementi dell'interfaccia hanno ora la capacità di visualizzare volumi accurati fino a 8 cifre decimali.
Il volume minimo e la sua fase di cambiamento dipendono dalle impostazioni dello strumento finanziario dal lato del broker.
Terminale: Aggiunta la scheda degli articoli pubblicati su MQL5.community alla finestra del Toolbox. Oltre 600 materiali dettagliati sullo sviluppo di strategie di trading in MQL5 sono ora disponibili senza la necessità di lasciare il terminale. Nuovi articoli vengono pubblicati settimanalmente.
Terminale: Aggiunto il supporto per l'autenticazione estesa tramite certificati quando si lavora sotto Wine.
Terminale: Corretta la visualizzazione della profondità del mercato quando è limitata a un livello.
Terminale: Aggiunto il comando "Salva come immagine" alla barra degli strumenti standard. Ora è molto più facile fotografare i grafici e condividerli con la comunità.
Terminale: Corretta l'applicazione dello spostamento temporale durante l'importazione di barre e tick. In precedenza, lo spostamento non veniva applicato in alcuni casi.
MQL5: Aggiunto il supporto nativo per le librerie .NET con l'importazione di funzioni "intelligenti". Ora le librerie .NET possono essere usate senza scrivere wrapper speciali - MetaEditor lo fa da solo.
Per lavorare con le funzioni delle librerie .NET, basta importare la DLL stessa senza definire funzioni specifiche. MetaEditor importa automaticamente tutte le funzioni con cui è possibile lavorare:
Strutture semplici (POD, plain old data)
Strutture con tipi di dati semplici
Funzioni statiche pubbliche con parametri, in cui si usano solo tipi semplici e strutture POD o i loro array
Per chiamare funzioni dalla libreria, basta importarla:
#import "TestLib.dll"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
int x=6;
TestClass::Inc(x);
Print(x);
}
Il codice C# della funzione Inc della TestClass appare come segue:
Come risultato dell'esecuzione, lo script restituisce il valore 7.
MQL5: Aggiunto il supporto per gli specificatori inline, __inline e __forceinline durante l'analisi del codice. La presenza degli specificatori nel codice non causa errori e non influenza la compilazione. Al momento, questa caratteristica semplifica il trasferimento del codice С++ a MQL5. Trovate maggiori informazioni sugli specificatori in MSDN.
MQL5: Esecuzione significativamente ottimizzata dei programmi MQL5. In alcuni casi, il miglioramento delle prestazioni può raggiungere il 10%. Ricompilate i vostri programmi nella nuova versione di MetaEditor per renderli più veloci.
Sfortunatamente, i nuovi programmi non saranno compatibili con le versioni precedenti del terminale a causa di questa ulteriore ottimizzazione. I programmi compilati in MetaEditor versione 1910 e successive non possono essere lanciati in versioni di terminale inferiori alla 1880. I programmi compilati nelle versioni precedenti di MetaEditor possono essere lanciati nei nuovi terminali.
MQL5: Ottimizzate significativamente più funzioni MQL5.
MQL5: Aggiunte nuove proprietà per attaccare/togliere i grafici dalla finestra principale del terminale e gestire la loro posizione.
TERMINAL_SCREEN_LEFT - la coordinata sinistra dello schermo virtuale. Uno schermo virtuale è un rettangolo che copre tutti i monitor. Se il sistema ha due monitor ordinati da destra a sinistra, allora la coordinata sinistra dello schermo virtuale può essere sul confine di due monitor.
TERMINAL_SCREEN_TOP - la coordinata superiore dello schermo virtuale.
TERMINAL_SCREEN_WIDTH - larghezza del terminale.
TERMINAL_SCREEN_HEIGHT - altezza del terminale.
TERMINAL_LEFT - la coordinata sinistra del terminale rispetto allo schermo virtuale.
TERMINAL_TOP - la coordinata superiore del terminale rispetto allo schermo virtuale.
TERMINAL_RIGHT - la coordinata destra del terminale rispetto allo schermo virtuale.
TERMINAL_BOTTOM - la coordinata inferiore del terminale rispetto allo schermo virtuale.
MQL5: Aggiunto il campo volume_real alle strutture MqlTick e MqlBookInfo. È progettato per lavorare con volumi di maggiore precisione. Il valore volume_real ha una priorità maggiore di 'volume'. Il server userà questo valore, se specificato.
struct MqlTick { datetime time; // Last price update time double bid; // Current Bid price double ask; // Current Ask price double last; // Current price of the Last trade ulong volume; // Volume for the current Last price long time_msc; // Last price update time in milliseconds uint flags; // Tick flags double volume_real; // Volume for the current Last price with greater accuracy };
struct MqlBookInfo
{
ENUM_BOOK_TYPE type; // order type from the ENUM_BOOK_TYPE enumerationdouble price; // pricelong volume; // volumedouble volume_real; // volume with greater accuracy
};
MQL5: Requisiti attenuati per il casting delle enumerazioni. In caso di casting implicito, il compilatore sostituisce automaticamente il valore di un'enumerazione corretta e mostra un avviso.
Per il seguente codice:
enum Main
{
PRICE_CLOSE_,
PRICE_OPEN_
};
input Main Inp=PRICE_CLOSE;
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+voidOnStart()
{
}
Il compilatore visualizza l'avvertimento:
implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main' 'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
In precedenza, in questo caso veniva generato il seguente errore:
'PRICE_CLOSE' - cannot convert enum
Il compilatore continuerà a mostrare l'errore se le enumerazioni sono usate in modo non corretto nei parametri della funzione.
MQL5: Corretta la compilazione delle funzioni template. Ora, quando si usano funzioni template sovraccaricate, viene istanziato solo il sovraccarico necessario, piuttosto che tutti quelli esistenti.
class X { };
void f(int) { }
template<typename T>
void a(T*) { new T(2); } // previously, the compiler generated the error heretemplate<typename T>
void a() { f(0); }
voidOnInit() { a<X>(); }
MQL5: Ottimizzati alcuni casi di accesso alla cronologia dei tick tramite la funzione CopyTicks*.
Tester: Corretto il calcolo della precisione della valuta di deposito durante i test/ottimizzazione e la generazione dei relativi rapporti.
Tester: Ottimizzato e accelerato il funzionamento del tester delle strategie.
MetaEditor: Corretta la ricerca di parole intere. Ora durante la ricerca, il trattino basso viene contato come un carattere regolare, piuttosto che un delimitatore di parola.
Questo thread discute degli esempi di codice MQL5. Ci saranno esempi di come ottenere dati dagli indicatori, come programmare gli advisor ... in generale, qualsiasi domanda da principiante al linguaggio MQL5.
Se state iniziando a familiarizzare con il terminale MetaTrader 5, allora posso raccomandare i seguenti thread:
Why products are checked before they are published in the Market
Prima che qualsiasi prodotto venga pubblicato sul mercato, deve essere sottoposto a controlli preliminari obbligatori, poiché un piccolo errore nella logica dell'esperto o dell'indicatore può causare perdite sul conto di trading. Per questo motivo abbiamo sviluppato una serie di controlli di base per garantire il livello di qualità richiesto dei prodotti del Mercato.
Se gli errori vengono identificati dai moderatori del Mercato nel processo di controllo del tuo prodotto, dovrai correggerli tutti. Questo articolo considera gli errori più frequenti commessi dagli sviluppatori nei loro robot di trading e indicatori tecnici. Si consiglia inoltre di leggere i seguenti articoli:
L'aggiornamento della piattaforma MetaTrader 5 sarà rilasciato il 21 febbraio 2019. La nuova versione presenta le seguenti modifiche:
Terminale: Calendario economico integrato completamente rivisto.
Il Calendario Economico è la nostra soluzione proprietaria. In esso troverai oltre 600 notizie e indicatori finanziari relativi alle 13 maggiori economie globali: USA, Unione Europea, Giappone, Regno Unito, Canada, Australia, Cina, tra gli altri. I dati rilevanti vengono raccolti da fonti aperte in tempo reale.
La nuova versione presenta contenuti aggiornati e filtri avanzati degli eventi: per ora, priorità, valute e paesi.
È ora possibile accedere ai dati del calendario dai programmi MQL5. Vedi sotto per i dettagli.
Terminale: aggiunto un nuovo tipo di applicazioni MQL5 — Servizi. Questa nuova tipologia consente di creare feed di prezzo personalizzati per il terminale, ovvero di implementare la consegna dei prezzi da sistemi esterni in tempo reale, proprio come avviene sui server commerciali dei broker.
A differenza di Expert Advisor, indicatori e script, i servizi non sono collegati a un grafico specifico. Tali applicazioni vengono eseguite in background e vengono avviate automaticamente all'avvio del terminale (a meno che tale app non sia stata interrotta forzatamente).
I servizi possono essere gestiti da una nuova sezione all'interno della finestra del Navigatore:
Come creare servizi Per creare un modello di servizio, utilizzare l'opzione della procedura guidata MQL5 corrispondente. I servizi hanno un punto di ingresso OnStart , simile agli script. A questo punto, è possibile implementare un ciclo infinito di ricezione e gestione dei dati utilizzando le funzioni di rete .
Come avviare i servizi Per eseguire più Expert Advisor o copie di indicatori con parametri diversi, è necessario avviarli su grafici diversi. In questo caso vengono create diverse istanze del programma, che operano in modo indipendente. I servizi non sono collegati ai grafici, pertanto è stato implementato un meccanismo speciale per la creazione di istanze di servizio.
Seleziona un servizio dal Navigatore e fai clic su "Aggiungi servizio" nel suo menu contestuale. Si aprirà una finestra di dialogo standard del programma MQL5, in cui è possibile abilitare/disabilitare il trading e accedere alle impostazioni del segnale, nonché impostare vari parametri.
Un'istanza del servizio può essere avviata e arrestata utilizzando il menu dell'istanza appropriato. Per gestire tutte le istanze, utilizzare il menu di servizio.
Terminale: è stato aggiunto un programma di apprendimento.
La nuova funzionalità aiuterà i principianti a imparare a interagire con la piattaforma. Abbiamo aggiunto oltre 100 suggerimenti interattivi sulle principali funzionalità della piattaforma.
I suggerimenti vengono visualizzati senza interruzioni come barra di avanzamento sulla barra degli strumenti e quindi non distraggono l'utente.
I suggerimenti vengono visualizzati solo per le azioni che non hai mai eseguito nella piattaforma.
Tutti i suggerimenti includono collegamenti interattivi, tramite i quali è possibile navigare agli elementi dell'interfaccia pertinenti. Ad esempio, una finestra di dialogo di trading o un menu con il programma desiderato possono essere avviati direttamente dalla punta.
L'area piena della barra di avanzamento aumenterà ogni volta che esegui le azioni appropriate e prosegui l'allenamento.
Terminale: la cronologia del conto di trading può essere presentata come posizioni. La piattaforma raccoglie i dati sulle operazioni relative alla posizione (apertura, aumento di volume, chiusura parziale o totale) e raggruppa le informazioni in un unico record. In questo modo puoi accedere ai dettagli della posizione: tempo di apertura e chiusura, volume, prezzo e risultato. Questo efficiente modulo di presentazione è ora disponibile nei rapporti cronologici esportati in file.
Terminale: aggiunta nuova API che abilita la richiesta dei dati del terminale MetaTrader 5 tramite applicazioni che utilizzano il linguaggio R.
Abbiamo preparato uno speciale pacchetto MetaTrader. Contiene DLL per le interazioni tra R e il terminale MetaTrader 5, documentazione e file r ausiliari. Stiamo completando la registrazione del pacchetto nel repository CRAN , dopodiché sarà disponibile per il download e l'installazione.
Il pacchetto può essere installato utilizzando un comando speciale:
R CMD INSTALL --build MetaTrader
Sono disponibili i seguenti comandi relativi alla richiesta dei dati:
MT5Initialize inizializza e stabilisce la connessione con il terminale MetaTrader 5. Se necessario, il terminale viene avviato durante l'esecuzione del comando.
MT5Shutdown si de-inizializza e si disconnette da MetaTrader 5.
MT5Version ottiene la versione terminale MetaTrader 5.
MT5TerminalInfo ottiene lo stato ei parametri della connessione del terminale al server di un broker (numero di conto e indirizzo del server).
MT5WaitTerminal attende che il terminale MetaTrader 5 si connetta al server di un broker.
MT5CopyTicksFrom(symbol, from, count, flags) copia il numero di tick specificato a partire dalla data specificata. La data è specificata in millisecondi dal 01.01.1970.
MT5CopyTicksRange(symbol, from, to, flags) copia i tick entro il periodo specificato. Le date sono specificate in millisecondi dal 01.01.1970.
MT5CopyRatesFrom(symbol, timeframe, from, count) copia il numero specificato di barre di un minuto a partire dalla data specificata. La data è specificata in secondi dal 01.01.1970.
MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copia le barre di un minuto dalla posizione specificata rispetto all'ultima barra.
MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) copia le barre entro il periodo specificato. Le date sono specificate in secondi dal 01.01.1970.
L'elenco dei comandi supportati verrà ulteriormente ampliato.
Terminale: finestra di dialogo Chiudi per ottimizzata utilizzata per chiudere una posizione con una opposta. Ora, la finestra di dialogo non viene rallentata anche se hai un numero elevato di posizioni aperte.
Terminale: risolti errori di calcolo dei simboli sintetici , a causa dei quali i dati potevano essere occasionalmente saltati.
Terminale: quando un simbolo personalizzato viene eliminato, vengono eliminati anche i file che ne memorizzano la cronologia dei tick e delle barre. Ciò evita l'accumulo di dati inutilizzati sul disco rigido.
Terminale: corretta visualizzazione dei risultati di ricerca su schermi con DPI elevati.
CalendarValueHistoryByEvent — Ottiene la matrice di valori per il periodo di tempo specificato, in base all'identificatore di evento.
bool CalendarValueHistoryByEvent(
ulong event_id, // event ID
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // period beginning datedatetime datetime_to= 0 // period end date
);
CalendarValueHistory: ottiene l'array di valori per il periodo di tempo specificato per tutti gli eventi, filtrati per paese e/o valuta.
bool CalendarValueHistory(
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // beginning of perioddatetime datetime_to= 0 , // end of periodstring country_code=NULL, // country codestring currency=NULL // currency
);
CalendarValueLastByEvent — ottiene una matrice di valori dell'ultimo evento in base all'identificatore. Questa funzione abilita la richiesta dei valori che sono comparsi dalla richiesta precedente. Per questa operazione viene inoltre utilizzato il parametro in/out "change_id".
Ogni volta che il database del calendario cambia, la proprietà "change_id" (l'ultimo identificatore di modifica) viene aggiornata. Durante la richiesta di dati, specifichi "change_id" e il terminale restituisce gli eventi che sono apparsi dopo tale tempo, nonché il valore "change_id" corrente, che può essere utilizzato per la richiesta successiva. Durante la prima chiamata di funzione, specificare lo zero "change_id": la funzione non restituirà alcun evento, ma restituirà l'attuale "change_id" per ulteriori richieste.
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[] // array of values
);
CalendarValueLast — ottiene l'array degli ultimi valori per tutti gli eventi, filtrati per paese e/o valuta. Questa funzione abilita la richiesta dei valori che sono comparsi dalla richiesta precedente. Analogamente a CalendarValueLastByEvent, per la richiesta viene utilizzata la proprietà "change_id".
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[], // array of valuesstring country_code=NULL, // country codestring currency=NULL // currency
);
Nuove strutture
MqlCalendarCountry — descrizione del paese.
struct MqlCalendarCountry
{
ulong id; // country ID in ISO 3166-1string name; // text name of the countrystring code; // code name of the country in ISO 3166-1 alpha-2string currency; // country currency codestring currency_symbol; // country currency symbol/signstring url_name; // country name used in URL on mql5.com
};
MqlCalendarEvent — descrizione dell'evento.
struct MqlCalendarEvent
{
ulong id; // event ID
ENUM_CALENDAR_EVENT_TYPE type; // event type
ENUM_CALENDAR_EVENT_SECTOR sector; // sector to which the event belongs
ENUM_CALENDAR_EVENT_FREQUENCY frequency; // event release frequency
ENUM_CALENDAR_EVENT_TIMEMODE time_mode; // event release time modeulong country_id; // country ID
ENUM_CALENDAR_EVENT_UNIT unit; // unit for the event values
ENUM_CALENDAR_EVENT_IMPORTANCE importance; // event importance
ENUM_CALENDAR_EVENT_MULTIPLIER multiplier; // event importance multiplieruint digits; // number of decimal places in the event valuestring source_url; // source URLstring event_code; // event codestring name; // text name of the event in the terminal language
};
MqlCalendarValue — descrizione del valore dell'evento.
struct MqlCalendarValue
{
ulong id; // value IDulong event_id; // event IDdatetime time; // event date and timedatetime period; // period, for which the event is publishedint revision; // published indicator revision in relation to the reported periodlong actual_value; // current event valuelong prev_value; // previous event valuelong revised_prev_value; // revised previous event valuelong forecast_value; // forecast event value
ENUM_CALENDAR_EVENT_IMPACRT impact_type; // potential impact on the currency rate
};
Nuove enumerazioni
enum ENUM_CALENDAR_EVENT_FREQUENCY
{
CALENDAR_FREQUENCY_NONE = 0 , // not used
CALENDAR_FREQUENCY_WEEK = 1 , // weekly
CALENDAR_FREQUENCY_MONTH = 2 , // monthly
CALENDAR_FREQUENCY_QUARTER = 3 , // quarterly
CALENDAR_FREQUENCY_YEAR = 4 , // yearly
CALENDAR_FREQUENCY_DAY = 5 , // daily
};
enum ENUM_CALENDAR_EVENT_TYPE
{
CALENDAR_TYPE_EVENT = 0 , // event (meeting, speech, etc.)
CALENDAR_TYPE_INDICATOR = 1 , // indicator
CALENDAR_TYPE_HOLIDAY = 2 , // holiday
};
enum ENUM_CALENDAR_EVENT_SECTOR
{
CALENDAR_SECTOR_NONE = 0 , // no
CALENDAR_SECTOR_MARKET = 1 , // market
CALENDAR_SECTOR_GDP = 2 , // GDP
CALENDAR_SECTOR_JOBS = 3 , // jobs
CALENDAR_SECTOR_PRICES = 4 , // prices
CALENDAR_SECTOR_MONEY = 5 , // money
CALENDAR_SECTOR_TRADE = 6 , // trade
CALENDAR_SECTOR_GOVERNMENT = 7 , // government
CALENDAR_SECTOR_BUSINESS = 8 , // business
CALENDAR_SECTOR_CONSUMER = 9 , // consumer
CALENDAR_SECTOR_HOUSING = 10 , // housing
CALENDAR_SECTOR_TAXES = 11 , // taxes
CALENDAR_SECTOR_HOLIDAYS = 12 , // holidays
};
enum ENUM_CALENDAR_EVENT_IMPORTANCE
{
CALENDAR_IMPORTANCE_LOW = 0 , // no
CALENDAR_IMPORTANCE_NONE = 1 , // low
CALENDAR_IMPORTANCE_MODERATE = 2 , // moderate
CALENDAR_IMPORTANCE_HIGH = 3 , // high
};
enum ENUM_CALENDAR_EVENT_UNIT
{
CALENDAR_UNIT_NONE = 0 , // no
CALENDAR_UNIT_PERCENT = 1 , // percent
CALENDAR_UNIT_CURRENCY = 2 , // national currency
CALENDAR_UNIT_HOUR = 3 , // number of hours
CALENDAR_UNIT_JOB = 4 , // number of jobs
CALENDAR_UNIT_RIG = 5 , // number of rigs
CALENDAR_UNIT_USD = 6 , // US dollar
CALENDAR_UNIT_PEOPLE = 7 , // number of people
CALENDAR_UNIT_MORTGAGE = 8 , // number of mortgages
CALENDAR_UNIT_VOTE = 9 , // number of votes
CALENDAR_UNIT_BARREL = 10 , // number of barrels
CALENDAR_UNIT_CUBICFEET = 11 , // volume in cubic feet
CALENDAR_UNIT_POSITION = 12 , // number of job positions
CALENDAR_UNIT_BUILDING = 13// number of buildings
};
enum ENUM_CALENDAR_EVENT_MULTIPLIER
{
CALENDAR_MULTIPLIER_NONE = 0 , // no
CALENDAR_MULTIPLIER_THOUSANDS = 1 , // thousands
CALENDAR_MULTIPLIER_MILLIONS = 2 , // millions
CALENDAR_MULTIPLIER_BILLIONS = 3 , // billions
CALENDAR_MULTIPLIER_TRILLIONS = 4 , // trillions
};
enum ENUM_CALENDAR_EVENT_IMPACRT
{
CALENDAR_IMPACT_NA = 0 , // not available
CALENDAR_IMPACT_POSITIVE = 1 , // positive
CALENDAR_IMPACT_NEGATIVE = 2 , // negative
};
enum ENUM_CALENDAR_EVENT_TIMEMODE
{
CALENDAR_TIMEMODE_DATETIME = 0 , // the source publishes the exact time
CALENDAR_TIMEMODE_DATE = 1 , // the event takes the whole day
CALENDAR_TIMEMODE_NOTIME = 2 , // the source does not publish the event time
CALENDAR_TIMEMODE_TENTATIVE = 3 , // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
};
Nuovi codici di errore
ERR_CALENDAR_MORE_DATA = 5400 , // the array is small for the whole result (values which fit in the array were passed)
ERR_CALENDAR_TIMEOUT = 5401 , // timed out waiting for a response to the calendar data request
ERR_CALENDAR_NO_DATA = 5402 , // data not found
MQL5: correzioni e miglioramenti della velocità operativa relativi alla cronologia dei tick e delle barre.
MQL5: correzioni e miglioramenti significativi della velocità operativa relativi alle funzioni di modifica della cronologia tick e barre dei simboli di trading personalizzati, CustomTicks* e CustomRates* .
MQL5: Aggiunte funzioni di rete per la creazione di connessioni TCP a host remoti tramite socket di sistema:
SocketCreate crea un socket con flag specificati e restituisce il relativo handle
SocketClose chiude il socket
SocketConnect si connette al server, con controllo del timeout
SocketIsConnected controlla se il socket è attualmente connesso
SocketIsReadable ottiene il numero di byte che possono essere letti dal socket
SocketIsWritable controlla se la scrittura di dati su questo socket è possibile al momento attuale
SocketTimeouts imposta i timeout di ricezione e invio dei dati per l'oggetto socket di sistema
SocketRead legge i dati da un socket
SocketSend scrive i dati in un socket
SocketTlsHandshake avvia una connessione TLS (SSL) sicura con l'host specificato utilizzando il protocollo TLS Handshake
SocketTlsCertificate riceve le informazioni relative al certificato utilizzato per la connessione di rete sicura
SocketTlsRead legge i dati da una connessione TLS sicura
SocketTlsReadAvailable legge tutti i dati disponibili da una connessione TLS sicura
SocketTlsSend invia i dati utilizzando una connessione TLS sicura
L'indirizzo dell'host, al quale viene stabilita la connessione tramite le funzioni di rete, deve essere aggiunto esplicitamente all'elenco degli indirizzi consentiti nelle impostazioni del terminale.
Sono stati aggiunti nuovi codici di errore per le operazioni con le funzioni di rete:
ERR_NETSOCKET_INVALIDHANDLE (5270): handle socket non valido passato alla funzione
ArrayRemove rimuove da una matrice il numero specificato di elementi che iniziano con l'indice specificato.
bool ArrayRemove(
void & array[], // array of any typeuint start, // the index to start removaluint count=WHOLE_ARRAY // number of elements
);
ArrayInsert inserisce in una matrice ricevente il numero specificato di elementi dalla matrice di origine, a partire dall'indice specificato.
bool ArrayInsert(
void & dst_array[], // receiver arrayconstvoid & src_array[], // source arrayuint dst_start, // index in the receiver array where to insertuint src_start= 0 , // index in the source array to start copyinguint count=WHOLE_ARRAY // number of inserted elements
);
ArrayReverse inverte in una matrice il numero specificato di elementi che iniziano con l'indice specificato.
bool ArrayReverse(
void & array[], // array of any typeuint start= 0 , // index to start reversinguint count=WHOLE_ARRAY // number of elements
);
MQL5: È stato aggiunto il nuovo parametro "uint count" nelle funzioni CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd e CustomTicksReplace . Consente di specificare il numero di elementi dell'array passato, che verranno utilizzati per queste funzioni. Il valore WHOLE_ARRAY viene utilizzato per il parametro per impostazione predefinita. Significa che verrà utilizzato l'intero array.
MQL5: Aggiunta la funzione CustomBookAdd per passare lo stato della Profondità di Mercato per un simbolo personalizzato. La funzione permette di trasmettere la Profondità di Mercato come se i prezzi arrivassero dal server di un broker.
int CustomBookAdd(
conststring symbol, // symbol nameconst MqlBookInfo& books[] // an array with the DOM elements descriptionsuint count=WHOLE_ARRAY // number of elements to be used
);
MQL5: Aggiunto sovraccarico della funzione CustomSymbolCreate . Ciò consente la creazione di un simbolo di trading personalizzato basato su uno esistente. Dopo la creazione, qualsiasi proprietà del simbolo può essere modificata utilizzando le funzioni corrispondenti.
boolCustomSymbolCreate (
conststring symbol_name, // custom symbol nameconststring symbol_path= "" , // name of the group in which the symbol will be createdconststring symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
);
Il nome del simbolo, dal quale devono essere copiate le proprietà del simbolo personalizzato, è specificato nel parametro "symbol_origin".
La funzione StringToTime che converte la stringa con data/ora in un valore datetime è stata aggiornata. Ora supporta i seguenti formati di data:
aaaa.mm.gg [hh:mi]
aaaa.mm.gg [hh:mi:ss]
aaaammgg [hh:mi:ss]
aaaammgg [hhmiss]
aaaa/mm/gg [hh:mi:ss]
aaaa-mm-gg [hh:mi:ss]
MQL5: Nuova proprietà TERMINAL_VPS nell'enumerazione ENUM_TERMINAL_INFO_INTEGER ; mostra che il terminale è in esecuzione sul server di hosting virtuale MetaTrader (MetaTrader VPS). Se un'applicazione è in esecuzione su un server di hosting, è possibile disabilitare tutte le sue funzioni visive, poiché il server virtuale non dispone di un'interfaccia utente grafica.
MQL5: la nuova proprietà SYMBOL_EXIST nell'enumerazione ENUM_SYMBOL_INFO_INTEGER significa che il simbolo con questo nome esiste.
MQL5: correzione della digitazione quando si utilizzano le pre-dichiarazioni delle funzioni modello.
MQL5: Aggiunta reinizializzazione degli indicatori quando si cambia un conto di trading.
MQL5: corretti errori nell'operazione di libreria standard.
Tester: aggiunta della funzione TesterStop : arresto anticipato di routine di un Expert Advisor su un agente di test. Ora puoi interrompere forzatamente il test dopo aver raggiunto il numero specificato di operazioni in perdita, un livello di prelievo preimpostato o qualsiasi altro criterio.
Il test completato utilizzando questa funzione è considerato riuscito. Dopo la chiamata di funzione, la cronologia di negoziazione ottenuta durante il test e tutte le statistiche commerciali vengono trasmesse al terminale.
Tester: capacità disabilitata di testare e ottimizzare Expert Advisor tramite MQL5 Cloud Network in modalità tick reale. Questa modalità può essere utilizzata solo su agenti locali e farm di rete locali.
Tester: lavoro migliorato con gli indicatori durante i test visivi. Ora il grafico dei prezzi e le linee degli indicatori vengono tracciati in modo sincrono, anche per la massima velocità di visualizzazione.
Tester: test e ottimizzazione ottimizzati e notevolmente accelerati.
Tester: corretto il debug degli indicatori sui dati storici. Ora è possibile eseguire correttamente il debug delle funzioni dell'indicatore OnInit e OnDeinit.
Tester: è stato implementato un accesso più rapido ai dati storici durante il test di Expert Advisor multivaluta.
Tester: risolto il blocco occasionale del tester visivo durante il debug sui dati storici.
Tester: implementato un avvio più rapido dei passaggi di ottimizzazione durante l'elaborazione di un pacchetto di attività da parte di un agente.
Tester: modificata la politica di distribuzione dei pacchetti di attività agli agenti di test. La dimensione del pacchetto è stata aumentata e quindi il consumo di risorse per le operazioni di rete è stato notevolmente ridotto.
Tester: comportamento modificato delle opzioni che consentono l'uso di agenti locali, di rete e cloud. Ora, quando si disattivano le opzioni, gli agenti completano l'elaborazione delle attività ricevute, mentre non vengono più assegnate nuove attività. Nelle versioni precedenti, il comportamento era simile al comando "Disabilita", che interrompeva immediatamente il funzionamento dell'agente.
MetaEditor: Aggiunto supporto per caratteri non ANSI nel debugger. Ora le espressioni vengono visualizzate correttamente anche se il nome della variabile è specificato in cirillico.
MetaEditor: corretta visualizzazione dei risultati di ricerca su schermi con DPI elevati.
Aggiunta la traduzione dell'interfaccia utente in croato.
La documentazione è stata aggiornata.
L'aggiornamento sarà disponibile tramite il sistema LiveUpdate.
Salve, devo rimuovere la mia build 1940 prima di installare questa 2005?
Devo rimuovere la mia build 1940 prima di installare questa 2005? Ho provato senza disinstallare e dopo l'installazione è la stessa 1940 di prima. Inoltre, non riesco ad aggiornare dall'anno scorso, qualche motivo? Devo rimuovere tutto e riprovare?
In arrivo -
Nuovo sistema di comunicazione un analogo di Telegram - leggi questo post.
============
Ichimoku
L'inizio
Dopo
============
È stato creato un buon thread con informazioni visualizzate - Ilthread dei suggerimenti.
Si raccomanda vivamente di leggere questo piccolo thread a tutti i neofiti (per sapere), e agli utenti esperti (per rinfrescare le loro conoscenze).
----------------
Servizio freelance
----------------
Piattaforma
----------------
Consulente esperto
----------------
Tester
Questo è un aggiornamento molto importante e molto interessante - per favore leggetelo -
Forum sul trading, sistemi di trading automatico e strategie di trading di prova
MetaTrader 5 Piattaforma Beta Build 1910: Drag-and-drop non vincolato di grafici e librerie .Net in MQL5
MetaQuotes Software Corp., 2018.10.12 19:43
La versione beta della piattaforma MetaTrader 5 aggiornata sarà rilasciata il 14 ottobre 2018. Aggiorneremo il nostro server pubblico MetaQuotes-Demo situato all'indirizzo access.metatrader5.com:443. Invitiamo tutti i trader a partecipare ai test per valutare le caratteristiche aggiornate della piattaforma e per aiutare gli sviluppatori a correggere gli errori.
La build finale della nuova piattaforma MetaTrader 5 sarà rilasciata dopo il beta test pubblico.
L'aggiornamento sarà caratterizzato dai seguenti cambiamenti:
Questa caratteristica è conveniente quando si utilizzano più monitor. Così, puoi impostare la finestra principale della piattaforma su un monitor per controllare lo stato del tuo conto, e spostare i grafici sul secondo schermo per osservare la situazione del mercato. Per staccare un grafico dal terminale, disattivate l'opzione Docked nel suo menu contestuale. Dopodiché, sposta il grafico sul monitor desiderato.

Una barra degli strumenti separata sui grafici staccati permette di applicare oggetti analitici e indicatori senza dover passare da un monitor all'altro. Usa il menu contestuale della barra degli strumenti per gestire l'insieme dei comandi disponibili o per nasconderla.Le chat di gruppo e i canali possono essere pubblici o privati. I loro creatori decidono se è possibile unirsi a loro liberamente o solo su invito. È anche possibile assegnare moderatori a canali e chat per un ulteriore controllo della comunicazione.
Il volume minimo e la sua fase di cambiamento dipendono dalle impostazioni dello strumento finanziario dal lato del broker.
Per lavorare con le funzioni delle librerie .NET, basta importare la DLL stessa senza definire funzioni specifiche. MetaEditor importa automaticamente tutte le funzioni con cui è possibile lavorare:
Per chiamare funzioni dalla libreria, basta importarla:
Il codice C# della funzione Inc della TestClass appare come segue:
Come risultato dell'esecuzione, lo script restituisce il valore 7.
Trovate maggiori informazioni sugli specificatori in MSDN.
Aggiunte le seguenti proprietà all'enumerazione ENUM_CHART_PROPERTY_INTEGER:
Aggiunte le seguenti funzioni all'enumerazione ENUM_TERMINAL_INFO_INTEGER:
struct MqlTick
{
datetime time; // Last price update time
double bid; // Current Bid price
double ask; // Current Ask price
double last; // Current price of the Last trade
ulong volume; // Volume for the current Last price
long time_msc; // Last price update time in milliseconds
uint flags; // Tick flags
double volume_real; // Volume for the current Last price with greater accuracy
};
Usare la funzione SymbolInfoDouble per ottenere queste proprietà.
Per il seguente codice:
Il compilatore visualizza l'avvertimento:
'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
È stato iniziato un buon thread -Come iniziare con MQL5
Forum sul trading, sistemi di trading automatico e strategie di trading di prova
Come iniziare con MQL5
Vladimir Karputov, 2018.12.24 20:34
Questo thread discute degli esempi di codice MQL5. Ci saranno esempi di come ottenere dati dagli indicatori, come programmare gli advisor ... in generale, qualsiasi domanda da principiante al linguaggio MQL5.
Se state iniziando a familiarizzare con il terminale MetaTrader 5, allora posso raccomandare i seguenti thread:
Come iniziare con Metatrader 5
Da dove comincio?
Usa i consigli nel servizio Freelance!
C'è un articolo che ogni venditore sul mercato dovrebbe leggere: si tratta della convalida dei prodotti del mercato -
----------------
I controlli che un robot di trading deve superare prima della pubblicazione sul Mercato
Prima che qualsiasi prodotto venga pubblicato sul mercato, deve essere sottoposto a controlli preliminari obbligatori, poiché un piccolo errore nella logica dell'esperto o dell'indicatore può causare perdite sul conto di trading. Per questo motivo abbiamo sviluppato una serie di controlli di base per garantire il livello di qualità richiesto dei prodotti del Mercato.
Se gli errori vengono identificati dai moderatori del Mercato nel processo di controllo del tuo prodotto, dovrai correggerli tutti. Questo articolo considera gli errori più frequenti commessi dagli sviluppatori nei loro robot di trading e indicatori tecnici. Si consiglia inoltre di leggere i seguenti articoli:
Grazie amico...
Molto utile, grande sforzo...
Forum sul trading, sui sistemi di trading automatizzati e sul test delle strategie di trading
Nuova piattaforma MetaTrader 5 build 2005: calendario economico, applicazioni MQL5 come servizi e API del linguaggio R
MetaQuotes Software Corp. , 20.02.2019 17:20
L'aggiornamento della piattaforma MetaTrader 5 sarà rilasciato il 21 febbraio 2019. La nuova versione presenta le seguenti modifiche:
- Terminale: Calendario economico integrato completamente rivisto.

- Terminale: aggiunto un nuovo tipo di applicazioni MQL5 — Servizi. Questa nuova tipologia consente di creare feed di prezzo personalizzati per il terminale, ovvero di implementare la consegna dei prezzi da sistemi esterni in tempo reale, proprio come avviene sui server commerciali dei broker.

- Terminale: è stato aggiunto un programma di apprendimento.

- Terminale: la cronologia del conto di trading può essere presentata come posizioni. La piattaforma raccoglie i dati sulle operazioni relative alla posizione (apertura, aumento di volume, chiusura parziale o totale) e raggruppa le informazioni in un unico record. In questo modo puoi accedere ai dettagli della posizione: tempo di apertura e chiusura, volume, prezzo e risultato. Questo efficiente modulo di presentazione è ora disponibile nei rapporti cronologici esportati in file.

- Terminale: aggiunta nuova API che abilita la richiesta dei dati del terminale MetaTrader 5 tramite applicazioni che utilizzano il linguaggio R.

R CMD INSTALL --build MetaTrader
- MT5Initialize inizializza e stabilisce la connessione con il terminale MetaTrader 5. Se necessario, il terminale viene avviato durante l'esecuzione del comando.
- MT5Shutdown si de-inizializza e si disconnette da MetaTrader 5.
- MT5Version ottiene la versione terminale MetaTrader 5.
- MT5TerminalInfo ottiene lo stato ei parametri della connessione del terminale al server di un broker (numero di conto e indirizzo del server).
- MT5WaitTerminal attende che il terminale MetaTrader 5 si connetta al server di un broker.
- MT5CopyTicksFrom(symbol, from, count, flags) copia il numero di tick specificato a partire dalla data specificata. La data è specificata in millisecondi dal 01.01.1970.
- MT5CopyTicksRange(symbol, from, to, flags) copia i tick entro il periodo specificato. Le date sono specificate in millisecondi dal 01.01.1970.
- MT5CopyRatesFrom(symbol, timeframe, from, count) copia il numero specificato di barre di un minuto a partire dalla data specificata. La data è specificata in secondi dal 01.01.1970.
- MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copia le barre di un minuto dalla posizione specificata rispetto all'ultima barra.
- MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) copia le barre entro il periodo specificato. Le date sono specificate in secondi dal 01.01.1970.
- Terminale: finestra di dialogo Chiudi per ottimizzata utilizzata per chiudere una posizione con una opposta. Ora, la finestra di dialogo non viene rallentata anche se hai un numero elevato di posizioni aperte.
- Terminale: risolti errori di calcolo dei simboli sintetici , a causa dei quali i dati potevano essere occasionalmente saltati.
- Terminale: quando un simbolo personalizzato viene eliminato, vengono eliminati anche i file che ne memorizzano la cronologia dei tick e delle barre. Ciò evita l'accumulo di dati inutilizzati sul disco rigido.
- Terminale: corretta visualizzazione dei risultati di ricerca su schermi con DPI elevati.
- MQL5: Accesso implementato ai dati del calendario economico dai programmi MQL5.
- MQL5: correzioni e miglioramenti della velocità operativa relativi alla cronologia dei tick e delle barre.
- MQL5: correzioni e miglioramenti significativi della velocità operativa relativi alle funzioni di modifica della cronologia tick e barre dei simboli di trading personalizzati, CustomTicks* e CustomRates* .
- MQL5: Nuove funzioni di conversione dei dati.
- Aggiunta la funzione MathSwap per modificare l'ordine dei byte nei valori ushort, uint e ulong.
- MQL5: Aggiunte funzioni di rete per la creazione di connessioni TCP a host remoti tramite socket di sistema:
- SocketCreate crea un socket con flag specificati e restituisce il relativo handle
- SocketClose chiude il socket
- SocketConnect si connette al server, con controllo del timeout
- SocketIsConnected controlla se il socket è attualmente connesso
- SocketIsReadable ottiene il numero di byte che possono essere letti dal socket
- SocketIsWritable controlla se la scrittura di dati su questo socket è possibile al momento attuale
- SocketTimeouts imposta i timeout di ricezione e invio dei dati per l'oggetto socket di sistema
- SocketRead legge i dati da un socket
- SocketSend scrive i dati in un socket
- SocketTlsHandshake avvia una connessione TLS (SSL) sicura con l'host specificato utilizzando il protocollo TLS Handshake
- SocketTlsCertificate riceve le informazioni relative al certificato utilizzato per la connessione di rete sicura
- SocketTlsRead legge i dati da una connessione TLS sicura
- SocketTlsReadAvailable legge tutti i dati disponibili da una connessione TLS sicura
- SocketTlsSend invia i dati utilizzando una connessione TLS sicura
L'indirizzo dell'host, al quale viene stabilita la connessione tramite le funzioni di rete, deve essere aggiunto esplicitamente all'elenco degli indirizzi consentiti nelle impostazioni del terminale.
- ERR_NETSOCKET_INVALIDHANDLE (5270): handle socket non valido passato alla funzione
- ERR_NETSOCKET_TOO_MANY_OPENED (5271): troppi socket aperti (massimo 128)
- ERR_NETSOCKET_CANNOT_CONNECT (5272): errore durante la connessione all'host remoto
- ERR_NETSOCKET_IO_ERROR (5273): errore durante l'invio/ricezione dei dati dal socket
- ERR_NETSOCKET_HANDSHAKE_FAILED (5274): errore di creazione della connessione protetta (TLS Handshake)
- ERR_NETSOCKET_NO_CERTIFICATE (5275) — nessun dato sul certificato utilizzato per la connessione sicura
- MQL5: Aggiunte nuove funzioni per le operazioni sulle stringhe :
- MQL5: Aggiunta una nuova funzione per le operazioni sugli array :
- MQL5: È stato aggiunto il nuovo parametro "uint count" nelle funzioni CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd e CustomTicksReplace . Consente di specificare il numero di elementi dell'array passato, che verranno utilizzati per queste funzioni. Il valore WHOLE_ARRAY viene utilizzato per il parametro per impostazione predefinita. Significa che verrà utilizzato l'intero array.
- MQL5: Aggiunta la funzione CustomBookAdd per passare lo stato della Profondità di Mercato per un simbolo personalizzato. La funzione permette di trasmettere la Profondità di Mercato come se i prezzi arrivassero dal server di un broker.
- MQL5: Aggiunto sovraccarico della funzione CustomSymbolCreate . Ciò consente la creazione di un simbolo di trading personalizzato basato su uno esistente. Dopo la creazione, qualsiasi proprietà del simbolo può essere modificata utilizzando le funzioni corrispondenti.
- La funzione StringToTime che converte la stringa con data/ora in un valore datetime è stata aggiornata. Ora supporta i seguenti formati di data:
- aaaa.mm.gg [hh:mi]
- aaaa.mm.gg [hh:mi:ss]
- aaaammgg [hh:mi:ss]
- aaaammgg [hhmiss]
- aaaa/mm/gg [hh:mi:ss]
- aaaa-mm-gg [hh:mi:ss]
- MQL5: Nuova proprietà TERMINAL_VPS nell'enumerazione ENUM_TERMINAL_INFO_INTEGER ; mostra che il terminale è in esecuzione sul server di hosting virtuale MetaTrader (MetaTrader VPS). Se un'applicazione è in esecuzione su un server di hosting, è possibile disabilitare tutte le sue funzioni visive, poiché il server virtuale non dispone di un'interfaccia utente grafica.
- MQL5: la nuova proprietà SYMBOL_EXIST nell'enumerazione ENUM_SYMBOL_INFO_INTEGER significa che il simbolo con questo nome esiste.
- MQL5: correzione della digitazione quando si utilizzano le pre-dichiarazioni delle funzioni modello.
- MQL5: Aggiunta reinizializzazione degli indicatori quando si cambia un conto di trading.
- MQL5: funzione StringSplit ottimizzata.
- MQL5: corretti errori nell'operazione di libreria standard.
- Tester: aggiunta della funzione TesterStop : arresto anticipato di routine di un Expert Advisor su un agente di test. Ora puoi interrompere forzatamente il test dopo aver raggiunto il numero specificato di operazioni in perdita, un livello di prelievo preimpostato o qualsiasi altro criterio.
- Tester: capacità disabilitata di testare e ottimizzare Expert Advisor tramite MQL5 Cloud Network in modalità tick reale. Questa modalità può essere utilizzata solo su agenti locali e farm di rete locali.
- Tester: lavoro migliorato con gli indicatori durante i test visivi. Ora il grafico dei prezzi e le linee degli indicatori vengono tracciati in modo sincrono, anche per la massima velocità di visualizzazione.
- Tester: test e ottimizzazione ottimizzati e notevolmente accelerati.
- Tester: corretto il debug degli indicatori sui dati storici. Ora è possibile eseguire correttamente il debug delle funzioni dell'indicatore OnInit e OnDeinit.
- Tester: è stato implementato un accesso più rapido ai dati storici durante il test di Expert Advisor multivaluta.
- Tester: risolto il blocco occasionale del tester visivo durante il debug sui dati storici.
- Tester: implementato un avvio più rapido dei passaggi di ottimizzazione durante l'elaborazione di un pacchetto di attività da parte di un agente.
- Tester: modificata la politica di distribuzione dei pacchetti di attività agli agenti di test. La dimensione del pacchetto è stata aumentata e quindi il consumo di risorse per le operazioni di rete è stato notevolmente ridotto.
- Tester: comportamento modificato delle opzioni che consentono l'uso di agenti locali, di rete e cloud. Ora, quando si disattivano le opzioni, gli agenti completano l'elaborazione delle attività ricevute, mentre non vengono più assegnate nuove attività. Nelle versioni precedenti, il comportamento era simile al comando "Disabilita", che interrompeva immediatamente il funzionamento dell'agente.

- MetaEditor: Aggiunto supporto per caratteri non ANSI nel debugger. Ora le espressioni vengono visualizzate correttamente anche se il nome della variabile è specificato in cirillico.
- MetaEditor: corretta visualizzazione dei risultati di ricerca su schermi con DPI elevati.
- Aggiunta la traduzione dell'interfaccia utente in croato.
- La documentazione è stata aggiornata.
L'aggiornamento sarà disponibile tramite il sistema LiveUpdate.Il Calendario Economico è la nostra soluzione proprietaria. In esso troverai oltre 600 notizie e indicatori finanziari relativi alle 13 maggiori economie globali: USA, Unione Europea, Giappone, Regno Unito, Canada, Australia, Cina, tra gli altri. I dati rilevanti vengono raccolti da fonti aperte in tempo reale.
La nuova versione presenta contenuti aggiornati e filtri avanzati degli eventi: per ora, priorità, valute e paesi.
È ora possibile accedere ai dati del calendario dai programmi MQL5. Vedi sotto per i dettagli.
A differenza di Expert Advisor, indicatori e script, i servizi non sono collegati a un grafico specifico. Tali applicazioni vengono eseguite in background e vengono avviate automaticamente all'avvio del terminale (a meno che tale app non sia stata interrotta forzatamente).
I servizi possono essere gestiti da una nuova sezione all'interno della finestra del Navigatore:
Come creare servizi
Per creare un modello di servizio, utilizzare l'opzione della procedura guidata MQL5 corrispondente. I servizi hanno un punto di ingresso OnStart , simile agli script. A questo punto, è possibile implementare un ciclo infinito di ricezione e gestione dei dati utilizzando le funzioni di rete .
Come avviare i servizi
Per eseguire più Expert Advisor o copie di indicatori con parametri diversi, è necessario avviarli su grafici diversi. In questo caso vengono create diverse istanze del programma, che operano in modo indipendente. I servizi non sono collegati ai grafici, pertanto è stato implementato un meccanismo speciale per la creazione di istanze di servizio.
Seleziona un servizio dal Navigatore e fai clic su "Aggiungi servizio" nel suo menu contestuale. Si aprirà una finestra di dialogo standard del programma MQL5, in cui è possibile abilitare/disabilitare il trading e accedere alle impostazioni del segnale, nonché impostare vari parametri.

Un'istanza del servizio può essere avviata e arrestata utilizzando il menu dell'istanza appropriato. Per gestire tutte le istanze, utilizzare il menu di servizio.La nuova funzionalità aiuterà i principianti a imparare a interagire con la piattaforma. Abbiamo aggiunto oltre 100 suggerimenti interattivi sulle principali funzionalità della piattaforma.
- I suggerimenti vengono visualizzati senza interruzioni come barra di avanzamento sulla barra degli strumenti e quindi non distraggono l'utente.
- I suggerimenti vengono visualizzati solo per le azioni che non hai mai eseguito nella piattaforma.
- Tutti i suggerimenti includono collegamenti interattivi, tramite i quali è possibile navigare agli elementi dell'interfaccia pertinenti. Ad esempio, una finestra di dialogo di trading o un menu con il programma desiderato possono essere avviati direttamente dalla punta.
L'area piena della barra di avanzamento aumenterà ogni volta che esegui le azioni appropriate e prosegui l'allenamento.Abbiamo preparato uno speciale pacchetto MetaTrader. Contiene DLL per le interazioni tra R e il terminale MetaTrader 5, documentazione e file r ausiliari. Stiamo completando la registrazione del pacchetto nel repository CRAN , dopodiché sarà disponibile per il download e l'installazione.
Il pacchetto può essere installato utilizzando un comando speciale:
Sono disponibili i seguenti comandi relativi alla richiesta dei dati:
L'elenco dei comandi supportati verrà ulteriormente ampliato.
Nuove funzioni
CalendarCountryById: ottiene la descrizione del paese in base all'identificatore.
CalendarEventById — ottiene la descrizione dell'evento in base all'identificatore.
CalendarValueById — ottiene la descrizione del valore dell'evento in base all'identificatore.
CalendarEventByCountry: ottiene l'array di eventi disponibili per il paese.
CalendarEventByCurrency: ottiene l'array di eventi disponibili per la valuta interessata.
CalendarValueHistoryByEvent — Ottiene la matrice di valori per il periodo di tempo specificato, in base all'identificatore di evento.
CalendarValueHistory: ottiene l'array di valori per il periodo di tempo specificato per tutti gli eventi, filtrati per paese e/o valuta.
CalendarValueLastByEvent — ottiene una matrice di valori dell'ultimo evento in base all'identificatore. Questa funzione abilita la richiesta dei valori che sono comparsi dalla richiesta precedente. Per questa operazione viene inoltre utilizzato il parametro in/out "change_id".
Ogni volta che il database del calendario cambia, la proprietà "change_id" (l'ultimo identificatore di modifica) viene aggiornata. Durante la richiesta di dati, specifichi "change_id" e il terminale restituisce gli eventi che sono apparsi dopo tale tempo, nonché il valore "change_id" corrente, che può essere utilizzato per la richiesta successiva. Durante la prima chiamata di funzione, specificare lo zero "change_id": la funzione non restituirà alcun evento, ma restituirà l'attuale "change_id" per ulteriori richieste.
CalendarValueLast — ottiene l'array degli ultimi valori per tutti gli eventi, filtrati per paese e/o valuta. Questa funzione abilita la richiesta dei valori che sono comparsi dalla richiesta precedente. Analogamente a CalendarValueLastByEvent, per la richiesta viene utilizzata la proprietà "change_id".
Nuove strutture
MqlCalendarCountry — descrizione del paese.
MqlCalendarEvent — descrizione dell'evento.
MqlCalendarValue — descrizione del valore dell'evento.
Nuove enumerazioni
Nuovi codici di errore
CharArrayToStruct copia una matrice uchar in una struttura POD.
StructToCharArray copia una struttura POD in una matrice uchar.
Sono stati aggiunti nuovi codici di errore per le operazioni con le funzioni di rete:
StringReserve riserva per una stringa il buffer di memoria della dimensione specificata.
StringSetLength imposta la lunghezza della stringa specificata in caratteri.
ArrayRemove rimuove da una matrice il numero specificato di elementi che iniziano con l'indice specificato.
ArrayInsert inserisce in una matrice ricevente il numero specificato di elementi dalla matrice di origine, a partire dall'indice specificato.
ArrayReverse inverte in una matrice il numero specificato di elementi che iniziano con l'indice specificato.
Il nome del simbolo, dal quale devono essere copiate le proprietà del simbolo personalizzato, è specificato nel parametro "symbol_origin".
Il test completato utilizzando questa funzione è considerato riuscito. Dopo la chiamata di funzione, la cronologia di negoziazione ottenuta durante il test e tutte le statistiche commerciali vengono trasmesse al terminale.
Salve, devo rimuovere la mia build 1940 prima di installare questa 2005?
Devo rimuovere la mia build 1940 prima di installare questa 2005?
Ho provato senza disinstallare e dopo l'installazione è la stessa 1940 di prima.
Inoltre, non riesco ad aggiornare dall'anno scorso, qualche motivo?
Devo rimuovere tutto e riprovare?
Grazie...