初学者的问题 MQL5 MT5 MetaTrader 5 - 页 929

 
Juer:

编码

得到了这个结果。

我做错了什么?

你不可能走遍所有的枚举成员。内置的枚举不能作为一个数组进行遍历--比如从 "0 "到 "结束"。为了遍历内联枚举,你需要直接正确地处理枚举中的 每个成员。比如说像这样。

//+------------------------------------------------------------------+
//|                                              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");
  }
//+------------------------------------------------------------------+
附加的文件:
 
Vladimir Karputov:

你不会去看所有的枚举成员。内置的枚举不能作为一个数组进行遍历--比如从 "0 "到 "结束"。要访问嵌入式枚举,你必须直接正确地寻址枚举 每个成员。比如说像这样。

谁会想到...
 
int val=(int)PERIOD_H1;

在这样的表达式中,val是16385。这个值是什么?

我一直以为int和enum可以很容易地相互转换 :(

 
Juer:
谁会想到...

如果你想把标准枚举作为一个数组 来访问,你必须首先声明并自己填充这样一个数组

//--- 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:

在这样的表达式中,val是16385这个值是什么?

我一直以为int和enum可以很容易地相互转换 :(

我上面的例子):重现并看一下数字

 

我正试图建立一个 ftp文件传输

按 "服务-设置-FTP "中的测试按钮可以 发送文件,即密码和路径是正确的。

不能 通过软件发送文件。当通过脚本发送文件时,当执行SendFTP("File_1.txt", "/ftp_failes");终端挂起。File_1.txt在Files目录下。

问题:我脚本中的TerminalInfoInteger( TERMINAL_FTP_ENABLED) =0。我完全找不到它在哪里以及如何配置,请告知。

你能告诉我,我还漏掉了什么吗?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

我正试图建立一个 ftp文件传输

按 "服务-设置-FTP "中的测试按钮可以 发送文件,即密码和路径是正确的。

不能 通过软件发送文件。当通过脚本发送文件时,当执行SendFTP("File_1.txt", "/ftp_failes");终端挂起。File_1.txt在Files目录下。

问题:我脚本中的TerminalInfoInteger( TERMINAL_FTP_ENABLED) =0。我完全找不到它在哪里以及如何配置,请告知。

你能告诉我,我还漏掉了什么吗?
原因是这样的:用俄文字母给文件命名是不允许的。
该问题已得到解决。
 

我试图从一个文件中读取一个字符串。

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

这里是文件中的第一行。

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

我只得到str中的字符","。

 
FILE_UNICODE

帮助,但在这种情况下,中国的字符被读取。

如果我需要ANSI怎么办?为什么我不能在FILE_ANSI 标志下读取整个字符串?

 
可以。
   int cur_bars=Bars(_Symbol,PERIOD_CURRENT);

用来代替。

   int cur_bars=Bars(_Symbol,_Period);