date_range Добавлено: 04.02.2014

date_range Обновлено:

remove_red_eyeПросмотров: 16735

dashboardКатегория: Терминал МТ4 и МТ5

cloud(600-604-608), советниками., мт4, 6хх, терминал, проблем, Новый, решение





Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками.

Описание

3 февраля официально вышел новый терминал Метатрейдер 4 (MetaTrader 4) с абсолютно новым движком как самого терминала, так и языка программирования. За 1 неделю после выхода 578 билда - компания MetaQuotes обновила терминал до 604 билда. 
 
Советники, ранее работавшие на терминале 509 билда - требуют тщательного вмешательства в свой код. Некоторые советники и индикаторы перестали работать? Не беда! Мы раскроем некоторые секреты редактирования старого кода, использования старых советников на новом билде, и собственно, покажем, как пользоваться новым терминалом. 
Как запустить советник на новом терминале, как исправить ошибки советника в новом билде, как установить советник в новый билд, как вернуть старый мт4 билд 509 - все это мы расскажем в нашей статье
 
 
 
 
 
 

Введение:

 
   90% пользователей терминала стали жаловаться на то, что новый билд терминала не "допилен" не "доделан" не "совершенен". Большинство стали жаловаться на головную боль, головокружение и рвоту, вызванную новыми событиями в мире трейдинга на терминалах компании MetaQuotes , но зачем?  
   
   Ведь компания старается во благо нас, трейдеров. И наконец таки, в новом МТ4 мы получим возможности, которые раньше казались только сказкой. Впредь можно разрабатывать сложные торговые системы, которые будут в десятки раз работать быстрее и четче. Новые панели управления прямиком на графике(Раньше это можно было сделать только с помощью сторонних библиотек) 
  
   Например наша программа VirtualTradePad v7.0 работавшая на терминале старых образцов, запускала отдельную программу на компьютере, и управляла сделками через файл данных. Теперь же мы разработали новую панель VirtualTradePad EXTRA для управления сделками в ручном режиме. Которая работает прямиком в терминале, не запуская при этом сторонний софт и не задействуя файлы данных. 
   
   Кроме того, в новом терминале теперь присутствует ООП, дополнительные функции, распределение торговых приказов,создание кнопок, тестирование индикаторов в тестере, маркет приложений с автоматическим обновлением и т.д. 
 
Тема про декомпиляцию по ссылке
 
   В связи с этим нововведением, появились некоторые проблемы в старых экспертах. Я постараюсь рассказать о самых важных изменениях и способах решения некоторых проблем. 
 
Важно: Советники, компилированные в старом 509 билде, не имея открытый код в папке нового терминала - будут работать на новом билде без вмешательства. Не перекомпилируйте свои советники на новый билд, Если не хотите иметь проблем с новыми ошибками. 
Удалите с папок терминалов все свои открытые коды, или перенесите их в другу папку. Чтобы терминал не компилировал его новым компилятором!!! 
 
Все советники с данного сайта - работают корректно как на новом билде так и на старом билде. 
 
  • У Вас не работает эксперт на новом билде?
  • Эксперт не появляется в навигаторе? 
  • Эксперт больше не запускается на новом билде?
  • В Вашем эксперте много ошибок? 
 
Тогда Вы попали по адресу!!!! 
 
 

Установка экспертов и индикаторов в новый терминал, порядок создания папок, и рабочая папка терминала 

 
   Новый терминал теперь работает с политикой безопасности Windows, что дает некоторые преимущества в безопасности. Но легче ли стало пользователям от этого? Где находятся Ваши эксперты на новом терминале? как вернуть папки в локальный вид? 
 
1. Папки экспертов и индикаторов поменяли свое название:
Раньше было:  Ваш терминал\experts
Сейчас стало:  Ваш терминал\MQL4\Experts
2. Рабочая папка теперь находится на системном диске в папке Пользователи. 
например C:\Users\Владислав\AppData\Roaming\MetaQuotes\Terminal\Common 
теперь все терминалы пишут свои данные именно на системный диск, дальше мы поговорим как вернуть локальные папки. 
 
 
Для того, чтобы узнать каталог Вашего терминала необходимо сделать следующее:
  •  Откройте Ваш терминал
  •  Слева вверху - меню файл 
  •  Открыть каталог данных
Эта папка, в которой находятся все Ваши скрипты и советники. 
 
 
 
3. В папках экспертов, например Experts теперь можно создавать подпапки. 
например Ваш терминал\MQL4\Experts\Expforex, в которой можно складывать советники от отдельного программиста. В навигаторе в свою очередь - также будет иерархия папок и подпапок. 
 
 
 
4. Локальные папки 
Для того, чтобы сделать Вашу папку локальной, т.е. иметь прошлый вид своих экспертов и индикаторов, для того чтобы папка ваших экспертов находилась в папке вашего терминала, необходимо проделать несколько вещей (Вариант по выбору). 
  • Запустить терминал от администратора 
 
 
  • Непосредственно на ярлыке к терминалу прописать следующие команды:
1. "D:\Forex\FX Start\MetaTrader4\terminal.exe" /portable - если в пути до проги есть пробелы 
2. D:\Forex\Alpari\MetaTrader4\terminal.exe /portable - если пробелов в пути до файла нет 
Таким образом общая схема такая - Путь до терминала+ пробел + "/" + ключ (portable)...
 
 
 
5. Автоматическое перемещение старых советников 
Советники, которые ранее находились в старых папках - автоматически при включении терминала будут перемещаться в новые папки. 
 
6. Если Ваши советники не работают например с интернетом, Или же пишут ошибку
Alert: Ошибка при вызове InternetOpenUrlW()
Alert: Ошибка при вызове InternetOpenW()
 
А также если ВЫ не хотите каждый раз запускать от Администратора, ВЫ можете поставить галочку - и терминал будет автоматически запускаться от администратора
 
 
Новый язык программирования, отличия от старого, решение некоторых проблем
 
     Новый язык программирования терминала МТ4 стал очень богатым. Он существенно расширил свои границы, здесь появились классы, ООП, графические элементы, новые операции с счетом, новые функции................................ Но и проблем с старым кодом здесь также присутствует. 
 
Для того, чтобы Вы понимали о чем идет речь, я создал советник, с наиболее частыми ошибками, которые вылазят при компиляции в новом билде. 
 
 
 
 
1. Названия переменных с вспомогательными символами например . (точка)
Все переменные которые имеют точку, или нижнее подчеркивание - теперь необходимо изменить на другое название. 
Былоextern int Test.dot=10;
Стало: extern int Testdot=10;
 
Былоextern int Test_dot=10;
Стало: extern int Testdot=10;
 
Ошибка, которая возникает при неправильном коде: '.' - semicolon expected
 
 
2. Задекларированных переменных теперь больше, и переменные, которые были названы именами новых функций - требует изменения имени. 
Былоextern double char=554.5;
Стало: extern double charnewexample=554.5;
 
Былоdouble new=10;
Стало: double neweample=10;
 
Ошибка, которая возникает при неправильном коде: 'char' - unexpected token или  'new' - name expected 
 
 
3. Каждая функция теперь должна иметь оператор возврата RETURN
Было
int Testreturnint()
  {
   int a;
   int b;
   if(a==b)return(1);
  }
Стало: 
int Testreturnint()
  {
   int a;
   int b;
   if(a==b)return(1);
   return(0);
  }
 
Было
bool Testreturnbool()
  {
   int a;
   int b;
   if(a==b)return(true);
  }
 
 
Стало: 
bool Testreturnbool()
  {
   int a;
   int b;
   if(a==b)return(true);
return(false);
  }
 
Было
void Testreturnvoid()
  {
   int a;
   int b;
   if(a==b)return;
  }
 
Стало: 
void Testreturnvoid()
  {
   int a;
   int b;
   if(a==b)return;
return;
  }
 
 
Было
string Testreturnstring()
  {
   int a;
   int b;
   if(a==b)return("43");
  }
Стало: 
string Testreturnstring()
  {
   int a;
   int b;
   if(a==b)return("43");
return("");
  }
 
Предупреждение, которое возникает при неправильном коде: not all control paths return a value
 
 
4. Функция switсh в качестве выражения может принимать только Целые числа
Если раньше через switсh можно было перебирать любые значения, то теперь данный оператор может принимать только целые числа в качестве сравнения, для того чтобы Ваша функция работала  дальше, Вам необходимо заменить ее на операторы сравнения if else
Было
int Testswitchdouble()
  {
   double k1=1.432;
   int y;
   switch(k1)
     {
      case 1.432:y=1;break;
      case 1.433:y=2;break;
      case 1.434:y=3;break;
     }
  }
Стало: 
int Testswitchdouble()
  {
   double k1=1.432;
   int y;
       if(k1== 1.432)y=1;
       if(k1==  1.433)y=2;
       if(k1==  1.434)y=3;
   return(y);
  }
 
Ошибка, которая возникает при неправильном коде: 'k1' - illegal switch expression type и  '1.432' - constant expression is not integral
 
5. Все переменные объявленные внутри функции, должны отличаться от названий глобальных переменных (Необязательно)
Предупреждение, которое возникает при неправильном коде: declaration of 'testvariable' hides global declaration 
 
6. Все переменные, должны соответствовать по типу в используемых функциях 
Если Вы выводите например Print или ищите строку StringFind или объект ObjectCreate Вы  должны соответственно писать правильный тип данной переменной, или переводить переменную в нужный тип
Было
int test=1;
Print(AccountNumber());
StringFind("Пример строки",test);
ObjectCreate(0,test,OBJ_LABEL,0,0,0);
Стало: 
int test=1;
Print((string)AccountNumber());
StringFind("Пример строки",(string)test);
ObjectCreate(0,(string)test,OBJ_LABEL,0,0,0);
 
В круглых скобках можно задать тип переменной, который будет конвертироваться автоматически 
 
Было
int    dg=MarketInfo(Symbol(), MODE_DIGITS);
Стало: 
double    dg=MarketInfo(Symbol(), MODE_DIGITS);
 
Ошибка или предупреждение, которые возникает при неправильном коде: the second parameter for StringFind function must be a string - возникает уже после компиляции эксперта
implicit conversion from 'number' to 'string'
possible loss of data due to type conversion
 
 
 
 
7. Сторонние библиотеки и функции , которые включают в себя передачу строк в DLL
Если в Вашем эксперте есть функции, которые имеют переменные стринг, в новом билде нужно переводить в юникод, Это не сложно. 
 
например:
Было
#import "wininet.dll"
int InternetOpenA(string sAgent,int lAccessType,
                  string sProxyName="",string sProxyBypass="",
                  int lFlags=0);
int InternetOpenUrlA(int hInternetSession,string sUrl,
                     string sHeaders="",int lHeadersLength=0,
                     int lFlags=0,int lContext=0);
#import
Стало: 
#import "wininet.dll"
int InternetOpenW(string sAgent,int lAccessType,
                  string sProxyName="",string sProxyBypass="",
                  int lFlags=0);
int InternetOpenUrlW(int hInternetSession,string sUrl,
                     string sHeaders="",int lHeadersLength=0,
                     int lFlags=0,int lContext=0);
#import
 
Ошибка , которые возникает при неправильном коде:  Error in call InternetOpenUrlA()
 
8. Жесткий поиск ошибок #property strict
установите данный код в начале Вашего советника, и Ваш советник выдаст кучу ошибок. Данные ошибки прошли жесткий отбор, и исправляя их Вы получите максимум скорости от Вашего эксперта. А также чистейший код советника
 
9. Все остальные  ошибки и предупреждения решаются в индивидуальном порядке. 
 
Как видите мы решили все вопросы с ошибками в течении 1 минуты Вашего времени. 
Спасибо за внимание. теперь окно ошибок выглядит так:
 

 
 

Решение индивидуальных проблем с советниками

 

Если у Вас не работает эксперт или индикатор на новом билде, не появляется в навигаторе, не показывает значения или работает неправильно, ВЫ можете обратиться в наш форум. Все просьбы по изменению ошибок и советников будут удовлетворятся в порядке свободного времени. Если у Вас срочный заказ,  Вы можете обратиться в наш раздел Программирования и подать нам заявку, решение проблем в таком случае платное. И стоимость исправления ошибок на новом билде зависит от количества ошибок.  
 
 
Как вернуть 509 билд и запретить обновление на новый терминал МТ4
 
Если у Вас все же появляются проблемы с терминалами нового поколения МТ4 и вы не в состоянии справится с ошибками своих экспертов, Вы можете вернуть свой терминал до последнего "нормального" билда 509 одним из нижеперечисленных способов. 
 
1. Включить контроль учетных записей. Это противоположная операция по отключению UAC 
(Отключить UACВ таком случае, терминал перед обновлением должен спросить Вас о разрешении. Но это касается только если Ваш терминал находится на системном диске. (Не у всех работает)
 
Скачать можно по ссылке.
 
  • Распакуйте резервную копию в нужном вам каталоге (предпочтительно за пределами «C:\Program Files\»), а затем скопируйте в нее все необходимые вам советники, пользовательские индикаторы, а также файлы с расширением .srv в папку «config», которая содержит IP адреса серверов интересующих вас брокеров.
  • По завершению дважды щелкните файл «terminal.exe». Первый раз, когда вы будете это делать, система запросит у вас «Login», «Password», and «Server» (не забудьте поставить галочку в окошке «Save account information»). После этого вы снова будете работать на МТ4 Build 509.
 
Для того чтобы сделать 509 билд нашего терминала для любого ДЦ
ИНФОРМАЦИЯ НЕ АКТУАЛЬНА! СТАРЫЕ ВЕРСИИ ТЕРМИНАЛА БОЛЬШЕ НЕ ПОДДЕРЖИВАЮТСЯ:
  • Устанавливаем мт 605+ (или любого билда) своего ДЦ.
  • Открываем папку нового билда
  • Копируем с новой папки терминала папку config в наш старый билд 509 с заменой файлов
  • Удаляем содержание папки config другого ДЦ и вставляем свой config. И еще ярлык terminal — значок.
3. Удалить все, что находится в папке C:\ProgramData\MetaQuotes\WebInstall , при чем удалять придется каждый раз когда Вы запускаете свой старый терминал. 
Для того чтобы терминал не успел обновится до нового билда, Вам необходимо зайти в Ваш каталог терминала, и открыть свойства каждого из трех файлов :
 
  • terminal.exe
  • metalang.exe
  • metaeditor.exe
 
Правой кнопкой на файле - Свойства - Вкладка Безопасность - Изменить *(пример показан на рисунке):
 
При этом новый терминал также может начать скачивание обновлений, и если после перезапуска терминала у Вас терминал открывается - и сразу закрывается - снова повторите пункт
 
3. Удалить все, что находится в папке C:\ProgramData\MetaQuotes\WebInstall , при чем удалять придется каждый раз когда Вы запускаете свой старый терминал. 
 
4. В поиске по своему компьютеру пишем mt4clw и liveupdate и удаляем данные службы МТ4

Здесь можно скачать Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками.
Купить Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. можно здесь - Прочитать о Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. можно здесь - Обсуждение Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - стейты, отзывы, комментарии - Отзывы о Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Настройки к Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Мониторинг Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Download Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Buy Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Read about Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Discusion of Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Comments of Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Settings Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Monitoring Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. - Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. скачать бесплатно - Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. ключ - Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. открытый код - Новый терминал МТ4 6хх (6 600-604-605-608-610-616-618) Решение проблем с советниками. скачать
-