Обсуждение статьи "Копирование торговли из MetaTrader 5 в MetaTrader 4" - страница 13

 
zhserg:

Сделал простенький копировщик. Задаем откуда, куда и интервал копирования.

в архиве exe файл
 
Warstein:
Спасибо за отличную вещь!!!
Очень большая просьба, добавьте работу только с ордерами с определенным магик номером.

Поддерживаю идею, может кто напишет, а так код отличный спасибо автору всё супер! Осталось только трейдера хорошего найти и попросить инвест ;)

 

 

Надо бы добавить.

1. Соразмерность лота - с 5-ти знаковых на 4-х знаковые - лот двигается тоже на 1 знак.

А вообще лучше тянуть не лот, а свободную маржу и лот и dights, а на приемнике пересчитывать лот в соответствие с имеющейся свободной маржой и знаками котировки после запятой.

Так мани-менеджмент сохранится - без него прога смысл теряет.

2. Префиксы-суффиксы к символам - иной раз ДЦ торговый символ называет не EURUSD, а EURUSD_бяка (наверно лучше сделать соответствие "с какого в какой" символ дублировать отдельным настроечным файлом)

3. Неплохо бы реализовать копирование файла в несколько мт4

Например приемом мт4 файла из папки мт5 с помощью:

#import "kernel32.dll"
   bool CopyFileA(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
#import

/////////////////

CopyFileA(TerminalPath()+CharToStr(92)+"experts"+CharToStr(92)+"files"+CharToStr(92)+fSymbol+".txt",CopyTo1+fSymbol+".txt",false);

Так можно выходить за границы файловой песочницы mt4.

В mql5, к сожалению, эта и подобные MSDN фишки не работают.

А вообще погоняю, если не будет косяков - то и не буду пока свою писать. Спасибки.

 
zhserg:

Сделал простенький копировщик. Задаем откуда, куда и интервал копирования.

Старт копирования кнопкой "Сохранить/старт". Во время работы она будет подмаргивать )))

 В Translator positions.MQ5 можно изменить строку int han=FileOpen(subfolder+"\\experts\\files\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); на   int han=FileOpen(folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); , т.е. файл будет писаться в папку \\Program Files\MetaTrader 5\MQL5\Files.  

Можно батником. И по сети будет и внутри компа.

@Echo off
:loop
xcopy "F:\folder\*.txt" "\\Comp1\folder" /Y /R /C /I /G /Z /D >nul
xcopy "C:\Program Files\MetaTrader 5\MQL5\Files\Translator positions.csv" "C:\Program Files\MetaTrader 4\experts\files" /Y /R /C /I /G /Z /D >nul
timeout /t 1
goto :loop

Кстати для мега синхронизации файлов рекомендую Майкософтовский SyncToy 2.1 http://www.microsoft.com/en-us/download/details.aspx?id=15155

SyncToy 2.1
SyncToy 2.1
  • www.microsoft.com
Note: There are multiple files available for this download. Once you click on the “Download” button, you will be prompted to select the files you need. Overview There are files from all kinds of sources that we want to store and manage. Files are created by our digital cameras, e-mail, cell phones, portable media players...
 
Всё это уже не актуально, статья себя пережила, скоро выйдет новый компилятор mql4++ с расширенными возможностями, всё поменяется.
 

Я думаю, что проблема связана с тем, где Metatrader хранит данные. В последних версиях Windows он не использует подпапки папки установки.

На сервере 2008 (в моем случае) MT5 использует:
C:\Users\[имя пользователя]\AppData\Roaming\MetaQuotes\Terminal\[длинный шестнадцатеричный номер]\MQL5\etc...

Каждая установка терминала использует свою собственную папку в этом месте с уникальным [длинным шестнадцатеричным номером]. Я попробовал установить MT4 в вышеуказанный путь к папке, но он также читает и пишет из своей собственной уникальной папки данных, так что это тоже не работает. В любом случае, выполнение программ из этого места, вероятно, не очень хорошая идея.

Я подозреваю, что эта проблема существует и в Windows 8.

На данный момент у меня нет идей, но надеюсь, что эта информация будет полезной.

 

Расположение файлов данных MT4 на Windows Server 2008:

C:\Users\[имя пользователя]\AppData\Local\VirtualStore\Program Files\[название папки программы MT4].

Я предполагаю, что ОС перенаправляет операции с файлами.

 

4103 - ошибка открытия файла, означает, что MT5 записывает сделки в какой-то файл, а MT4 не может его "найти".

Это происходит потому, что MT5 функционирует иначе, чем MT4. В MT5 папка, в которую мы устанавливаем MT5, отличается от папки, из которой он запускается. Например, я установил MT5 в C:\Accounts\MT5, а MT4 в C:\Accounts\MT5\MQL\Files\MetaTrader 4.

MT5 создал папку C:\Users\[имя пользователя]\AppData\Roaming\MetaQuotes\Terminal\[длинное шестнадцатеричное число]\MQL5\etc... и фактически запускается отсюда. Таким образом, MT5 записывает сделки где-то в этой папке.

Согласно оригинальной статье, MT4 должен быть "внутри" папки MT5. Поэтому решение заключается в том, чтобы сделать папку установки MT5 "ТАКОЙ ЖЕ", как и папка запуска. И самый простой способ заключается в следующем:

1. удалить все экземпляры MT5

2. Удалить папку 'Metaquotes' из C:\Users\[имя пользователя]\AppData\Roaming\

Теперь мы сделаем папку install такой же, как и папка run:

3. Переустановите MT5. Она не должна находиться в папке Program files, сделайте ее, например, C:\Accounts\MT5. Во время установки снимите флажок "запускать после завершения" (критический шаг).

4. Перед первым запуском MT5 щелкните правой кнопкой мыши на ярлыке MT5 на рабочем столе, выберите свойства, добавьте "/portable" в путь, без кавычек. Таким образом, это будет C:\Accounts\MT5\terminal.exe /portable. (Обратите внимание, что после terminal.exe стоит пробел, передняя косая черта, portable без заглавной буквы). Нажмите OK.

Теперь мы установим MT4, скопируем советники и запустим терминалы

5. Установите MT4 в папку C:\Accounts\MT5\MQL\Files\MetaTrader 4. (Обратите внимание, что название папки MetaTrader 4, или как там ее, должно совпадать с названием в советниках)

6. Скопируйте советники Translator и Copyist в соответствующие папки.

7. Запустите ведущий MT5 и ведомый MT4.

8. Наслаждайтесь!!!

Совет: Не переходите к следующему шагу, если что-то сделано неправильно.

Извините за использование "нетехнического" языка, это максимум того, что вы можете ожидать от доктора!

 
doctornasir:

4103 - ошибка открытия файла, означает, что MT5 записывает сделки в какой-то файл, а MT4 не может его "найти".

Это происходит потому, что MT5 функционирует иначе, чем MT4. В MT5 папка, в которую мы устанавливаем MT5, отличается от папки, из которой он запускается. Например, я установил MT5 в C:\Accounts\MT5, а MT4 в C:\Accounts\MT5\MQL\Files\MetaTrader 4.

MT5 создал папку C:\Users\[имя пользователя]\AppData\Roaming\MetaQuotes\Terminal\[длинный шестнадцатеричный номер]\MQL5\etc... и фактически запускается отсюда. Таким образом, MT5 записывает сделки где-то в этой папке.

Согласно оригинальной статье, MT4 должен быть "внутри" папки MT5. Поэтому решение заключается в том, чтобы сделать папку установки MT5 "ТАКОЙ ЖЕ", как и папка запуска. И самый простой способ заключается в следующем:

1. удалить все экземпляры MT5

2. Удалить папку 'Metaquotes' из C:\Users\[имя пользователя]\AppData\Roaming\

Теперь мы сделаем папку install такой же, как и папка run:

3. Переустановите MT5. Она не должна находиться в папке Program files, сделайте ее, например, C:\Accounts\MT5. Во время установки снимите флажок "запускать после завершения" (критический шаг).

4. Перед первым запуском MT5 щелкните правой кнопкой мыши на ярлыке MT5 на рабочем столе, выберите свойства, добавьте "/portable" в путь, без кавычек. Таким образом, это будет C:\Accounts\MT5\terminal.exe /portable. (Обратите внимание, что после terminal.exe стоит пробел, передняя косая черта, portable без заглавной буквы). Нажмите OK.

Теперь мы установим MT4, скопируем советники и запустим терминалы

5. Установите MT4 в папку C:\Accounts\MT5\MQL\Files\MetaTrader 4. (Обратите внимание, что название папки MetaTrader 4, или как там ее, должно совпадать с названием в советниках)

6. Скопируйте советники Translator и Copyist в соответствующие папки.

7. Запустите ведущий MT5 и ведомый MT4.

8. Наслаждайтесь!!!

Совет: Не переходите к следующему шагу, если что-то сделано неправильно.

Извините за использование "нетехнического" языка, это максимум того, что вы можете ожидать от доктора!

Спасибо, что нашли время написать это.

Другой способ - сохранить настройки установки по умолчанию и установить связь между двумя папками с помощью символической ссылки.

http://en.wikipedia.org/wiki/NTFS_symbolic_link

 

компилятор mql4++

это новая версия для приемника в mt4, с дополнительными параметрами?