Мой подход. Ядро - Движок. - страница 158

 
Artyom Trishkin:

Стоп. Вы же написали:

Так у кого там какая армия из чего состоит?

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

А что, потеряли чувство юмора, что-ли.

 
Vasiliy Sokolov:

К сожалению да. Интерфейс обратного вызова между двумя принципиально разными системами замутить не получится.

Собственно, вопрос был почти риторический)

ИМХО, с добавлением совместимости с NET, настоятельно назрела необходимость добавить в терминал колл-бэки. Хотя бы один) Хотя бы, пропихивающий событие в очередь терминала.

 
Artyom Trishkin:

Если через таймер, то как в тестере собрался работать? Ты ж вроде сказал, что кроссплатформенный код делаешь.

Артём, ну что за вопросы ? если таймер не работает, то он эмулируется от других источников..

это даже в "боевом роботе" всегда так, потому как EventSetTimer  :-) 

ps/ что-то заразительно потянуло в милитаристскую тематику..командные пункты, боевые роботы.."Галактеко опасносте"

 
Dmitriy Skub:

Собственно, вопрос был почти риторический)

ИМХО, с добавлением совместимости с NET, настоятельно назрела необходимость добавить в терминал колл-бэки. Хотя бы один) Хотя бы, пропихивающий событие в очередь терминала.

у меня не получилось в МТ5события отловить, почему то Spy++ не видит события чартов, видимо самописные классы и событийные модели используются, а не стандартные виндовские, в МТ4 без проблем можно виндовс событие отправить

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

Artyom Trishkin:

Если через таймер, то как в тестере собрался работать? Ты ж вроде сказал, что кроссплатформенный код делаешь.

в МТ5 таймер в тестере генерится без проблем, да и под C# одно удовольствие код писать - вызвал .dll, сразу запустил форму и в отдельный поток ( Thread )  всю графику и все, дальше только работаем с обменом данными между C# и МТ5, а графическая форма с кнопками сама по себе работает как обычное виндовское приложение - в запросе от МТ5 только состояние ранее кликнутых элементов передается, ничего не тормозит и не будет тормозить ;)

 
Maxim Kuznetsov:

Артём, ну что за вопросы ? если таймер не работает, то он эмулируется от других источников..

это даже в "боевом роботе" всегда так, потому как EventSetTimer  :-) 

ps/ что-то заразительно потянуло в милитаристскую тематику..командные пункты, боевые роботы.."Галактеко опасносте"

Дык... Я ж хотел у Василия узнать как он сделает. Дабы сравнить с тем, что я себе сам давно уже сделал (не без подсказок Василя конечно)

 
Igor Makanu:

у меня не получилось в МТ5события отловить, почему то Spy++ не видит события чартов, видимо самописные классы и событийные модели используются, а не стандартные виндовские, в МТ4 без проблем можно виндовс событие отправить

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

в МТ5 таймер в тестере генерится без проблем, да и под C# одно удовольствие код писать - вызвал .dll, сразу запустил форму и в отдельный поток ( Thread )  всю графику и все, дальше только работаем с обменом данными между C# и МТ5, а графическая форма с кнопками сама по себе работает как обычное виндовское приложение - в запросе от МТ5 только состояние ранее кликнутых элементов передается, ничего не тормозит и не будет тормозить ;)

Я делал в пятёрке через таймер в тестере. Даже простое его использование (а он - милисекундный мультитаймер) приводило к серьёзному замедлению тестера. Посему просто отказался от таймера в визуализаторе - там один фиг по тикам работать. Сделал две модели - по таймеру и по флагам событий через OnTick(). По таймеру в реалтайме, по тикам - в визуализаторе.

ЗЫ. Вру - три модели - ещё и через OnChartEvent() - там тоже только реалтайм.

 
Igor Makanu:

у меня не получилось в МТ5события отловить, почему то Spy++ не видит события чартов, видимо самописные классы и событийные модели используются, а не стандартные виндовские, в МТ4 без проблем можно виндовс событие отправить

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

в МТ5 таймер в тестере генерится без проблем, да и под C# одно удовольствие код писать - вызвал .dll, сразу запустил форму и в отдельный поток ( Thread )  всю графику и все, дальше только работаем с обменом данными между C# и МТ5, а графическая форма с кнопками сама по себе работает как обычное виндовское приложение - в запросе от МТ5 только состояние ранее кликнутых элементов передается, ничего не тормозит и не будет тормозить ;)

если ещё замутить Model на уровне MQL, а прочее на шарпее, то может совсем захорошеть. Тогда логика отдельно, вид отдельно. Фронтенд занимается дизайном с юзабилити и не лезет в торговый бэк. Смена конфигурации кнопок на форме или разделение формы на две-три ну никак не должно трогать алгоритмы советника

 
Vasiliy Sokolov:

Петр, если ты не возражаешь, я подготовлю статью, как на MQL можно достаточно просто создать графическое приложение, используя новую возможность интеграции с библиотеками .Net. Статья будет называться "Создание пользовательских форм в VisualStudio для торговых экспертов на базе .Net Framework и C#".

Твой подход и твои идеи раззадорили меня. Я задался вопросом: можно ли легко и быстро, обладая лишь базовыми возможностями в программировании, создать для своего эксперта графическую форму. Я провел эксперимент, и оказалось что можно! У меня получилась вот так формочка:

Идея была именно в том, что бы пользователь нарисовал нужную ему форму в редакторе VisualStudio, а вся необходимая работа по объединению этого окна с MQL кодом была бы выполнена "за кулисами", в автоматическом режиме. Для этого пришлось написать сферхкомпактный контроллер на C# - некий аналог твоего ядра, однако,  занимает он всего около 200 строк кода. 

О том, как все это работает вы сможете прочитать в статье, которую я начал.

Ну все, Василий, накрыл вядро медным тазом.

 
Dmitry Fedoseev:

Ну все, Василий, накрыл вядро медным тазом.

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

хотя шанс что подобная статья выйдет раньше чем ядро-движок 99%. Петру надо уложиться в остающийся процент

 
Artyom Trishkin:

Я делал в пятёрке через таймер в тестере. Даже простое его использование (а он - милисекундный мультитаймер) приводило к серьёзному замедлению тестера. Посему просто отказался от таймера в визуализаторе - там один фиг по тикам работать. Сделал две модели - по таймеру и по флагам событий через OnTick(). По таймеру в реалтайме, по тикам - в визуализаторе.

ЗЫ. Вру - три модели - ещё и через OnChartEvent() - там тоже только реалтайм.

я еще с дизайном не определился, проверил, что в тестере без проблем работает, спасибо @fxsaber помог с кодом #define - автоматически при подключении инклудника добавляю обработчики OnTick(), OnTimer()... поэтому могу в любой секции советника дооформить необходимые вызовы

хотя даже не пойму где тормозить то может? таймер юзаю довольно часто 400 мс, но вызов всего лишь получение из .dll 2-х массивов int по 10 эл-в и 2 int (сколько кнопок и сколько чекбоксов, такая размерность массивов), там просто физически ничего не может тормозить, ибо даже пишу в массивы если был клик по кнопкам ,а в инт номер кнопки передаю, массив в принципе не нужен, для подстраховки если у юзера нервы не  в порядке и он быстрее чем 0,5 сек будет мышей долбить кнопку )))

тут просто задачи у нас разные видимо, если речь идет об построении ТС, то графика не нужна, если речь идет об отладке и визуализации ТС, то тут скорость тестера не нужна ;)


Maxim Kuznetsov:

если ещё замутить Model на уровне MQL, а прочее на шарпее, то может совсем захорошеть. Тогда логика отдельно, вид отдельно. Фронтенд занимается дизайном с юзабилити и не лезет в торговый бэк. Смена конфигурации кнопок на форме или разделение формы на две-три ну никак не должно трогать алгоритмы советника

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

Причина обращения: