Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1029

 
Roman Kutemov:

come determinare il giorno in mt5? un analogo di DayOfYear da mt4

questa è la funzione da scrivere

se (TimeDayOfYear(transaction_time)==DayOfYear())

https://www.mql5.com/ru/docs/constants/structures/mqldatetime

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Порядковый номер в году day_of_year в високосном году, начиная с марта, будет отличаться от порядкового номера соответствующего дня в невисокосном году.
 

L'ho letto, ma non so come metterlo nel codice

 
Roman Kutemov:

come determinare il giorno in mt5? un analogo di DayOfYear da mt4

questa è la funzione da scrivere

se (TimeDayOfYear(transaction_time)==DayOfYear())

Codice di esempio:

   MqlDateTime STimeTransaction,STimeCurrent;
   ResetLastError();
   if(TimeToStruct(transaction_time,STimeTransaction))
     {
      if(TimeToStruct(TimeCurrent(),STimeCurrent))
        {
         if(STimeTransaction.day_of_year==STimeCurrent.day_of_year)
           {
            //--- your code

           }
        }
      else
         Alert("ERROR STimeCurrent: ",GetLastError());
     }
   else
      Alert("ERROR STimeTransaction: ",GetLastError());

Ci sono due struttureMqlDateTime-STimeTransaction e STimeCurrent. Nella strutturaSTimeTransaction convertiamo il tempo della transazione (transaction_time), e nella strutturaSTimeCurrent- l'ultimo tempo noto del server commerciale.

Poi confrontiamo semplicemente il campoday_of_year di queste due strutture(STimeTransaction eSTimeCurrent)

 
Vladimir Karputov:

Codice di esempio:

Due struttureMqlDateTime-STimeTransaction e STimeCurrent. Nella strutturaSTimeTransaction convertiamo il tempo della transazione (transaction_time), e nella strutturaSTimeCurrent convertiamo l'ultimo tempo noto del server commerciale.

Poi, confrontiamo semplicemente il campoday_of_year di queste due strutture(STimeTransaction eSTimeCurrent)

fresco, grazie

 

Un consiglio per un vecchio...

Per qualche motivo, la stampa non funziona quando si esegue il debug dell'Expert Advisor.

Cioè c'è un pezzo di programma:

if(IsNewBar)
       {
     Print("Buy_opened=",Buy_opened ,"  Sell_opened=",Sell_opened,"   Новый бар",New_Time[0]);
     int fileHandle=FileOpen("test.txt",FILE_WRITE|FILE_TXT|FILE_SHARE_READ|FILE_UNICODE,0,0); 
     FileWrite(fileHandle,"Buy_opened=",Buy_opened ,"  Sell_opened=",Sell_opened,"   Новый бар",New_Time[0]);
     Alert("Buy_opened=",Buy_opened ,"  Sell_opened=",Sell_opened,"   Новый бар",New_Time[0]);
       }


E non stampa nulla. Ho anche rimosso if(IsNewBar) per stampare su ogni tick - ma niente.

Ho cercato in tutte le schede come "Expert Advisor", "logs", "logs" - niente.

Non ho avuto problemi con MT4, ma non ho idea di dove andare con MT5... Non so dove andare... non so dove cercare...


Sì, l'Expert Advisor non sta funzionando in modalità "ottimizzazione", sta solo funzionando su dati storici

Отладка кода - Разработка программ - MetaTrader 5
Отладка кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде программы точки останова — места, в которых исполнение программы должно быть приостановлено. Затем запускаете программу на обычном графике или в тестере стратегий. Как только исполнение программы...
 
Oldman_Evgeny:

Un consiglio per un vecchio...

Per qualche motivo, la stampa non funziona quando si esegue il debug dell'Expert Advisor.

Cioè c'è un pezzo di programma:


E non stampa nulla. Ho anche rimosso if(IsNewBar) per stampare su ogni tick - ma niente.

Ho cercato in tutte le schede come "Expert Advisor", "logs", "logs" - niente.

Non ho avuto problemi con MT4, ma non ho idea di dove andare con MT5... Non so dove andare... non so dove cercare...


Sì, l'Expert Advisor non sta funzionando in modalità "ottimizzazione", sta solo funzionando su dati storici

Vedi i log nella cartella "Tester".

 
Alexey Viktorov:

Vedi i log nella cartella "Tester".

C'è tutta una serie di cose nei log della cartella "Tester", ma la stampa che sto cercando, cioè quella del programma, non c'è...
 
Oldman_Evgeny:
I log della cartella "Tester" sono pieni di ogni sorta di roba, ma la stampa che sto cercando, cioè quella del programma, non c'è...

C'è anche una cartella chiamata "Agent-127.0.0.1-3000" che ha anche i log.

 
Alexey Viktorov:

C'è anche una cartella "Agent-127.0.0.1-3000" con i log dentro.

Miracolo! Rimosso TUTTI i log nel tester e la stampa è apparsa nella scheda "Log". Incredibile!

Non riesco a immaginare come sia successo! )))) Ma il fatto è che si stampa!

Grazie per l'aiuto!

 

Quale flag deve essere impostato per aprire un file per eseguire l'Expert Advisor, che scrive i dati nel file nel tester, in modo che dopo un'esecuzione nel tester il file scritto possa essere trovato nella cartella "MQL5\Files"?

Ho provato in questo modo: FILE_WRITE|FILE_TXT - non riesco a trovare dove il tester ha salvato il file.

Ho provato in questo modo: FILE_WRITE|FILE_TXT|FILE_COMMON - tutto è come descritto nella Guida, trovo il file in "Roaming\MetaQuotes\Terminal\Common\Files".


ma voglio il file in "MQL5\Files" !!!