Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 929

 
Juer:

Codice

Dà questo risultato:

Cosa sto facendo di sbagliato?

Non si può passare attraverso tutti i membri dell'enumerazione. Le enumerazioni incorporate non possono essere percorse come un array - come da "0" a "fine". Per attraversare le enumerazioni in linea, è necessario indirizzare ogni membro dell'enumerazione direttamente, correttamente. Per esempio così:

//+------------------------------------------------------------------+
//|                                              ENUM_TIMEFRAMES.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("PERIOD_CURRENT ",PERIOD_M1,"\n",
         "PERIOD_M2 ",PERIOD_M2,"\n",
         "PERIOD_M3 ",PERIOD_M3,"\n",
         "PERIOD_M4 ",PERIOD_M4,"\n",
         "PERIOD_M5 ",PERIOD_M5,"\n",
         "PERIOD_M6 ",PERIOD_M6,"\n",
         "PERIOD_M10 ",PERIOD_M10,"\n",
         "PERIOD_M12 ",PERIOD_M12,"\n",
         "PERIOD_M15 ",PERIOD_M15,"\n",
         "PERIOD_M20 ",PERIOD_M20,"\n",
         "PERIOD_M30 ",PERIOD_M30,"\n",
         "PERIOD_H1 ",PERIOD_H1,"\n",
         "PERIOD_H2 ",PERIOD_H2,"\n",
         "PERIOD_H3 ",PERIOD_H3,"\n",
         "PERIOD_H4 ",PERIOD_H4,"\n",
         "PERIOD_H6 ",PERIOD_H6,"\n",
         "PERIOD_H8 ",PERIOD_H8,"\n",
         "PERIOD_H12 ",PERIOD_H12,"\n",
         "PERIOD_D1 ",PERIOD_D1,"\n",
         "PERIOD_W1 ",PERIOD_W1,"\n",
         "PERIOD_MN1 ",PERIOD_MN1,"\n");
  }
//+------------------------------------------------------------------+
File:
 
Vladimir Karputov:

Non si passa attraverso tutti i membri dell'enumerazione. Le enumerazioni incorporate non possono essere percorse come un array - come da "0" a "fine". Per accedere alle enumerazioni incorporate, dovete indirizzare ogni membro dell'enumerazione direttamente, correttamente. Per esempio così:

Chi l'avrebbe mai detto...
 
int val=(int)PERIOD_H1;

In un'espressione come questa, val è 16385. Qual è questo valore?

Ho sempre pensato che int ed enum potessero essere facilmente convertiti l'uno nell'altro :(

 
Juer:
Chi l'avrebbe mai detto...

Se volete accedere a un'enumerazione standard come array, dovete prima dichiarare e riempire voi stessi un tale array:

//--- variant 2
   ENUM_TIMEFRAMES timeframes_array[21]=
     {
      PERIOD_M1,PERIOD_M2,PERIOD_M3,
      PERIOD_M4,PERIOD_M5,PERIOD_M6,
      PERIOD_M10,PERIOD_M12,PERIOD_M15,
      PERIOD_M20,PERIOD_M30,PERIOD_H1,
      PERIOD_H2,PERIOD_H3,PERIOD_H4,
      PERIOD_H6,PERIOD_H8,PERIOD_H12,
      PERIOD_D1,PERIOD_W1,PERIOD_MN1
     };
   int size=ArraySize(timeframes_array);
   for(int i=0;i<size;i++)
      Print(i,": ",EnumToString(timeframes_array[i])," ",timeframes_array[i]);
 
Juer:

In un'espressione come questa, val è 16385. Qual è questo valore?

Ho sempre pensato che int ed enum potessero essere facilmente convertiti l'uno nell'altro :(

Il mio esempio sopra): riproduci e guarda i numeri

 

Sto cercando di impostare un trasferimento di file ftp.

Premendo il pulsante Test in Service-Settings-FTP si può inviare il file, cioè le password e il percorso sono corretti.

Non posso inviare file via software. Quando si invia un file tramite script, quando si esegue SendFTP("File_1.txt", "/ftp_failes") il terminale si blocca. File_1.txt è nella directory Files.

Domanda: TerminalInfoInteger( TERMINAL_FTP_ENABLED) nel mio script =0. Non riesco a trovare dove e come sia configurato, per favore consigliatemi.

E puoi dirmi cos'altro mi manca?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

Sto cercando di impostare un trasferimento di file ftp.

Premendo il pulsante Test in Service-Settings-FTP si può inviare il file, cioè le password e il percorso sono corretti.

Non posso inviare file via software. Quando si invia un file tramite script, quando si esegue SendFTP("File_1.txt", "/ftp_failes") il terminale si blocca. File_1.txt si trova nella directory Files.

Domanda: TerminalInfoInteger( TERMINAL_FTP_ENABLED) nel mio script =0. Non riesco a trovare dove e come sia configurato, per favore consigliatemi.

E puoi dirmi cos'altro mi sono perso?
Il motivo era: nominare un file in lettere russe non è permesso.
Il problema è stato risolto.
 

Sto cercando di leggere una stringa da un file:

#include <Files\FileTxt.mqh>
CFileTxt          m_file_txt;
m_file_handle=m_file_txt.Open(m_file_name,FILE_CSV|FILE_READ|FILE_COMMON|FILE_ANSI,10);
m_file_txt.Seek(0,SEEK_SET);
string str=m_file_txt.ReadString();

Ecco la prima riga del file:

1,1,1,1,21,0,unmatch count,IGNORECRLF

Ottengo solo il carattere "," in str.

 
FILE_UNICODE

aiutato, ma in questo caso si leggono i caratteri cinesi.

E se ho bisogno di ANSI? Perché non posso leggere una stringa intera quando il flag FILE_ANSI?

 
Can:
   int cur_bars=Bars(_Symbol,PERIOD_CURRENT);

sostituire con:

   int cur_bars=Bars(_Symbol,_Period);
Motivazione: