[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Каким образом осуществляются запросы тестеру стратегий? Как, например, выполнить такую команду: “Запустить тест советника на определенном промежутке с определенным set файлом и, при завершении, сохранить отчет”

 
alsu:
С чужим кодом трудно разобраться вот так сразу... если навскидку - я бы проверил значения Imin,Imax,Jmin,Jmax в функии Neuron.Study() . На 0 эпохе в качестве lR передается значение 32, которое потом используется в индексировании (обычно таки индексируем массивы от 0 до size-1). Вполне возможно, что ошибка порылась именно здесь.

Действительно ошибка была связана с этими расчетами. Спасибо
 
alkador:

Каким образом осуществляются запросы тестеру стратегий? Как, например, выполнить такую команду: “Запустить тест советника на определенном промежутке с определенным set файлом и, при завершении, сохранить отчет”

Конфигурация при старте

Клиентский терминал может быть запущен с предопределёнными настройками. Для этого в качестве параметра клиентскому терминалу передаётся имя конфигурационного файла.

Например:

  terminal.exe config\start.ini
  terminal.exe test1.txt
  terminal.exe "C:\Program Files\MetaTrader 4\config\settings25.ini"

Если не указан полный путь к файлу (Drive:\SubDirectory\FileName), то поиск файла будет осуществляться в директории клиентского терминала. Конфигурационный файл содержит строки следующего вида:
[Параметр] = [Значение]

Комментарии начинаются с символа "точка с запятой" (;) и не обрабатываются.

Параметры конфигурационного файла можно разделить на несколько групп: общие настройки, настройки прокси-сервера (вкладка "Сервер" в таблице настроек терминала), настройки FTP (вкладка "Публикация" в таблице настроек терминала), настройки экспертов (вкладка "Советники" в таблице настроек терминала), настройки однократного запуска эксперта или скрипта, настройки запуска тестера стратегий.

Общие настройки

  • Profile - имя поддиректории в директории profiles. В клиентском терминале будут открыты графики в соответствии с указанным профилем. Если данный параметр не указан, то будет открыт текущий профиль.

  • MarketWatch - имя файла (каталог \symbolsets), в котором содержится список инструментов для отображения в окне обзора рынка. Такой файл может получить при помощи команды контекстного меню окна "Обзор Рынка - Набор символов - Сохранить как".

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

  • Password - пароль для входа в систему. Этот параметр будет проигнорирован, если клиентский терминал хранит личные данные на диске и подключаемый номер счета содержится в списке.

  • Server - имя торгового сервера, к которому должно быть произведено подключение. Имя сервера совпадает с именем соответствующего srv-файла, хранящемся в директории config. Этот параметр будет проигнорирован, если информация о подключаемом аккаунте сохранена на диске.

  • AutoConfiguration - "true" или "false" в зависимости от того, должна ли быть включена настройка автоконфигурации. Если данный параметр отсутствует, то будет использовано значение из текущих настроек сервера.

  • DataServer - адрес датацентра. При включенной автоконфигурации сервера эта запись может быть проигнорированна. Если данный параметр отсутствует, то будет использовано значение из текущих настроек сервера.

  • EnableDDE - "true" или "false" в зависимости от того, должен ли быть включен DDE-сервер. Если данный параметр отсутствует, то будет использовано значение из текущих настроек сервера.

  • EnableNews - "true" или "false" в зависимости от того, должен ли быть разрешен прием новостей или нет. Если данный параметр отсутствует, то будет использовано значение из текущих настроек сервера.

Пример:

  ; common settings
  Profile=test 3
  MarketWatch=set2.set
  Login=12345
  Password=xxxxxx
  Server=MetaQuotes-demo
  AutoConfiguration=false
  DataServer=192.168.0.1:443
  EnableDDE=true
  EnableNews=false

Настройки прокси-сервера

  • ProxyEnable - "true" или "false" в зависимости от того, должен ли использоваться прокси-сервер для связи с торговым сервером.

  • ProxyServer - адрес прокси-сервера.

  • ProxyType - тип прокси-сервера. Может принимать значения "HTTP", "SOCKS4" или "SOCKS5".

  • ProxyLogin - логин для авторизации на прокси-сервере.

  • ProxyPassword - пароль для доступа на прокси-сервер.

Если какой-либо из перечисленных параметров отсутствует, то используются текущие настройки клиентского терминала (настройки прокси во вкладке "Сервер" в таблице настроек клиентского терминала).

Пример:

  ; proxy settings
  ProxyEnable=true
  ProxyServer=proxy.company.com:3128
  ProxyType=HTTP
  ProxyLogin=user45
  ProxyPassword=xxx

Настройки FTP

  • FTPEnable - разрешить/запретить публикации. Принимаемые значения "true" или "false".

  • FTPPassiveMode - включить/выключить пассивный режим передачи данных. Принимаемые значения "true" или "false".

  • FTPAccount - номер счета, данные о состоянии которого должны отсылаться на FTP.

  • FTPServer - адрес FTP-сервера.

  • FTPLogin - логин для авторизации на FTP-сервере.

  • FTPPassword - пароль для доступа на FTP-сервер.

  • FTPPath - имя каталога на FTP-сервере, в который помещается отчет.

  • FTPPeriod - периодичность отправки отчета на FTP-сервер в минутах.

Если какой-либо из перечисленных параметров отсутствует, то используются текущие настройки клиентского терминала (вкладка "Публикация" в таблице настроек терминала).

Пример:

  ; ftp settings
  FTPEnable=true
  FTPPassiveMode=false
  FTPAccount=12345
  FTPServer=ftp.company.com
  FTPLogin=admin
  FTPPassword=pAssWOrd123
  FTPPath=/inetpub
  FTPPeriod=10

Настройки экспертов

  • ExpertsEnable - включить/выключить экспертов.

  • ExpertsDllImport - разрешить/запретить импорт DLL.

  • ExpertsDllConfirm - включить/выключить ручное подтверждение вызова DLL-функций.

  • ExpertsExpImport - разрешить/запретить импорт функций из внешних экспертов или MQL4-библиотек.

  • ExpertsTrades - разрешить/запретить советникам торговать.

  • ExpertsTradesConfirm - включить/выключить ручное подтверждение совершения советником торговых операций.

Внимание: все параметры группы экспертов могут принимать значения только "true" или "false".

Если какой-либо из перечисленных параметров отсутствует, то используются текущие настройки клиентского терминала (вкладка "Советники" в таблице настроек терминала).

Пример:

  ; experts settings
  ExpertsEnable=true
  ExpertsDllImport=true
  ExpertsDllConfirm=true
  ExpertsExpImport=true
  ExpertsTrades=true
  ExpertsTradesConfirm=false

Настройки однократного запуска эксперта и/или скрипта

  • Symbol - название инструмента, график которого должен быть открыт сразу после старта терминала. После закрытия клиентского терминала информация об этом дополнительном графике не сохраняется. При повторном запуске терминала, без конфигурационного файла, этот график открыт не будет. Если данный параметр отсутствует, то никакой дополнительный график не открывается.

  • Period - период графика (M1, M5, M15, M30, H1, H4, D1, W1, MN). При отсутствии данного параметра используется H1.

  • Template - имя файла шаблона (каталог \templates), который должен быть применен к графику.

  • Expert - имя эксперта, который должен быть запущен после старта клиентского терминала. Эксперт запускается на графике, который открыт в соответствии с параметрами Symbol и Period. Если параметр Symbol отсутствует, то никакой дополнительный график не открывается, а эксперт запускается на первом графике текущего профайла. Если в текущем профайле нет графиков, то эксперт не будет запущен. Если этот параметр отсутствует, то никакой эксперт также не запускается.

  • ExpertParameters - имя файла с параметрами советника (каталог \experts\presets). Такой файл можно создать в окне свойств эксперта, нажав кнопку "Входные параметры - Сохранить". Обычно используется для хранения параметров, отличающихся от умолчательных. При отсутствии этого параметра используются параметры по умолчанию.

  • Script - имя скрипта, который должен быть запущен после старта клиентского терминала. Скрипт запускается по тем же правилам, что и эксперт (описано выше).

  • ScriptParameters - имя файла с параметрами скрипта (каталог \experts\presets). Этот файл формируется точно так же, как и для эксперта.

Пример:

  ; open chart and run expert and/or script
  Symbol=EURUSD
  Period=H4
  Template=popular.tpl
  Expert=MACD Sample
  ExpertParameters=macd.set
  Script=period_converter
  ScriptParameters=

Настройки запуска тестера стратегий

  • TestExpert - имя эксперта, который должен быть запущен на тестирование. Если этот параметр отсутствует, то никакое тестирование не запускается.

  • TestExpertParameters - имя файла с параметрами (каталог \tester). Такой файл можно создать в окне свойств тестируемого эксперта, нажав кнопку "Входные параметры - Сохранить" Обычно используется для хранения параметров, отличающихся от умолчательных. Другие параметры тестируемого эксперта из вкладок "Тестирование" и "Оптимизация" (а также из вкладки "Входные параметры" в случае отсутствия данного параметра) заполняются значениями, сохраненными автоматически в файле \tester\[имя эксперта].ini после последнего тестирования.

  • TestSymbol - название инструмента, на данных которого должно производиться тестирование эксперта. В случае отсутствия этого параметра используется последнее использованное в тестере значение.

  • TestPeriod - период графика (M1, M5, M15, M30, H1, H4, D1, W1, MN). При отсутствии данного параметра используется H1.

  • TestModel - 0, 1 или 2 в зависимости от модели тестирования (Все тики, Контрольные точки, По ценам открытия). В случае отсутствия этого параметра используется значение 0 (Все тики).

  • TestOptimization - включить/выключить оптимизация. Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false".

  • TestDateEnable - включить/выключить опцию "Использовать даты". Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false".

  • TestFromDate - дата начала диапазона тестирования в виде YYYY.MM.DD. В случае отсутствия этого параметра подразумевается 1970.01.01.

  • TestToDate - дата конца диапазона тестирования в виде YYYY.MM.DD. В случае отсутствия этого параметра подразумевается 1970.01.01.

  • TestReport - имя файла отчета тестирования. Файл будет создан в директории клиентского терминала. Можно указывать относительный путь, например: tester\MovingAverageReport". Если в имени файла отчета не указано расширение, то будет подставлено расширение ".htm". В случае отсутствия данного параметра отчет тестирования формироваться не будет.

  • TestReplaceReport - разрешить/запретить повторную запись файла отчета. Принимаемые значения "true" или "false". Если указано значение "false" и файл отчета с таким именем уже существует, то к имени файла отчета будет добавлен порядковый номер в квадратных скобках. Например, "MovingAverageReport[1].htm". В случае отсутствия этого параметра используется значение "false".

  • TestShutdownTerminal - разрешить/запретить вылючение терминала после тестирования. Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false". Если в процессе тестирования пользователь нажал кнопку "Стоп", то значение этого параметра сбрасывается в "false", так как пользователь принял управление на себя.

Пример:

  ; start strategy tester
  TestExpert=Moving Average
  TestExpertParameters=ma0.set
  TestSymbol=EURUSD
  TestPeriod=H1
  TestModel=2
  TestOptimization=false
  TestDateEnable=true
  TestFromDate=1970.01.01
  TestToDate=2006.06.06
  TestReport=MovingAverageReport
  TestReplaceReport=false
  TestShutdownTerminal=true

 
AndEv:
Подскажите. если кто знает, такой вопрос: нужен зацикленный скрипт который бы с периодичностью раз в 0,5 сек. "нажимал" кнопку "Обновление" на текущем графике с переинициализацией индикаторов. Попробовал сделать зацикленный скрипт с использованием WindowRedraw() и Sleep(500), но переинициализации индикаторов не происходит.
В этой библиотеке есть разные функции для управления МТ4. В том числе функции для обновления графика для экспертов и индикаторов. Есть даже автономные функции. Один раз запустил скрипт и всё. Он выгрузился, а графики продолжают обновляться пока МТ4 не выгрузишь.
 

Перенесено

Armen63 18.02.2012 14:47 |

Всем привет помогите пожалуйста Незнаю как реализовать.. может кто подскажет ? xocu chtobi v sovetnike obshee chislo sell ili buy orderov kontrolirovalos int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) tak ya kontroliruyu vse tipi orderov a nado po otdelnosti i dlya sell i dlya buy

 

to Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Здравствуйте, Уважаемые форумчане!

Недавно начал изучать mql4, решил написать своего советника.

Подскажите, как прописать в коде такое условие: если при последних трех поступивших цен ask, каждая последующая выше предыдущей (ask3>ask2>ask1), тогда выставить ордер buy

Надеюсь я понятно изложил мысль), если, что не так спрашвайте я уточню)

Буду очень признателен за помощь ))

 
например так
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
возможно я не прав-я только учусь
 
openlive:
например так возможно я не прав-я только учусь


Считаем что советник обрабатывает каждый тик, то тогда лучше сделать малость по другому

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}
Причина обращения: