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

 
Реter Konow:

Скорее, я критичен к своему труду. Поэтому совершенствую все время. 

Анатолий молодец. Спору нет. Библиотека хороша. 

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

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

Вопрос на вопрос: Можете описать, зачем нужно то окно, и как оно помогает в полуавтоматическом трейдинге?

 
Реter Konow:

Вы зачем гуи-библиотеку писали?

Работа с графически объектами и в МТ4 наиболее трудозатратна. Надо не только создать объект, но и кучу свойств установить. Для упрощения работы с графическими объектами у меня было несколько функций, позволяющих быстрого создавать некоторых графические объекты. Когда появился МТ5, в нем у всех графических объектов свойств еще больше, количество параметров у функций возрастало на столько, что они выглядели глупо. Поэтому возник вопрос - как упросить работу с графическими объектами в новых условиях. Поскольку ООП появился, то рассматривалось и его применения. В результате сначала возник класс для быстрой работы с одним графическим объектом. Потом возникла идея создать несколько составных элементов. Идея мне понравилась и я написал первую статью - как создать свои элементы управления. Все пошло как-то так гладко, и за 2-3 недели занимаясь в свое удовольствие было создано несколько элементов управления подобных стандартным и получилась библиотека, ее описание во второй статье. Третья статья - формы, но она скорее формальная для комплекта, решил завершить библиотеку, а для этого формы напрашивались. Но с формами неудачно вышло, не додумался тогда, как сделать хорошо. Сейчас, конечно, знаю как.  Еще, тогда не было событий движения мыши, поэтому скрол-бары странненькие и форма перетаскивается необычным способом. Что касается форм - вместо того что бы подсказать, взяли и предали анафеме. А там совсем немного работы, что бы библиотека была очень удобной. Даже возникают мысли доработать ее, переделать скрол-бары, перетаскивание форму, да и саму форму сделать по другому, что бы не копировать заготовку класса, а создавать объект и к нему цеплять контролы.  

 
Vitaly Muzichenko:

Вопрос на вопрос: Можете описать, зачем нужно то окно, и как оно помогает в полуавтоматическом трейдинге?

Полуавтоматический трейдинг, это такая же непонятная и материально вредная "хрень", что и полностью автоматический или ручной.

Просто еще вид трейдинга, который может заинтересовать трейдеров.

 
Artyom Trishkin:

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

Вопрос в том - как этим пользоваться? Надо прочитать 50 статей? И при этом она называется "простая и быстрая", как парадоксально.

 
Dmitry Fedoseev:

Вопрос в том - как этим пользоваться? Надо прочитать 50 статей?

Я как-то всё быстро понял - без статей. Читал их конечно - вышла, прочитал с мобильного. Для понимания что там описывается. А вот создание и работа с объектами там проще, чем у Петра. Создали в OnInit() нужное количество объектов с описанием свойств и пользуемся сообщениями от них в OnChartEvent() - если вкратце. Обычная событийная модель.

Я его библиотеку перелопатил потом под себя - сделал кроссплатформенной, добавил сохранение значений всех создаваемых объектов чтобы не сбрасывались в исходное состояние при переинициализации, добавил звуки на многие взаимодействия с объектами (задаваемые по умолчанию и индивидуально, и отключаемые - чтобы не звякало и дзынькало постоянно), побаловался и забросил - есть свои идеи. Библиотека Анатолия не позволяет создать объекты налету, посредством new из программы, не позволяет сделать активным более одного окна... В общем - есть куда развивать. Но это уже к нему вопрос. Или к самому себе - сделать то, что необходимо для своих нужд, и со всеми требуемыми объектами и возможностями их использования.

 
Artyom Trishkin:

Я как-то всё быстро понял - без статей. Читал их конечно - вышла, прочитал с мобильного. Для понимания что там описывается. А вот создание и работа с объектами там проще, чем у Петра. Создали в OnInit() нужное количество объектов с описанием свойств и пользуемся сообщениями от них в OnChartEvent() - если вкратце. Обычная событийная модель.

Я его библиотеку перелопатил потом под себя - сделал кроссплатформенной, добавил сохранение значений всех создаваемых объектов чтобы не сбрасывались в исходное состояние при переинициализации, добавил звуки на многие взаимодействия с объектами (задаваемые по умолчанию и индивидуально, и отключаемые - чтобы не звякало и дзынькало постоянно), побаловался и забросил - есть свои идеи. Библиотека Анатолия не позволяет создать объекты налету, посредством new из программы, не позволяет сделать активным более одного окна... В общем - есть куда развивать. Но это уже к нему вопрос. Или к самому себе - сделать то, что необходимо для своих нужд, и со всеми требуемыми объектами и возможностями их использования.

Объекты то наверно можно создавать через new, не может быть, что бы нельзя, или неужели нельзя? А вот создание форм - такое же тупое как у меня, да и в стандартной библиотеке тоже так же - копировать заготовку формы надо. Что интересно меня так критиковали, аж почти анафеме придали за мои формы, а сами-то никуда не сдвинулись с той точки.

 

вот это темп..вот это скорость !

пока переместился на 60 км, в тему накидали 15 страниц. Итого 1 страница на 4(!!) км ;-)

когда уж тут Петру двигать ядро и ядрить движок..некогда ему

 
Dmitry Fedoseev:

Объекты то наверно можно создавать через new, не может быть, что бы нельзя, или неужели нельзя? А вот создание форм - такое же тупое как у меня, да и в стандартной библиотеке тоже так же - копировать заготовку формы надо. Что интересно меня так критиковали, аж почти анафеме придали за мои формы, а сами-то никуда не сдвинулись с той точки.

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

Т.е., примерно (структурно) так:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Ну и этого уже достаточно для появления одного окна с двумя кнопками и одной атомной бомбой :)

Но я переработал библиотеку Анатолия. У него сложнее как мне кажется.

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

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

 
Artyom Trishkin:

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

Т.е., примерно (структурно) так:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Ну и этого уже достаточно для появления одного окна с двумя кнопками и одной атомной бомбой :)

Но я переработал библиотеку Анатолия. У него сложнее как мне кажется.

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

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

Что за параметр 0 у CreateWindow(0) и CreateButton()? У CreateWindow(0) это идентификатор окна, а у CreateButton() означает, что кнопки будут на форме 0. Или вообще не так? Возможна только одна форма и все элементы управления будут на ней?

 
Dmitry Fedoseev:

Что за параметр 0 у CreateWindow(0) и CreateButton()? У CreateWindow(0) это идентификатор окна, а у CreateButton() означает, что кнопки будут на форме 0. Или вообще не так? Возможна только одна форма и все элементы управления будут на ней?

Каждый элемент можно прикрепить к другому. Вы верно поняли, что такое "0" - это идентификатор элемента. Я так схематично изобразил принцип построения GUI. И у кнопок он и прописан, а значит - они будут прикреплены к данному окну. Если бы я не прописал в каком-либо элементе привязку к окну, то он был бы прикреплён к чарту. По моему там так у него сделано - точно не вспомню.

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