Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 929

 
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);
 
ascerdfg:
Можно ли:

заменить на:

А почему-бы и нет? Конечно можно

 
double Open[3];

int Ind_Handle;

int OnInit()
  {
      Ind_Handle=iCustom(_Symbol,_Period,"Pop"); // Pop.ex5
      if(Ind_Handle==INVALID_HANDLE)
        {
         Print(" Не удалось получить хендл индикатора");
         return(INIT_FAILED);
        }
   
   return(INIT_SUCCEEDED);
  }


void OnTick()
  {
 
      CopyBuffer(Ind_Handle,0,1,1,Open);
      Print("Open0 ",Open[0]);
  }

Печатает:   "Open0 1.797693134862316e+308"

Хотя я изменял и номер ячейки индикаторного буфера и его индекс.

Я точно знаю что в индикаторе целое число. Почему такое печатает?