Эскпорт из MT5 в MT4

 

Друзья, добрый вечер!

Подскажите студенту-филологу, пожалуйста, как можно попроще автоматизировать передачу графиков из  из MT5 в MT4  (в mt5 не работает советник, а в mt4 нет нужного инструмента)

Сейчас выгружаю скриптиком в csv и потом руками гружу в MT4.

1.как задать шедулер выполнения скрипта выгрузки?

2.есть готовые решения для автоматической загрузки csv в mt4?

спасибо!

ссылочки приветствуются, только по теме :)

 
Проще переписать код в МТ5
 
Vitaly Gorbunov:
Проще переписать код в МТ5
Виталий, переписать даже для разработчика не вариант, не то что для студента -филолога. немного поправить могу если скажут куда жать:)
 

Проблема в том что готового решения данной задачи нет. Надо всё равно писать шедулер по загрузке и выгрузке. 

Исходный код совы имеется? 

 
Vitaly Gorbunov:

Проблема в том что готового решения данной задачи нет. Надо всё равно писать шедулер по загрузке и выгрузке. 

Исходный код совы имеется? 

Шедулер по примерам смогу  допилить, сам скриптик загрузки бы еще найти.

Сова -это что?индикатор -гармоничные паттерны ZUP, скрипт выгрузка от  Юраса   YURAZ_CreaHistorCSVFromMT5forMT4.mq5

 

Сова - советник!

Индюк - индикатор!

Это такой сленг у пользователей МТ.

Так у вас индикатор или советник не работает на МТ5?

Если есть исходный код то проще переписать на МТ5. Ну если только там не супер навороченный код на ООП-е. Если разработчик не может перевести свой код с МТ4 на МТ5 гнать такого разработчика.

Если данный код YURAZ_CreaHistorCSVFromMT5forMT4.mq5 в свободном доступе то я гляну на него и подумаю что можно с этим сделать. Но сама идея с выгрузкой и загрузкой очень кривая.

 
Vitaly Gorbunov:

Сова - советник!

Индюк - индикатор!

Это такой сленг у пользователей МТ.

Так у вас индикатор или советник не работает на МТ5?

Если есть исходный код то проще переписать на МТ5. Ну если только там не супер навороченный код на ООП-е. Если разработчик не может перевести свой код с МТ4 на МТ5 гнать такого разработчика.

Если данный код YURAZ_CreaHistorCSVFromMT5forMT4.mq5 в свободном доступе то я гляну на него и подумаю что можно с этим сделать. Но сама идея с выгрузкой и загрузкой очень кривая.

Таким разработчикам только благодарность что делятся с людьми "несведущими" бесплатно своими наработками .

С позволения Юраса выложу скрипт выгрузки, сам скриптик в свободном доступе

//+------------------------------------------------------------------+
//|                             YURAZ_CreaHistorCSVFromMT5forMT4.mq5 |
//|            Copyright 2010, MetaQuotes Software Corp. (C) & YURAZ |
//|                                            www.masterforex-v.org |
//+------------------------------------------------------------------+
//
// Создаем CSV файл истории M1, чтобы прогрузить в мт4.
// к сожалению в МТ4 в истории по некоторым парам, например в 2010 году,
// существуют дырки в истории котировок в мае 2010 в Июле Августе 2010
// А в базе котировок MT5 наблюдается качественная история

#property copyright "Copyright 2010, MetaQuotes Software Corp. & (C) YURAZ"
#property link      "www.masterforex-v.org"
#property version   "1.00"
#include <Files\File.mqh>
#include <Files\FileTxt.mqh>

string    ExtFileName; // ="XXXXXX_PERIOD.CSV";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void  OnStart()
  {
   CFileTxt     *File;
   MqlRates  rates_array[];
   string sSymbol=Symbol();
   string  sPeriod;
   PeriodToStr(Period(),sPeriod);

   Comment("РАБОТАЮ... ждите... ");
// формируем имя файла EURUSD1 например
   ExtFileName=sSymbol;
   StringConcatenate(ExtFileName,sSymbol,"_",sPeriod,".CSV");
   ArraySetAsSeries(rates_array,true);
   int iMaxBar=TerminalInfoInteger(TERMINAL_MAXBARS);
   string format="%G,%G,%G,%G,%d";
   int iCod=CopyRates(sSymbol,Period(),0,iMaxBar,rates_array);
   if(iCod>0)
     {
      File=new CFileTxt;
      if(File==NULL)
        {
         //--- ошибка создания класса
         printf("%s (%4d): creating error",__FILE__,__LINE__);
         return;
        }
      // Открыть файл
      File.Open(ExtFileName,FILE_WRITE|FILE_COMMON,9);
      for(int i=iCod-1; i>=0; i--)
        {
         // формирование строки формата
         // 2009.01.05,12:49,1.36770,1.36780,1.36760,1.36760,8
         string sOut=StringFormat("%s",TimeToString(rates_array[i].time,TIME_DATE));
         sOut=sOut+","+TimeToString(rates_array[i].time,TIME_MINUTES);
         sOut=sOut+","+StringFormat(format,
                                    rates_array[i].open,
                                    rates_array[i].high,
                                    rates_array[i].low,
                                    rates_array[i].close,
                                    rates_array[i].tick_volume);
         sOut=sOut+"\n";
         File.WriteString(sOut);
        }
      File.Close();
     }
   Comment("OK. готово... ");
  }
//+------------------------------------------------------------------+
//| Конвертацмя периода в строку                                     |
//+------------------------------------------------------------------+
bool PeriodToStr(ENUM_TIMEFRAMES period,string &strper)
  {
   bool res=true;
//---
   switch(period)
     {
      case PERIOD_MN1 : strper="MN1"; break;
      case PERIOD_W1 :  strper="W1";  break;
      case PERIOD_D1 :  strper="D1";  break;
      case PERIOD_H1 :  strper="H1";  break;
      case PERIOD_H2 :  strper="H2";  break;
      case PERIOD_H3 :  strper="H3";  break;
      case PERIOD_H4 :  strper="H4";  break;
      case PERIOD_H6 :  strper="H6";  break;
      case PERIOD_H8 :  strper="H8";  break;
      case PERIOD_H12 : strper="H12"; break;
      case PERIOD_M1 :  strper="M1";  break;
      case PERIOD_M2 :  strper="M2";  break;
      case PERIOD_M3 :  strper="M3";  break;
      case PERIOD_M4 :  strper="M4";  break;
      case PERIOD_M5 :  strper="M5";  break;
      case PERIOD_M6 :  strper="M6";  break;
      case PERIOD_M10 : strper="M10"; break;
      case PERIOD_M12 : strper="M12"; break;
      case PERIOD_M15 : strper="M15"; break;
      case PERIOD_M20 : strper="M20"; break;
      case PERIOD_M30 : strper="M30"; break;
      default : res=false;
     }
//---
   return(res);
  }

 
Я правильно понимаю что вам не хватает индикатора ZUP в МТ5? Это достаточно известный проект до 150 версии он был с открытым кодом, кое что я в своё время там подсматривал. Переделать под МТ5 этот проект практически невозможно слишком там накручено. Сам автор пытался это сделать но потом отказался от этой идеи. Вообщем данный скрипт можно сделать автоматическим, но я сейчас занят на трёх проектах и времени совсем нет. Если сможете подождать недельку я вам сделаю автоматическую выгрузку. А вот с автоматической загрузкой в МТ4 пока не знаю можно ли это вообще сделать.
 
mmvb11111:

Таким разработчикам только благодарность что делятся с людьми "несведущими" бесплатно своими наработками .

С позволения Юраса выложу скрипт выгрузки, сам скриптик в свободном доступе

//+------------------------------------------------------------------+
//|                             YURAZ_CreaHistorCSVFromMT5forMT4.mq5 |
//|            Copyright 2010, MetaQuotes Software Corp. (C) & YURAZ |
//|                                            www.masterforex-v.org |
//+------------------------------------------------------------------+
//
// Создаем CSV файл истории M1, чтобы прогрузить в мт4.
// к сожалению в МТ4 в истории по некоторым парам, например в 2010 году,
// существуют дырки в истории котировок в мае 2010 в Июле Августе 2010
// А в базе котировок MT5 наблюдается качественная история

#property copyright "Copyright 2010, MetaQuotes Software Corp. & (C) YURAZ"
#property link      "www.masterforex-v.org"
#property version   "1.00"
#include <Files\File.mqh>
#include <Files\FileTxt.mqh>

string    ExtFileName; // ="XXXXXX_PERIOD.CSV";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void  OnStart()
  {
   CFileTxt     *File;
   MqlRates  rates_array[];
   string sSymbol=Symbol();
   string  sPeriod;
   PeriodToStr(Period(),sPeriod);

   Comment("РАБОТАЮ... ждите... ");
// формируем имя файла EURUSD1 например
   ExtFileName=sSymbol;
   StringConcatenate(ExtFileName,sSymbol,"_",sPeriod,".CSV");
   ArraySetAsSeries(rates_array,true);
   int iMaxBar=TerminalInfoInteger(TERMINAL_MAXBARS);
   string format="%G,%G,%G,%G,%d";
   int iCod=CopyRates(sSymbol,Period(),0,iMaxBar,rates_array);
   if(iCod>0)
     {
      File=new CFileTxt;
      if(File==NULL)
        {
         //--- ошибка создания класса
         printf("%s (%4d): creating error",__FILE__,__LINE__);
         return;
        }
      // Открыть файл
      File.Open(ExtFileName,FILE_WRITE|FILE_COMMON,9);
      for(int i=iCod-1; i>=0; i--)
        {
         // формирование строки формата
         // 2009.01.05,12:49,1.36770,1.36780,1.36760,1.36760,8
         string sOut=StringFormat("%s",TimeToString(rates_array[i].time,TIME_DATE));
         sOut=sOut+","+TimeToString(rates_array[i].time,TIME_MINUTES);
         sOut=sOut+","+StringFormat(format,
                                    rates_array[i].open,
                                    rates_array[i].high,
                                    rates_array[i].low,
                                    rates_array[i].close,
                                    rates_array[i].tick_volume);
         sOut=sOut+"\n";
         File.WriteString(sOut);
        }
      File.Close();
     }
   Comment("OK. готово... ");
  }
//+------------------------------------------------------------------+
//| Конвертацмя периода в строку                                     |
//+------------------------------------------------------------------+
bool PeriodToStr(ENUM_TIMEFRAMES period,string &strper)
  {
   bool res=true;
//---
   switch(period)
     {
      case PERIOD_MN1 : strper="MN1"; break;
      case PERIOD_W1 :  strper="W1";  break;
      case PERIOD_D1 :  strper="D1";  break;
      case PERIOD_H1 :  strper="H1";  break;
      case PERIOD_H2 :  strper="H2";  break;
      case PERIOD_H3 :  strper="H3";  break;
      case PERIOD_H4 :  strper="H4";  break;
      case PERIOD_H6 :  strper="H6";  break;
      case PERIOD_H8 :  strper="H8";  break;
      case PERIOD_H12 : strper="H12"; break;
      case PERIOD_M1 :  strper="M1";  break;
      case PERIOD_M2 :  strper="M2";  break;
      case PERIOD_M3 :  strper="M3";  break;
      case PERIOD_M4 :  strper="M4";  break;
      case PERIOD_M5 :  strper="M5";  break;
      case PERIOD_M6 :  strper="M6";  break;
      case PERIOD_M10 : strper="M10"; break;
      case PERIOD_M12 : strper="M12"; break;
      case PERIOD_M15 : strper="M15"; break;
      case PERIOD_M20 : strper="M20"; break;
      case PERIOD_M30 : strper="M30"; break;
      default : res=false;
     }
//---
   return(res);
  }

Вы так то могли просто ссылку на скрипт в КодаБэйз дать.

https://www.mql5.com/ru/code/232

Не пробовали со своим вопросом обратиться напрямую к разработчику данного скрипта - Юре Зайцеву?

YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4
YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4
  • www.mql5.com
В длинном названии скрипта отражена суть задачи! При попытке загрузить историю в MetaTrader 4 я столкнулся с проблемой, в истории есть дырки. Но был удивлен, не обнаружив дыр в истории базы MetaTrader 5, пришла простая идея взять котировки MetaTrader 5 и загнать в историю MetaTrader 4. Данный скрипт поможет получить полную историю для...
 
Alexandr Saprykin:

Вы так то могли просто ссылку на скрипт в КодаБэйз дать.

https://www.mql5.com/ru/code/232

Не пробовали со своим вопросом обратиться напрямую к разработчику данного скрипта - Юре Зайцеву?

Александр, спасибо за разъяснения.

В первую очередь интересует автоматическая загрузкой в МТ4, поэтому и спрашиваю может кто сталкивался, видел, знает.

 
mmvb11111:

Александр, спасибо за разъяснения.

В первую очередь интересует автоматическая загрузкой в МТ4, поэтому и спрашиваю может кто сталкивался, видел, знает.

Для автоматической загрузки пишете свой советник/индикатор/скрипт, который подменяет hst-файлы. Простой пример того, как это делается, имеется в штатном скрипте period_converter