Пожелания к MQL5 - страница 90

 

Сейчас нельзя поставить фильтр на позиции только определённого символа. То есnь приходиться перебирать все ордера.

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

Например такой код

for(Ord = 0; Ord < OrdersTotal(); Ord++) {
   OrderSelect(Ord, SELECT_BY_POS);
   if(Symbol() == OrderSymbol() && StringFind(OrderComment(), "MA-Price") != -1) {
      IsOrdFound = true;
      break;
   }
}
А хотелось бы фунцию для установки фильтра по символу

OrderSelectSymbol(Symbol());

for(Ord = 0; Ord < OrdersTotal(); Ord++) {
   OrderSelect(Ord, SELECT_BY_POS);
   if(StringFind(OrderComment(), "My comment") != -1) {
      IsOrdFound = true;
      break;
   }
}



Или если теперь будет объектный язык, то что то типа такого варианта:

OpenedOrdGroup ordGroup = new OpenedOrdGroup(Symbol());

for(ord = 0; ord < ordGroup.count; ord++) {
  if(findSubstr(ordGroup.orders[ord].comment, "My comment") != -1) {
     isOrdFound = true;
     break;
  }
}
 
stringo писал(а) >>

Стоит, правда, упомянуть о том, что пользовательские индикаторы могут выполнять чисто вычислительные задачи и не имеют доступа ни к каким окнам и ни к каким графическим объектам.

А.. можно ли такой "вычислительный" индикатор запустить вне всех окон? (например, чтобы он отслеживал IsExpertEnabled и подобное и сообщал кому надо)

Может ли он рисовать? Можно ли его циклить?

Может ли он вызывать/выгружать эксперты, скрипты, устанавливать/снимать стандартные и пользовательские индикаторы?

 
SK. писал(а) >>

А.. можно ли такой "вычислительный" индикатор запустить вне всех окон? (например, чтобы он отслеживал IsExpertEnabled и подобное и сообщал кому надо)

Может ли он рисовать? Можно ли его циклить?

Может ли он вызывать/выгружать эксперты, скрипты, устанавливать/снимать стандартные и пользовательские индикаторы?

На все вопросы - нет, к сожалению

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

 

Спасибо, кое-что проясняется.

А есть какой-то способ запустить хоть что-нибудь, не привязанное к окну? (для общих нужд)

И можно ли из этого "что-нибудь" вызывать что-то другое? (эксперт по таймеру, например)

 
SK. писал(а) >>

Спасибо, кое-что проясняется.

А есть какой-то способ запустить хоть что-нибудь, не привязанное к окну? (для общих нужд)

И можно ли из этого "что-нибудь" вызывать что-то другое? (эксперт по таймеру, например)

Ничего, непривязанного к окну, не будет

Пока не могу ответить на этот вопрос.

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

 
stringo писал(а) >>

Ничего, непривязанного к окну, не будет

Пока не могу ответить на этот вопрос.

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

Спасибо за ответ.

Но нужно же, чтоб на этом графике висел эксперт. Далеко не всегда эти эксперты будут синхронизированы (без спец. возможностей - никогда).

В моём случае речь идёт о пользовательской (прикладной) сервисной программе. Среди задач, например, тех. анализ, свечной анализ, пользовательские агоритмы обработки позиций. Например, нажал кнопку (в сист. меню) - на текущий экран отрисовался свечной анализ. Нажал другую - вышло окно, в ктором можно задать предпочтения по SL и ТР для текущего окна. Нажал третью - по всем позициям пооткрывались стопы (там, где их нет; хорошо перед новостями) в соотв. с предпочтениями и текущими настройками брокера. Ещё кнопку - отрисовался коридор минимальной дистанции.. И т.д. И всё взаимозавязано по свободным средствам, по вероятности успеха операции по разным фин. инстр., со своими предпочтениями, приоритетами, цельным анализом и пр.

Эта задача в целом не предполагает множество копий одного эксперта во всех окнах. Такая программа может быть "одна на всех, мы за ценой не постоим". Могла бы быть. На текущий момент я просто не знаю возможностей МТ5..

 
Сделайте взаимодействие с БД MySql
 
stringo писал(а) >>

Ничего, непривязанного к окну, не будет

Пока не могу ответить на этот вопрос.

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

1. Жаль, однако. // насчёт непривязанных прог.

Как достаточно (имха) дешёвый по реализации компромисс: может быть стоит сделать что-то типа "нулевых" графиков,

на который можно навешивать вычислителей? Причём лучше неограниченное количество таких графиков, поскольку в

этом месте подозреваю наследование MT4-ограничения "один график - один эксперт"... :)

2. Насчёт событий. Пользовательские события - эт замечательно. Прямо таки большое человеческое спасибо. :)

Уже порадовался просматривая Тетриса событию OnTimer и вообще появлению событийной организации запуска

функций. И вот хотелось бы в этом месте поммедленнеее и ппопподдробббнеее :)

Какие ещё существуют-планируются "стандартные" (платформенные) события рассылаемые пользовательским прогам?

Мне вот, например, очень давно очень хочется что-то типа OnPositionIsClosed(int ticket) - дабы не перебирать всю пачку

открытых ордеров в поисках возможно (не факт!) только что закрытого по стопу ордера. Даже в четверке по моему

несложно добавить кроме стандартных Init()-Deinit()-Start(), ещё и OrderStopped() - терминал же всё равно отслеживает

закрытие ордеров чтоб отобразить изменение ситуации в окнах. Ну почему б и пользовательские программы не

проинформировать? А уж сколько благодарности бы от пользователей хапнули... - гарантирую. :)

В идеале вообще было бы здорово иметь (в MT5) общий для всей платформы менеджер событий, с возможностью для

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

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

 

Уважаемые, разработчики!

Просто необходимо при просмотре MODE_HISTORY добавить опцию для ордера - как закрыт ордер, например:

- StopLoss;

-TakeProfit;

- По рынку и .т.д.

В некоторых банках, использующих платформу MQ4, при переходе через 0 закрывают все ордера и открывают новые(само по себе это не ново).

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

Чем больше кода-тем меньше надежность!

.

P.S. Возможно это уже обсуждалось, но я не видел и решил поделиться наболевшим.

 
VBAG писал(а) >>

В некоторых банках, использующих платформу MQ4, при переходе через 0 закрывают все ордера и открывают новые(само по себе это не ново).

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

Так и есть.

Мало того, для этой ситуации однозначного ШТАТНОГО метода идентификации ордеров вообще не предусмотрено. Например ДЦ при этом недолго думая назначает новые тикеты никак не связанные

с исходными, просто по списку :) Чтоб отследить историю каждого ордера приходится изгаляться нипадецки.

Однако в МТ5 работа с ордерами похоже изменится весьма радикально (см. 'Клиентский терминал MetaTrader 5'),

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

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

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