VPS, виртуальный хостинг, ftp, перенос файлов

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
181787
Vladimir Karputov  

Стала вот такая задача: торгуют несколько советников на MetaTrader 5 hedge счёте. Для каждого советника создаётся несколько текстовых файлов - в эти файлы советники пишут служебную информацию. Нужно перенести эти текстовые файлы на встроенный в терминал виртуальный хостинг (причём нужно именно перенести, так как в файлах уже записана информация).

Засада #1: принцип формирования имени файла

"тип позиции"+"_"+"имя символа"+" "+"период"+" "+"magic"+".txt"

Переменные "имя символа" и "magic" берутся из входных параметров - то есть имя текстового файла может быть разным в зависимости от входных параметров - следовательно директива 

#property tester_file

не поможет, так она требует заранее известное имя файла, правильно?

...

Vladimir Karputov
Модератор
181787
Vladimir Karputov  

Пример для 

#property tester_file

есть в статье Подготовка торгового счета к миграции на виртуальный хостинг (пункт Передача файлов).


Ну и соответственно тестовый советник в котором попробуем в свойство "#property tester_file" подставить входной параметр - имя файла:

//+------------------------------------------------------------------+
//|                                         property_tester_file.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
input string file_name="SELL_EURUSD.m PERIOD_H1 754243391.txt";
#property tester_file file_name
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+

При компиляции сразу получаем такую ошибку:

'file_name' - constant expected property_tester_file.mq5        11      23


Значит решить Засаду #1 "в лоб" не получится. 

Хорошо, пойдём другим путём - жёстко пропишем в тестовом советнике имена нужных файлов...

Vladimir Karputov
Модератор
181787
Vladimir Karputov  

Ну, что же, вариант с жёстким указанием имени файла в свойстве "#property tester_file" позволило скомпилировать без ошибок тестовый эксперт:

//+------------------------------------------------------------------+
//|                                         property_tester_file.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
//---
#property tester_file "SELL_EURUSD.m PERIOD_H1 754243391.txt"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Кроме того при миграции на виртуальный хостинг во вкладке "Журнал" терминала есть отчёт о миграции указанного файла:

2017.06.18 20:52:36.048 Virtual Hosting 5882687: migrate file "Files\SELL_EURUSD.m PERIOD_H1 754243391.txt" (5 bytes)


Замечательно, теперь осталось проверить

Засада 2: при очередной синхронизации файл указанный в директиве "#property tester_file" затирается?

...
Vladimir Karputov
Модератор
181787
Vladimir Karputov  

Засада #3: при указании 12 #property tester_file эти 12-ть файлов не мигрируют :(

А что, у директивы "#property tester_file " есть какое-то ограничение? Я указал двенадцать "#property tester_file" и в итоге ни один из этих 12-ти файлов не смигрировал.


Уточнение: если мигрировать ТОЛЬКО ОДИН СОВЕТНИК (например из поста ) и указать в нём 12-ть текстовых файлов - то эти 12-ьб текстовых файлов смигрируют.

При попытке полноценной миграции (несколько чартов, несколько советников и среди них советник в котором указаны 12-ть #property tester_file - эти 12-ть файлов не мигрируют.


Добавлено: билд 1596

Vladimir Karputov
Модератор
181787
Vladimir Karputov  
Vladimir Karputov:

Засада #3: при указании 12 #property tester_file эти 12-ть файлов не мигрируют :(

А что, у директивы "#property tester_file " есть какое-то ограничение? Я указал двенадцать "#property tester_file" и в итоге ни один из этих 12-ти файлов не смигрировал.


Уточнение: если мигрировать ТОЛЬКО ОДИН СОВЕТНИК (например из поста ) и указать в нём 12-ть текстовых файлов - то эти 12-ьб текстовых файлов смигрируют.

При попытке полноценной миграции (несколько чартов, несколько советников и среди них советник в котором указаны 12-ть #property tester_file - эти 12-ть файлов не мигрируют.


Добавлено: билд 1596


Вечером хостинг был остановлен и отменён. С утра попробовал заново: результат прежний - все эксперты и чарты мигрировали, а вот текстовые файлы подключённые через директиву "#property tester_file" не мигрировали.


Добавлено:

на хостинге стоит 1599 билд:

2017.06.19 04:07:07.719 Terminal        MetaTrader 5 x64 build 1599 started (MetaQuotes Software Corp.)
Vladimir Karputov
Модератор
181787
Vladimir Karputov  

В build 1653 заработала отправка через  "#property tester_file " 12-ти файлов за раз.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий