Discussione sull’articolo "Operazioni di Trading in MQL5 - È Facile" - pagina 4

 
Konstantin Efremov:

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...

 
<Deleted>
.
 
Andy Obama:
 

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.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
I commenti che non riguardano questo argomento sono stati spostati in "Messaggi fuori tema".
 
pdev:

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?

[Eliminato]  
pdev:

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

double price=1000*point;

Mi chiedo se coloro che scrivono che l'articolo li ha aiutati a inserire il codice dall'articolo?