Вопросы от начинающих 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("Файл_1.txt", "/ftp_failes"); терминал зависает. Файл Файл_1.txt лежит в каталоге Files.

Вопрос.  TerminalInfoInteger( TERMINAL_FTP_ENABLED)  в моём скрипте =0. Не смог найти где и как это вообще настраивается, подскажите, пожалуйста.

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

Пытаюсь настроить ftp передачу файлов.

Нажатием кнопки Тест в Сервис-Настройки-FTP переслать файл получается, т.е. пароли и путь верны.

Пересылать файлы программно не получается. При отправке файла скриптом при исполнении  SendFTP("Файл_1.txt", "/ftp_failes"); терминал зависает. Файл Файл_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);
Причина обращения: