Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 929

 
Juer:

Code

Ergibt dieses Ergebnis:

Was mache ich falsch?

Sie können nicht alle Mitglieder der Aufzählung durchgehen. Eingebaute Aufzählungen können nicht als Array durchlaufen werden - etwa von "0" bis "end". Um Inline-Aufzählungen zu durchlaufen, müssen Sie jedes Mitglied der Aufzählung direkt und korrekt ansprechen. Zum Beispiel so:

//+------------------------------------------------------------------+
//|                                              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");
  }
//+------------------------------------------------------------------+
Dateien:
 
Vladimir Karputov:

Sie gehen nicht alle Aufzählungsmitglieder durch. Eingebaute Aufzählungen können nicht als Array durchlaufen werden - etwa von "0" bis "end". Um auf eingebettete Aufzählungen zuzugreifen, müssen Sie jedes Mitglied der Aufzählung direkt und korrekt ansprechen. Zum Beispiel so:

Wer hätte das gedacht...
 
int val=(int)PERIOD_H1;

In einem Ausdruck wie diesem ist val gleich 16385. Wie hoch ist dieser Wert?

Ich dachte immer, int und enum könnten leicht ineinander umgewandelt werden :(

 
Juer:
Wer hätte das gedacht...

Wenn Sie auf eine Standardaufzählung als Array zugreifen wollen, müssen Sie ein solches Array zunächst selbst deklarieren und füllen:

//--- 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 einem Ausdruck wie diesem ist val gleich 16385. Wie hoch ist dieser Wert?

Ich dachte immer, int und enum könnten leicht ineinander umgewandelt werden :(

Mein obiges Beispiel): reproduzieren Sie es und sehen Sie sich die Zahlen an

 

Ich versuche, eine ftp-Dateiübertragung einzurichten.

Durch Drücken der Schaltfläche Test in Service-Einstellungen-FTP kann die Datei gesendet werden, d.h. Passwörter und Pfad sind korrekt.

Ich kann keine Dateien per Software versenden. Beim Senden einer Datei über ein Skript bleibt das Terminal beim Ausführen von SendFTP("File_1.txt", "/ftp_failes") hängen. File_1.txt befindet sich im Verzeichnis Files.

Frage: TerminalInfoInteger( TERMINAL_FTP_ENABLED) in meinem Skript =0. Ich kann nicht herausfinden, wo und wie es konfiguriert ist, bitte um Rat.

Und können Sie mir sagen, was ich sonst noch übersehen habe?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

Ich versuche, eine ftp-Dateiübertragung einzurichten.

Durch Drücken der Schaltfläche Test in Service-Einstellungen-FTP kann die Datei gesendet werden, d.h. Passwörter und Pfad sind korrekt.

Ich kann keine Dateien per Software versenden. Beim Senden einer Datei über ein Skript bleibt das Terminal beim Ausführen von SendFTP("File_1.txt", "/ftp_failes") hängen. File_1.txt befindet sich im Verzeichnis Files.

Frage: TerminalInfoInteger( TERMINAL_FTP_ENABLED) in meinem Skript =0. Ich kann nicht herausfinden, wo und wie es konfiguriert ist, bitte um Rat.

Und können Sie mir sagen, was ich noch übersehen habe?
Der Grund war folgender: Die Benennung einer Datei in russischen Buchstaben ist nicht zulässig.
Das Problem wurde behoben.
 

Ich versuche, eine Zeichenkette aus einer Datei zu lesen:

#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();

Hier ist die erste Zeile der Datei:

,1,1,1,21,0,Ungleichheitszählung,IGNORECRLF

Ich erhalte nur das Zeichen "," in str.

 
FILE_UNICODE

geholfen, aber in diesem Fall werden die chinesischen Zeichen gelesen.

Was ist, wenn ich ANSI benötige? Warum kann ich keine ganze Zeichenkette lesen, wenn das FILE_ANSI-Flag gesetzt ist?

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

ersetzen durch:

   int cur_bars=Bars(_Symbol,_Period);
Grund der Beschwerde: