Non ho familiarità con la MT3 ma presumo che il codice che funzionava sulla MT3 funzionasse anche sulla MT4 . . . questo è il problema della MT4 --> MT5 ed è il motivo per cui la situazione è diversa.
La maggior parte degli utenti MT4 non sa codificare, se i loro indicatori preferiti su MT4 non esistono su MT5 allora non useranno MT5.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
La compatibilità con gli attuali indicatori, script e EAs .ex4 non riguarda solo il linguaggio, ma anche il terminale e le modifiche al suo funzionamento. Per esempio, le modifiche allo Strategy Tester potrebbero rompere gli EA progettati per essere utilizzati principalmente nello Strategy Tester, mentre lo stesso EA funziona bene su un grafico live, ma non potrebbe più svolgere la sua funzione primaria.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
A me sembra che si suppone che sia retrocompatibile a livello mq4, gli indicatori personalizzati inclusi sono le versioni originali mql4 con un cambiamento del nome della funzione init() che compilano nel nuovo compilatore e girano sul nuovo terminale, questo deve significare che possiamo ancora codificare indicatori usando IndicatorCounted() se vogliamo ...
init() ora si chiama int OnInit(void) e restituisce(INIT_SUCCEED);
A me sembra che si supponga che sia compatibile all'indietro a livello di mq4, gli indicatori personalizzati inclusi sono le versioni originali di mql4 con un cambiamento del nome della funzione init() che compilano nel nuovo compilatore ed eseguono sul nuovo terminale, questo deve significare che possiamo ancora codificare gli indicatori usando IndicatorCounted() se vogliamo ...
init() ora si chiama int OnInit(void) e restituisce(INIT_SUCCEED);
Mi dispiace ma non sarà retrocompatibile a livello di mq4, vedi l'annuncio della prima beta.
Differenze dalla vecchia versione di MQL4:
Cambiata la priorità delle operazioni logiche AND/OR. Ora, tutto è simile allo standard C/C++
Introdotta la valutazione abbreviata delle espressioni logiche. Ora, quando un'espressione logica viene valutata prima di raggiungere la sua fine, le rimanenti espressioni successive non vengono valutate, come in C/C++.
Solo i valori interi sono ora usati nell'operatore switch. Prima si sarebbero potuti usare valori reali
Il simbolo del punto non può più essere usato nei nomi delle variabili. Inoltre, i simboli '@', '$' e '?' non possono essere usati nei nomi delle variabili
Requisiti più rigorosi per la funzione di avvio. Prima i parametri potevano essere impostati nella funzione di avvio. Ora, tutti i punti di ingresso init, start, deinit, OnInit, OnStart, OnTick, OnTimer e altri devono corrispondere esattamente alle loro firme
A causa dell'espansione delle parole chiave, nomi come short, long, float, const, virtual, input, delete, new, do, char non possono essere usati ora
Ora, le funzioni dll importate non possono accettare array di stringhe MQL come parametro, come in MQL5
Introdotti i nomi predefiniti delle variabili _Period, _Symbol, _LastError, _CriticalError, _StopFlag, _Point, _Digits, _UninitReason, _RandomSeed che possono entrare in conflitto con semplici variabili dichiarate con gli stessi nomi nei file sorgente esistenti
il tipo datetime è diventato a 8 byte, come in MQL5.
Le differenze non sono critiche e possono essere facilmente corrette nel codice. In cambio, si accede a molteplici caratteristiche di MQL5, una migliore velocità di esecuzione e un controllo di qualità molto più rigoroso.
Non è un cambiamento pesante, ma significa che non è compatibile al 100% con la versione precedente (mq4).
Penso che quando la nuova versione sarà rilasciata causerà molta confusione sul forum per i neofiti perché la nuova documentazione di mql4 è basata sulla codifica di mql5. Ciò significa che molto di ciò che è descritto su questo forum e nel codebase sarà contraddetto dalla documentazione di mql4.
Impostazione di un buffer di indicatori dalla nuova documentazione di mql4: (Questo in realtà ha degli errori e non si compila)
#property copyright "2009, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property indicator_separate_window#property indicator_buffers 1#property indicator_plots 1//---- plot MA#property indicator_label1 "MA"#property indicator_type1 DRAW_LINE#property indicator_color1 clrRed#property indicator_style1 STYLE_SOLID#property indicator_width1 1//--- input parametersinputbool AsSeries=true;
inputint period=15;
inputENUM_MA_METHOD smootMode=MODE_EMA;
inputENUM_APPLIED_PRICE price=PRICE_CLOSE;
inputint shift=0;
//--- indicator buffersdouble MABuffer[];
int ma_handle;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingif(AsSeries) ArraySetAsSeries(MABuffer,true);
Print("Indicator buffer is timeseries = ",ArrayGetAsSeries(MABuffer));
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Indicator buffer after SetIndexBuffer() is timeseries = ",
ArrayGetAsSeries(MABuffer));
//--- change the oredr of accessing elements of the indicator bufferArraySetAsSeries(MABuffer,AsSeries);
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//---
ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//--- Copy the values of the moving average in the buffer MABufferint copied=CopyBuffer(ma_handle,0,0,rates_total,MABuffer);
Print("MABuffer[0] = ",MABuffer[0]);// Depending on the value AsSeries// Will receive a very old value// Or for the current unfinished bar//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Penso che quando la nuova versione sarà rilasciata causerà molta confusione sul forum per i neofiti perché la nuova documentazione di mql4 è basata sulla codifica di mql5. Ciò significa che molto di ciò che è descritto su questo forum e nel codebase sarà contraddetto dalla documentazione di mql4.
Impostazione di un buffer di indicatori dalla nuova documentazione di mql4: (Questo in realtà ha degli errori e non si compila)
Sì, hai ragione, sarà una transizione difficile. Tuttavia, penso che sarà difficile non per i neofiti ma per i codificatori sperimentati di mql4 che non conoscono ancora mql5. In generale, i neofiti non leggono la documentazione
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Non ho familiarità con la MT3 ma presumo che il codice che funzionava sulla MT3 funzionasse anche sulla MT4 . . . questo è il problema della MT4 --> MT5 ed è il motivo per cui la situazione è diversa.
La maggior parte degli utenti MT4 non sa codificare, se i loro indicatori preferiti su MT4 non esistono su MT5 allora non useranno MT5.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
Ho dato un'occhiata veloce alla nuova guida del metaeditor, la nuova versione mql4 sembra molto più diversa dalla vecchia versione di quanto pensassi.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
Per quanto ne so, il codice di MT3 non funziona su MT4, il linguaggio è molto diverso. Questo dibattito su MT4/MT5 è infinito, ci sono molti fattori che portano alla sopravvivenza di MT4, non sono nemmeno sicuro che MT5 fosse destinato a sostituire completamente MT4.
Comunque, riguardo alla nuova versione, Metaquotes ha detto che sarà retrocompatibile a livello ex4, ma non proprio a livello mq4.
A me sembra che si suppone che sia retrocompatibile a livello mq4, gli indicatori personalizzati inclusi sono le versioni originali mql4 con un cambiamento del nome della funzione init() che compilano nel nuovo compilatore e girano sul nuovo terminale, questo deve significare che possiamo ancora codificare indicatori usando IndicatorCounted() se vogliamo ...
init() ora si chiama int OnInit(void) e restituisce(INIT_SUCCEED);
A me sembra che si supponga che sia compatibile all'indietro a livello di mq4, gli indicatori personalizzati inclusi sono le versioni originali di mql4 con un cambiamento del nome della funzione init() che compilano nel nuovo compilatore ed eseguono sul nuovo terminale, questo deve significare che possiamo ancora codificare gli indicatori usando IndicatorCounted() se vogliamo ...
init() ora si chiama int OnInit(void) e restituisce(INIT_SUCCEED);
Mi dispiace ma non sarà retrocompatibile a livello di mq4, vedi l'annuncio della prima beta.
Differenze dalla vecchia versione di MQL4:
Cambiata la priorità delle operazioni logiche AND/OR. Ora, tutto è simile allo standard C/C++
Introdotta la valutazione abbreviata delle espressioni logiche. Ora, quando un'espressione logica viene valutata prima di raggiungere la sua fine, le rimanenti espressioni successive non vengono valutate, come in C/C++.
Solo i valori interi sono ora usati nell'operatore switch. Prima si sarebbero potuti usare valori reali
Il simbolo del punto non può più essere usato nei nomi delle variabili. Inoltre, i simboli '@', '$' e '?' non possono essere usati nei nomi delle variabili
Requisiti più rigorosi per la funzione di avvio. Prima i parametri potevano essere impostati nella funzione di avvio. Ora, tutti i punti di ingresso init, start, deinit, OnInit, OnStart, OnTick, OnTimer e altri devono corrispondere esattamente alle loro firme
A causa dell'espansione delle parole chiave, nomi come short, long, float, const, virtual, input, delete, new, do, char non possono essere usati ora
Ora, le funzioni dll importate non possono accettare array di stringhe MQL come parametro, come in MQL5
Le differenze non sono critiche e possono essere facilmente corrette nel codice. In cambio, si accede a molteplici caratteristiche di MQL5, una migliore velocità di esecuzione e un controllo di qualità molto più rigoroso.
...
init() è ora chiamato int OnInit(void) e restituisce(INIT_SUCCEED);
Mi piacciono le nuove caratteristiche in metaeditor
Penso che quando la nuova versione sarà rilasciata causerà molta confusione sul forum per i neofiti perché la nuova documentazione di mql4 è basata sulla codifica di mql5. Ciò significa che molto di ciò che è descritto su questo forum e nel codebase sarà contraddetto dalla documentazione di mql4.
Impostazione di un buffer di indicatori dalla nuova documentazione di mql4: (Questo in realtà ha degli errori e non si compila)
Penso che quando la nuova versione sarà rilasciata causerà molta confusione sul forum per i neofiti perché la nuova documentazione di mql4 è basata sulla codifica di mql5. Ciò significa che molto di ciò che è descritto su questo forum e nel codebase sarà contraddetto dalla documentazione di mql4.
Impostazione di un buffer di indicatori dalla nuova documentazione di mql4: (Questo in realtà ha degli errori e non si compila)
Hai già codificato in MQL5 angevoyageur?