UPD: Rashid ha postato un file di libreria sopra, che ha risolto il mio problema. È triste che la libreria standard abbia un errore. Ora studierò il confronto per vedere se è possibile apportare alcune modifiche direttamente in EA senza sostituire la libreria, in modo che tutto funzioni.
Queste modifiche sono già presenti nella libreria standard. Ho deciso di rispondere a coloro che leggeranno l'articolo solo ora.
Continuo a studiare il linguaggio di programmazione MQL5. Ho cercato quasi tutto il sito alla ricerca di informazioni utili per me. La maggior parte delle informazioni trovate sul sito è destinata a persone che hanno già una conoscenza di base della programmazione.
E qui! Ho trovato un altro GRANDE articolo, che mi ha aiutato a capire molte cose e a perfezionare il mio EA! È un peccato che l'autore non abbia continuato a scrivere questa serie di articoli e si sia limitato al solo 2012. Comunque, esprimo un GRANDE rispetto per quest'uomo e gli dico un GRANDE GRAZIE a nome di tutti i principianti!
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
Ciao, grazie per questo post molto utile e per favore aiutatemi a risolvere questo problema. Sono nuovo di MT5 e sto imparando a creare EA, quindi ho copiato il codice di esempio per eseguire Ctrade.Buy ma il backtest è fallito. Ecco ulteriori informazioni:
1) Conto: È un conto live con valuta di base NZD.
2) Impostazioni del MetaEditor per il backtest:
3) Codice: Copiato da https://www.mql5.com/it/articles/481:
RJ 0 19:36:44.799 Simboli EURUSD: simbolo da sincronizzare
HR 0 19:36:44.800 Simboli EURUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
NJ 0 19:36:44.800 Storia EURUSD: sincronizzazione della storia avviata
GO 0 19:36:44.856 Storia EURUSD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
RQ 0 19:36:44.856 Storia EURUSD: sincronizzata la storia dal 2012.01.01 al 2017.11.15
EF 0 19:36:44.993 Cronologia EURUSD,Daily: la cache della cronologia è allocata per 1010 barre e contiene 312 barre dal 2014.01.01 00:00 al 2014.12.31 00:00
ND 0 19:36:44.993 Storico EURUSD,Daily: lo storico inizia da 2014.01.01 00:00
OL 0 19:36:44.996 Tester EURUSD,Daily (HalifaxPlus-Live): generazione di ogni tick
GN 0 19:36:44.996 Tester EURUSD,Daily: iniziato il test di Experts\demo.ex5 dal 2015.01.01 00:00 al 2017.11.15 00:00
CK 0 19:36:56.288 Simboli NZDUSD: simbolo da sincronizzare
IS 0 19:36:56.288 Simboli NZDUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
JL 0 19:36:56.288 Storia NZDUSD: sincronizzazione della storia avviata
HJ 0 19:36:56.575 Cronologia NZDUSD: caricati 14 Kb di dati cronologici da sincronizzare in 0:00:00.078
LS 0 19:36:56.575 Cronologia NZDUSD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
CO 0 19:36:56.579 Simboli EURNZD: simbolo da sincronizzare
OJ 0 19:36:56.580 Simboli EURNZD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
DL 0 19:36:56.580 Storia EURNZD: sincronizzazione storia avviata
MK 0 19:36:56.656 Storia EURNZD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
OD 0 19:36:56.656 Cronologia EURNZD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
Ciao, grazie per questo post molto utile e per favore aiutatemi a risolvere questo problema. Sono nuovo di MT5 e sto imparando a creare EA, quindi ho copiato il codice di esempio per eseguire Ctrade.Buy ma il backtest è fallito. Ecco ulteriori informazioni:
1) Conto: È un conto live con valuta di base NZD.
2) Impostazioni del MetaEditor per il backtest:
3) Codice: Copiato da https://www.mql5.com/it/articles/481:
RJ 0 19:36:44.799 Simboli EURUSD: simbolo da sincronizzare
HR 0 19:36:44.800 Simboli EURUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
NJ 0 19:36:44.800 Storia EURUSD: sincronizzazione della storia avviata
GO 0 19:36:44.856 Storia EURUSD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
RQ 0 19:36:44.856 Storia EURUSD: sincronizzata la storia dal 2012.01.01 al 2017.11.15
EF 0 19:36:44.993 Cronologia EURUSD,giornaliera: cache cronologica allocata per 1010 barre e contiene 312 barre dal 2014.01.01 00:00 al 2014.12.31 00:00
ND 0 19:36:44.993 Storico EURUSD,Daily: lo storico inizia da 2014.01.01 00:00
OL 0 19:36:44.996 Tester EURUSD,giornaliero (HalifaxPlus-Live): ogni tick generato
GN 0 19:36:44.996 Tester EURUSD,Daily: iniziato il test di Experts\demo.ex5 dal 2015.01.01 00:00 al 2017.11.15 00:00
CK 0 19:36:56.288 Simboli NZDUSD: simbolo da sincronizzare
IS 0 19:36:56.288 Simboli NZDUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
JL 0 19:36:56.288 Storia NZDUSD: sincronizzazione della storia avviata
HJ 0 19:36:56.575 Cronologia NZDUSD: caricati 14 Kb di dati cronologici da sincronizzare in 0:00:00.078
LS 0 19:36:56.575 Cronologia NZDUSD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
CO 0 19:36:56.579 Simboli EURNZD: simbolo da sincronizzare
OJ 0 19:36:56.580 Simboli EURNZD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
DL 0 19:36:56.580 Storia EURNZD: sincronizzazione storia avviata
MK 0 19:36:56.656 Storia EURNZD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
OD 0 19:36:56.656 Cronologia EURNZD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
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.
UPD: Rashid ha postato un file di libreria sopra, che ha risolto il mio problema. È triste che la libreria standard abbia un errore. Ora studierò il confronto per vedere se è possibile apportare alcune modifiche direttamente in EA senza sostituire la libreria, in modo che tutto funzioni.
Queste modifiche sono già presenti nella libreria standard. Ho deciso di rispondere a coloro che leggeranno l'articolo solo ora.
Bene, davvero un bel lavoro...
Buona giornata a tutti!
Continuo a studiare il linguaggio di programmazione MQL5. Ho cercato quasi tutto il sito alla ricerca di informazioni utili per me. La maggior parte delle informazioni trovate sul sito è destinata a persone che hanno già una conoscenza di base della programmazione.
E qui! Ho trovato un altro GRANDE articolo, che mi ha aiutato a capire molte cose e a perfezionare il mio EA! È un peccato che l'autore non abbia continuato a scrivere questa serie di articoli e si sia limitato al solo 2012. Comunque, esprimo un GRANDE rispetto per quest'uomo e gli dico un GRANDE GRAZIE a nome di tutti i principianti!
Con rispetto, Vladimir.
Ciao, grazie per questo post molto utile e per favore aiutatemi a risolvere questo problema. Sono nuovo di MT5 e sto imparando a creare EA, quindi ho copiato il codice di esempio per eseguire Ctrade.Buy ma il backtest è fallito. Ecco ulteriori informazioni:
1) Conto: È un conto live con valuta di base NZD.
2) Impostazioni del MetaEditor per il backtest:
3) Codice: Copiato da https://www.mql5.com/it/articles/481:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) Log degli errori (si prega di notare che sto testando solo su EUR/USD):
GJ 0 19:36:44.410 127.0.0.1 login (build 1730)
HH 0 19:36:44.420 Rete 38520 byte di informazioni sul conto caricati
JO 0 19:36:44.420 Rete 1482 byte di parametri del tester caricati
QE 0 19:36:44.420 Rete 188 byte di parametri di input caricati
FR 0 19:36:44.421 Rete 443 byte di lista di simboli caricati
IF 0 19:36:44.421 Aggiunto file esperto del tester: Experts\demo.ex5. 46684 byte caricati
QH 0 19:36:44.433 Deposito iniziale del tester 10000,00 NZD, leva 1:100
JN 0 19:36:44.437 Tester inizializzato con successo
ES 0 19:36:44.437 Rete 46 Kb di dati totali di inizializzazione ricevuti
PP 0 19:36:44.437 Tester Intel Core i7-4510U @ 2.00GHz, 8103 MB
RJ 0 19:36:44.799 Simboli EURUSD: simbolo da sincronizzare
HR 0 19:36:44.800 Simboli EURUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
NJ 0 19:36:44.800 Storia EURUSD: sincronizzazione della storia avviata
GO 0 19:36:44.856 Storia EURUSD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
RQ 0 19:36:44.856 Storia EURUSD: sincronizzata la storia dal 2012.01.01 al 2017.11.15
EF 0 19:36:44.993 Cronologia EURUSD,Daily: la cache della cronologia è allocata per 1010 barre e contiene 312 barre dal 2014.01.01 00:00 al 2014.12.31 00:00
ND 0 19:36:44.993 Storico EURUSD,Daily: lo storico inizia da 2014.01.01 00:00
OL 0 19:36:44.996 Tester EURUSD,Daily (HalifaxPlus-Live): generazione di ogni tick
GN 0 19:36:44.996 Tester EURUSD,Daily: iniziato il test di Experts\demo.ex5 dal 2015.01.01 00:00 al 2017.11.15 00:00
CK 0 19:36:56.288 Simboli NZDUSD: simbolo da sincronizzare
IS 0 19:36:56.288 Simboli NZDUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
JL 0 19:36:56.288 Storia NZDUSD: sincronizzazione della storia avviata
HJ 0 19:36:56.575 Cronologia NZDUSD: caricati 14 Kb di dati cronologici da sincronizzare in 0:00:00.078
LS 0 19:36:56.575 Cronologia NZDUSD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
CO 0 19:36:56.579 Simboli EURNZD: simbolo da sincronizzare
OJ 0 19:36:56.580 Simboli EURNZD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
DL 0 19:36:56.580 Storia EURNZD: sincronizzazione storia avviata
MK 0 19:36:56.656 Storia EURNZD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
OD 0 19:36:56.656 Cronologia EURNZD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
IN 0 19:36:56.665 Operazione 2015.01.02 03:00:00 mercato acquista 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)
PE 0 19:36:56.665 Operazioni 2015.01.02 03:00:00 operazione #2 acquisto 0,10 EURUSD a 1,20549 eseguita(in base all'ordine #2)
FH 0 19:36:56.666 Operazione 2015.01.02 03:00:00 eseguita [#2 comprare 0.10 EURUSD a 1.20549]
OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordine eseguito buy 0.10 at 1.20549 [#2 buy 0.10 EURUSD at 1.20549]
FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Il metodo Buy() è stato eseguito con successo. Codice di ritorno=10009 (eseguito a 1,20549)
NM 2 19:37:15.823 Storia NZDUSD 2016.09.21 23:01:00: rilevata storia corrotta (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)
JF 2 19:37:15.823 Cronologia NZDUSD 2016.09.21, trovato contenitore errato, deve essere risincronizzato
LQ 2 19:37:16.106 Errore storico del tester 9 in una funzione non definita
OH 2 19:37:16.106 Il tester si è fermato allo 0% dell'intervallo di test con l'errore '20 NZDUSD'.
Per favore, ditemi cosa c'è che non va e come posso risolvere questo problema?
Ciao, grazie per questo post molto utile e per favore aiutatemi a risolvere questo problema. Sono nuovo di MT5 e sto imparando a creare EA, quindi ho copiato il codice di esempio per eseguire Ctrade.Buy ma il backtest è fallito. Ecco ulteriori informazioni:
1) Conto: È un conto live con valuta di base NZD.
2) Impostazioni del MetaEditor per il backtest:
3) Codice: Copiato da https://www.mql5.com/it/articles/481:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) Log degli errori (si prega di notare che sto testando solo su EUR/USD):
GJ 0 19:36:44.410 127.0.0.1 login (build 1730)
HH 0 19:36:44.420 Rete 38520 byte di informazioni sul conto caricati
JO 0 19:36:44.420 Rete 1482 byte di parametri del tester caricati
QE 0 19:36:44.420 Rete 188 byte di parametri di input caricati
FR 0 19:36:44.421 Rete 443 byte di lista di simboli caricati
IF 0 19:36:44.421 Aggiunto file esperto del tester: Experts\demo.ex5. 46684 byte caricati
QH 0 19:36:44.433 Deposito iniziale del tester 10000,00 NZD, leva 1:100
JN 0 19:36:44.437 Tester inizializzato con successo
ES 0 19:36:44.437 Rete 46 Kb di dati totali di inizializzazione ricevuti
PP 0 19:36:44.437 Tester Intel Core i7-4510U @ 2.00GHz, 8103 MB
RJ 0 19:36:44.799 Simboli EURUSD: simbolo da sincronizzare
HR 0 19:36:44.800 Simboli EURUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
NJ 0 19:36:44.800 Storia EURUSD: sincronizzazione della storia avviata
GO 0 19:36:44.856 Storia EURUSD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
RQ 0 19:36:44.856 Storia EURUSD: sincronizzata la storia dal 2012.01.01 al 2017.11.15
EF 0 19:36:44.993 Cronologia EURUSD,giornaliera: cache cronologica allocata per 1010 barre e contiene 312 barre dal 2014.01.01 00:00 al 2014.12.31 00:00
ND 0 19:36:44.993 Storico EURUSD,Daily: lo storico inizia da 2014.01.01 00:00
OL 0 19:36:44.996 Tester EURUSD,giornaliero (HalifaxPlus-Live): ogni tick generato
GN 0 19:36:44.996 Tester EURUSD,Daily: iniziato il test di Experts\demo.ex5 dal 2015.01.01 00:00 al 2017.11.15 00:00
CK 0 19:36:56.288 Simboli NZDUSD: simbolo da sincronizzare
IS 0 19:36:56.288 Simboli NZDUSD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
JL 0 19:36:56.288 Storia NZDUSD: sincronizzazione della storia avviata
HJ 0 19:36:56.575 Cronologia NZDUSD: caricati 14 Kb di dati cronologici da sincronizzare in 0:00:00.078
LS 0 19:36:56.575 Cronologia NZDUSD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
CO 0 19:36:56.579 Simboli EURNZD: simbolo da sincronizzare
OJ 0 19:36:56.580 Simboli EURNZD: simbolo sincronizzato, 3624 byte di informazioni sul simbolo ricevuti
DL 0 19:36:56.580 Storia EURNZD: sincronizzazione storia avviata
MK 0 19:36:56.656 Storia EURNZD: caricati 27 byte di dati storici da sincronizzare in 0:00:00.000
OD 0 19:36:56.656 Cronologia EURNZD: sincronizzata la cronologia dal 2013.01.01 al 2017.11.15
IN 0 19:36:56.665 Operazione 2015.01.02 03:00:00 mercato acquista 0,10 EURUSD (1,20538 / 1,20549 / 1,20538)
PE 0 19:36:56.665 Operazioni 2015.01.02 03:00:00 operazione #2 acquisto 0,10 EURUSD a 1,20549 eseguita(in base all'ordine #2)
FH 0 19:36:56.666 Operazione 2015.01.02 03:00:00 eseguita [#2 comprare 0.10 EURUSD a 1.20549]
OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordine eseguito buy 0.10 at 1.20549 [#2 buy 0.10 EURUSD at 1.20549]
FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Il metodo Buy() è stato eseguito con successo. Codice di ritorno=10009 (eseguito a 1,20549)
NM 2 19:37:15.823 Storia NZDUSD 2016.09.21 23:01:00: rilevata storia corrotta (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)
JF 2 19:37:15.823 Cronologia NZDUSD 2016.09.21, trovato contenitore errato, deve essere risincronizzato
LQ 2 19:37:16.106 Errore storico del tester 9 nella funzione non definita
OH 2 19:37:16.106 Il tester si è fermato allo 0% dell'intervallo di test con l'errore '20 NZDUSD'.
Per favore, ditemi cosa c'è che non va e come posso risolvere questo problema?
Nell'articolo quando si aprono ordini limite e stop dappertutto
Mi chiedo se coloro che scrivono che l'articolo li ha aiutati a inserire il codice dall'articolo?