Автор Тема: Gelium_2MT  (Прочитано 6120 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« : 13 Декабря 2012, 12:12:07 »
Gelium_2MT - советник, выводящий ордера из TS в MT4 через передачу данных с помощью текстовых файлов.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #1 : 14 Июня 2016, 10:04:07 »
В текущей тестовой реализации объемы позиций фиксированные. Потом добавлю % от депозита. Рекомендую тестировать на демо. :)

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #2 : 15 Июня 2016, 11:07:30 »
Изменения:

1. p_Debug отключает запись лога в файл, чтобы не писалось много.
2. Для точного связывания в комментарий добавляется цена родительского ордера в ТС. С последним G_Trader исполнение будет происходить в МТ4 так же, как и в ТС.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #3 : 16 Июня 2016, 10:00:10 »
Исправил пару багов.
Дополнил чуть инструкцию. Кто читал раньше, может не перечитывать.

Bright777

  • Гость
Gelium_2MT
« Ответ #4 : 16 Июня 2016, 17:42:46 »
Gelium, здравствуйте!
Решаю задачу связки ТСЛаба с МТ4, в связи с этим вопрос:
не слишком ли много времени теряется на передаче параметров открытия ордеров в МТ через текстовик?

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #5 : 16 Июня 2016, 18:16:38 »
Gelium, здравствуйте!
Решаю задачу связки ТСЛаба с МТ4, в связи с этим вопрос:
не слишком ли много времени теряется на передаче параметров открытия ордеров в МТ через текстовик?

Смотря что считать большой потерей. Для меня пара секунд роли не играют. А для тикового скальпера это может быть критично.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #6 : 17 Июня 2016, 07:56:21 »
Сделал компактный лог для экрана и добавил параметр включения детального лога для вывода на экран.

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #7 : 29 Июня 2016, 19:17:45 »
Прилагаю Signals.exe - программа для создания и автоматического обновления файла Signals.txt. Распаковываете в каталоге с файлами сигналов и руками запускаете. Далее программа спросит какие файлы и с какими параметрами добавить в файл списка сигналов Signals.txt.

Добавил голосование в шапку на тему виртуалки.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #8 : 01 Июля 2016, 07:03:14 »
Исправил пару багов, приводивших к тому, что изменение объема позиций для новых ордеров не верно связывало ордера и позиции.
Начал делать торговлю процентом депозита, но не доделал. Поэтому RiscPrc пока пользоваться нельзя.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #9 : 01 Июля 2016, 11:31:43 »
Пишет недопустимый размер лота 0.0 хотя указано 0,01 ???

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #10 : 01 Июля 2016, 12:02:15 »
Пишет недопустимый размер лота 0.0 хотя указано 0,01 ???

Вместо 0,01 надо указывать 0.01 как написано в инструкции.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #11 : 01 Июля 2016, 13:26:27 »
Да, но это программа signals.exe создала текстовый файл именно с запятой Model_Xau.Signal lot 0,01 и смена запятой на точку тоже результата не даёт.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #12 : 01 Июля 2016, 16:32:47 »
Да, но это программа signals.exe создала текстовый файл именно с запятой Model_Xau.Signal lot 0,01 и смена запятой на точку тоже результата не даёт.

Интересный эффект. Добавил принудительную замену запятой, если вдруг она появится в объеме позиции. Версию с поправкой прилагаю.
А у себя ручками исправьте.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #13 : 01 Июля 2016, 16:40:57 »
С запятыми и точками это системный эффект винды в экселе есть настройки , что использовать по умолчанию для разделения разрядности , в винде не знаю . Я вот обновил до 10ки теперь эксперементирую , есть месяц на обкатку.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #14 : 06 Июля 2016, 08:09:17 »
Опять засада на 7ке 64x ордера выставлялись всё нормально , обновился до 10ки начались опять какие то непонятки. Не видит файл Signals.txt , хоть тресни. И интересным сюрпризом было , что альпари даёт теперь скачивать мт4 в каком то ущербном варианте без MQL и прочих каталогов , хорошо, что старый терминал оставил. Может кто поможет, 10ку сносить не очень хочеться. Или может это связано с обновлением терминала, странно я  даже не видел когда он обновился .

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #15 : 06 Июля 2016, 12:43:13 »
Скопируйте терминал со всем его содержимым в отдельную папку и запускайте оттуда.
С метаквотсовским  разбрасыванием терминала по куче каталогов будет одно мучение.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #16 : 06 Июля 2016, 13:27:23 »
Скопируйте терминал со всем его содержимым в отдельную папку и запускайте оттуда.
С метаквотсовским  разбрасыванием терминала по куче каталогов будет одно мучение.

Так в том то ,и дело что у меня всё куче лежит и ордер не выставляется, советник не реагирует на изменения файлов  . signals

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #17 : 06 Июля 2016, 14:50:33 »
Скопируйте терминал со всем его содержимым в отдельную папку и запускайте оттуда.
С метаквотсовским  разбрасыванием терминала по куче каталогов будет одно мучение.

Так в том то ,и дело что у меня всё куче лежит и ордер не выставляется, советник не реагирует на изменения файлов  . signals

Может не в той куче лежит signals.txt? У вас лог советника пишется туда же где и signals.txt лежит?

Gennadiy

  • Гость
Gelium_2MT
« Ответ #18 : 08 Июля 2016, 06:05:40 »
Скопируйте терминал со всем его содержимым в отдельную папку и запускайте оттуда.
С метаквотсовским  разбрасыванием терминала по куче каталогов будет одно мучение.

Так в том то ,и дело что у меня всё куче лежит и ордер не выставляется, советник не реагирует на изменения файлов  . signals

Может не в той куче лежит signals.txt? У вас лог советника пишется туда же где и signals.txt лежит?
Спасибо , разобрался . Это путаница с 64 битной системой, не стал всё это разгребать поставил 86 и всё .Всё работает, спасибо.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #19 : 11 Июля 2016, 15:51:43 »
Очередная версия:

1. Добавлены параметры для включения отправки уведомлений через терминал на email и Push-уведомления:

p_SendNotification = false;    // Отправлять уведомление на мобильный через SendNotification
p_SendMail = false;            // Отправлять уведомление на электронную почту

2. Если в TS открыта позиция Buy, а в МТ нет из-за малого спреда, ордер должен либо висеть вечно,  либо отмениться по таймауту или из-за закрытия исходной позиции в TS. Для контроля этой ситуации добавлены параметры:

p_KeepOrder = true - если позиция уже есть в TS и она соответствует отложенному ордеру в MT, то ордер оставить до исполнения, либо отменить по p_KeepOrderTime. Если p_KeepOrder = false, ордер будет сразу же отменен.

p_KeepOrderTime = 0 - если ноль, то ордер висит до исполнения, в противном случае в p_KeepOrderTime задается число минут с момента установки ордера, которое отводится на его исполнение.

3. Связывание ордеров TS-MT4 теперь идет только по комментарию. Связывание позиций по комментарию и OpenDelta. Иначе возникает путаница.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #20 : 11 Июля 2016, 17:32:23 »
Доработки:

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

2. Неправильно обрабатывалась ситуация когда не все нужные позиции открыты c правильным комментарием и надо менять параметры позиций по OpenDelta: при поиске может находиться по дельте одна подходящая позиция для двух разных изменений.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #21 : 12 Июля 2016, 15:01:07 »
Добавлен параметр:

p_SymbolRightPrefics = "" - сюда надо вписывать регистрозависимый префикс, который некоторые ДЦ добавляют к символам справа. Например, для символа EURUSD.r надо вписать .r без кавычек.

Gennadiy

  • Гость
Gelium_2MT
« Ответ #22 : 12 Июля 2016, 20:13:16 »
С настройками по умолчанию не выставляет опять ордера. Советник не реагирует на изменения в файле .signals висит в сосотоянии working... лог опять куда то пишется непонятно где. В списке signals.txt указал две пары перед обновлением и теперь непонятно как этот хвост подчистить.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #23 : 13 Июля 2016, 04:20:38 »
С настройками по умолчанию не выставляет опять ордера. Советник не реагирует на изменения в файле .signals висит в сосотоянии working... лог опять куда то пишется непонятно где. В списке signals.txt указал две пары перед обновлением и теперь непонятно как этот хвост подчистить.

В файлах сигналов нет указаний на установку ордеров.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #24 : 13 Июля 2016, 04:23:44 »
Исправлена ошибка, проявлявшаяся при работе с ДЦ с правым префиксом и добавлен учет изменений комментария ДЦ, когда в начало комментария ДЦ дописывает свою служебную информацию.

МТ4 - это какой-то цирк. Покупатель софта использует комментарии, чтобы хоть как-то сохранить информацию для своей бухгалтерии. Дурдом.
;D

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #25 : 14 Июля 2016, 14:58:00 »
Изменения:

1. Добавлен параметр p_StartTimeOut = 90 - число секунд, которое отводится для генерации сигналов с момента запуска терминала, чтобы ордера сразу после запуска терминала тупо не удалялись с последующим восстановлением.

2. Новый G_Trader генерит файл-флаг Signal.Flag, чтобы терминал сразу же обработал файлы сигналов, а не ждал ничего не делая p_WorkPause-секунд.

3. Мелкие улучшательства.

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #26 : 28 Июля 2016, 21:07:47 »
Связывание по комментарию переделано на поиск подстроки, чтобы изменения комментариев разными ДЦ не нарушало связывание позиций и ордеров. А то разные ДЦ то перед комментарием сигнала что-то вставляют, то после.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #27 : 28 Июля 2016, 21:17:24 »
Терминал MT4 иногда висит "на связи" без "связи". Все работает, котировок нет. Поэтому его надо контролировать и перезапускать. Последняя версия советника обновляет файл-флаг MQL4\Files\Work.flag. Если файл не обновляется, Restart_MT перезапускает терминал. Restart_MT прилагаю. Распаковать архив надо в каталоге MT4\MQL4\Files. В файле Restart_MT.ini надо прописать в строку Profile=ProfileName имя вашего рабочего профиля. Прибить Restart_MT можно батником Restart_MT_stop.bat. Если надо контролировать несколько терминалов, то во втором терминале файл terminal.exe надо переименовать в terminal1.exe, чтобы перезапускался нужный терминал.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #28 : 05 Августа 2016, 11:25:25 »
Поправки:

1. Добавил проверку установки ордера в пределах спреда. В этом случае делается пауза и повторная проверка наличия позиции или ордера, чтобы избежать ситуации дублирующего ордера когда терминал еще не знает, что позиция по ордеру уже отрыта и сообщает советнику ложную информацию об отсутствии и ордера, и позиции.

2. Исправил проверку уже закрытой позиции, чтобы ордер не ставился повторно в течение текущего бара.

3. Мелкие разные поправки.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #29 : 24 Августа 2016, 08:19:29 »
Поправки:

1. Если Restart_MT по ошибке запущен не из того каталога, будет сообщение о том, что файл терминала не найден.
2. Если произошло обновление теминала, terminal.exe будет автоматом переименован в terminalX.exe.
3. Добавлен Restart_MT_Config.exe для задания интервала выходных, чтобы терминал не перезапускался на выходных без нужды.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #30 : 05 Октября 2016, 09:55:53 »
Мелкие поправки, компактный лог с записью в файл только когда есть изменения.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #31 : 24 Октября 2016, 07:47:09 »
Исправлено обнуление стопа и лимита для позиций, если стоп или лимит были временно установлены по цене возможной встречной позиции.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #32 : 23 Декабря 2016, 12:20:59 »
Добавлено сохранение хэндла главного окна терминала для рестартера, чтобы терминал перезапускался через более безопасное заrрытие приложения. Советнику необходимо разрешить импорт функций из DLL.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #33 : 18 Января 2017, 08:55:41 »
В советник добавлена функция импорта объема позиции из TradeStation. В файл p_Signals новые версии G_Trader будут сохранять объем позиций:

bar 2016.06.07 1800 60 ver 1
order xau buy ont 1233.2 stop 1206.8 limit 1281.2 volume 10
pos xau sell ont 1232.8 stop 1259.2 limit 1184.8 volume 10
end

В файле Signals.txt можно указать, что надо использовать этот объем:

Signal_4.Signal volume 0.5
Signal_3.Signal volume

После слова volume указывается коэффициент для умножения объема позиций из TradeStation на этот коэффициент. Например, если экспортируется ордер «order xau buy ont 1233.2 stop 1206.8 limit 1281.2 volume 10», то объем позиции с коэффициентом 0.5 будет равен 5. Выше для Signal_3.Signal коэффициент не указан. В этом случае в качестве коэффициента будет использоваться параметр советника p_VolumeKf.

Параметр советника p_VolumeKf - это коэффициент коррекции объема позиции из TradeStation. Используется в том случае, если коэффициент не задан явно в файле Signals.txt.

Запись объема в файлы сигналов будут делать новые версии G_Trader.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #34 : 18 Января 2017, 09:34:06 »
Для правильного экспорта торговых объемов с заданной даты можно использовать параметр стратегии p_TradeStart. Параметр p_StartDate задает дату начала работы стратегии. Начало работы стратегии должно быть раньше начала экспорта сигналов, чтобы стратегия смогла накопить нужные данные для генерации сигналов.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #35 : 27 Февраля 2017, 12:29:05 »
Изменения в новой версии:

Если имя файла содержит окончание "-limit", ордера ставятся только лимитные. Из имени сигнала окончание "-limit" в комментарии убирается. Например, для файла srb-xau-limit.signal советник будет ждать пробоя заданного уровня и только потом поставит ордер на вход. Для того, чтобы ордер был поставлен максимально быстро, необходимо p_WorkPause поставить 1 или 0, чтобы пауза проверки возможности установить ордер была минимальна. Естественно при такой настройке нужно включить компактный лог, иначе лог-файл будет огромным.

Голосование по теме актуальности советника для народа в шапке.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #36 : 27 Февраля 2017, 16:40:21 »
Изменения в новой версии:

Если имя файла содержит окончание "-mkt", вместо установки ордеров открываются позиции по рынку. Из имени сигнала окончание "-mkt" в комментарии убирается.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #37 : 06 Марта 2017, 16:37:27 »
Поправил баг, из-за которого не удалялось дополнение "-mkt" из комментария к позициям. Когда не будет позиций, можно обновить советник.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #38 : 24 Мая 2017, 15:11:05 »
Исправлен баг обработки файлов из двух строк без ордеров и позиций. Заблокирована возможность использовать сигналы с именами, которые могут быть подстрокой других сигналов. Улучшена установка work.flag для контроля терминала. Говёный MT4 мог час ставить ордер и контроль не срабатывал, так как work.flag обновлялся.

Павел

  • Гость
Gelium_2MT
« Ответ #39 : 06 Мая 2018, 17:09:11 »
тестирую связку ТС и МТ4
выдается такой ордер,
ila_rendered
 хотя в файле написано
bar 2018.05.04 2100 240 ver 1
order eurusd buy 3w 1.2558 stop 1.2492 limit 1.2928 volume 14
end
в каком направлении копать?



Павел

  • Гость
Gelium_2MT
« Ответ #40 : 08 Мая 2018, 06:17:36 »
оказалось нужно имя символа правильно сделать - а он eurusd.mm оказывается )))

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #41 : 08 Мая 2018, 14:02:25 »
Последняя версия с возможностью ставить ордера с одинаковым именем сигнала в файле сигнала. Есть ещё в плане доработки в плане удобств.

Павел

  • Гость
Gelium_2MT
« Ответ #42 : 14 Июня 2018, 08:59:42 »
У меня такая ситуация, ордер в МТ4 периодически отменяется, и потом еще раз ставиться.
Никак не соображу из-за чего это происходит.
А иногда не ставиться, и пишет -файл устарел

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #43 : 14 Июня 2018, 15:59:50 »
extern bool      p_KeepOrder = true;            // Если позиция есть в TS, но не сработал ордер, оставить его висеть
extern int       p_KeepOrderTime = 0;           // Время удержания ордера в минутах при наличии позиции только в TS: 0 - не отменять никогда
extern int       p_CancelTimeOut = 120;         // Время ожидания в секундах с момента установки ордера перед отменой возможно лишнего
                                                // ордера дублирующим компьютером.
                                                // Возможна ситуация когда дублирующий компьютер отстает с генерацией ордеров и начинает
                                                // отменять ордера, которые установил главный компьютер.

Гляньте эти параметры.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #44 : 23 Июня 2018, 16:03:24 »
Важно!

Текущая версия советника и G_Trader не рассчитаны для сигналов с частыми входами и малыми краткосрочными целями для которых могут быть критичны расширения спреда. Из-за невозможности учитывать плавающий ASK может происходить рассинхронизация работы стратегии в TS и MetaTrader. Проблему планирую решить. Когда это будет реализовано пока не знаю.

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #45 : 24 Марта 2019, 11:02:16 »
Изменения в прилагаемой версии:

1. Убран параметр p_KeepOrderTime. Во-превых, код работал не правильно. Во-вторых, ордер должен либо отменяться, либо висеть до исполнения. То есть, параметр с привязкой по времени не нужен.
2. Исправлена помарка, которая в общем-то роли не играла и не влияла на закрытие позиций по рынку при работе с -MKT.


Оффлайн ihaar

  • Подписчик сайта+
  • *
  • Сообщений: 1 075
    • Просмотр профиля
Gelium_2MT
« Ответ #46 : 17 Декабря 2021, 15:09:31 »
приветствую
хочу для подстраховки иметь связку Multicharts > mt4
реально ли это сделать используя вашу реализацию?
можно ли попросить описать логику создания текстовика, чтобы генерировать его мультом хотя бы для базовых действий: открытие ордера и закрытие этого ордера в мт просто по маркету.
был бы очень признателен   :D

Оффлайн Gelium

  • Администратор
  • Сообщений: 8 574
    • Просмотр профиля
    • Gelium.net
Gelium_2MT
« Ответ #47 : 18 Декабря 2021, 07:23:59 »
приветствую
хочу для подстраховки иметь связку Multicharts > mt4
реально ли это сделать используя вашу реализацию?
можно ли попросить описать логику создания текстовика, чтобы генерировать его мультом хотя бы для базовых действий: открытие ордера и закрытие этого ордера в мт просто по маркету.
был бы очень признателен   :D

Отправил на почту.