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

 
Александр:

Ваш пост расценивать как заявку на участие в реализации?

Я тоже смотрел эту тему, но вы похоже не внимательно читали мой предыдущий пост.

Если через фриланс - пожалуйста. Каков бюджет? В каком месте вам показалось, что я читал невнимательно?

 
Dmitry Fedoseev:

Если через фриланс - пожалуйста. Каков бюджет? В каком месте вам показалось, что я читал невнимательно?

от предложения фриланса воздержусь.

а про внимательность тут:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Мой подход. Ядро - Движок.

Александр, 2018.12.16 16:12

мои навыки в MQL и вообще в программировании весьма скромные. ...

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

 

Пример пользовательской анимации, рисуемой советником в окне движка:

Управляющий код в советнике:

void OnTimer()
  { 
   static int q1,a,b; 
   //------------------------------------
   if(!a)LOAD_CANVAS_Last_10_bars(); 
   //---------------------------------
   if(!b) q1++;
   if(q1 == 200)b = 1;
   if(b)q1--;
   if(!q1)b = 0;  
   //------------- 
   ELLIPSE(q1,q1,q1+q1*2,q1+q1,clrBlue);          
   //------------------------------------
  }

Добавлены 14 рисующих функций из класса CCanvas в блок рисования движка. Эти функции вызываются из советника. Для этого, были добавлены функции обертки рисующих функций в файл Connection_Properties.mqh 

Можно рисовать круги, прямоугольники, треугольники, арки, эллипсы, линии.

Перед вызовом рисующих функций, нужно указать на каком канвасе они будут рисовать (например: LOAD_CANVAS_Last_10_bars();)

Технология еще сырая. Как отлажу, выложу готовый пример.

 
Александр:

Доброго времени суток.

Пытаюсь создать панель для управления включением/отключением торговых функций собственного производства ну и соответственно корректировки их немногочисленных параметров.

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

Или невозможности открытия ордеров при реализации панели в коде индикатора.

Обсуждение здесь: https://www.mql5.com/ru/forum/294890

Петр, предложил мне свою помощь в разработке панели, от которой я не мог отказаться.

Итак, на сегодняшний день панель выглядит так:

или так, когда все кнопки нажаты:

под каждой кнопкой ее параметры которые можно изменять как стрелками вверх/вниз так и редактированием поля edit.

Для кнопок "Now" значение параметра .Locking(false);, для всех остальных кнопок .Locking(true);

Для кнопки "Trailing" нужно добавить еще один параметр(переключатель) со значениями All/Each.

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

Петр, этого описания достаточно для ТЗ? 

Вот панель.

Сделайте пожалуйста, поправки к внешнему виду, и поясните куда именно поместить переключатель "All/Each", а также вып. список с таймфреймами (полагаю сверху в центре).

Нажатые кнопки:


 

Что касается торговли в тестере, то я сейчас решаю эту проблему. Хочу полностью переделать связь между советником и движком. Реализовать ее через "объекты связи" (МТ-объекты, строковое описание которых, использользуется для передачи данных между программами).

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

При текущем подходе к связи, нагружается очередь событий OnChartEvent(). При большом количестве событий, отправка и прием сообщений между советником и движком задерживается, и это становиться визуально заметно. Общение через МТ-объекты должно искоренить эту проблему, так как прием и отправка сообщений будет осуществляться вне очереди событий  OnChartEvent().

В теории, должно работать...

 
Реter Konow:

Вот панель.

Сделайте пожалуйста, поправки к внешнему виду, и поясните куда именно поместить переключатель "All/Each", а также вып. список с таймфреймами (полагаю сверху в центре).

Думаю панель лучше сделать на всю ширину рабочей области (будет больше мета для списка ордеров).

Поля Edit с метками Lot, Profit и рядом с кнопками "Now" должны иметь сотые доли (формат 0.00).

Поэкспериментировал и пришел к выводу, что поле со списком таймфремов лучше заменить на Label и две кнопки ("-" и "+"). Расположить на уровне верхнего ряда кнопок. Метка посередине, кнопка "-" слева, кнопка "+" справа от Label. Ниже останется место для списка открытых ордеров.

Переключатели All/Each расположить под кнопками "Trailing" на уровне метки "Profit".

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

 
Александр:

1. Думаю панель лучше сделать на всю ширину рабочей области (будет больше мета для списка ордеров).

2. Поля Edit с метками Lot, Profit и рядом с кнопками "Now" должны иметь сотые доли (формат 0.00).

3. Поэкспериментировал и пришел к выводу, что поле со списком таймфремов лучше заменить на Label и две кнопки ("-" и "+"). Расположить на уровне верхнего ряда кнопок. Метка посередине, кнопка "-" слева, кнопка "+" справа от Label. Ниже останется место для списка открытых ордеров.

4. Переключатели All/Each расположить под кнопками "Trailing" на уровне метки "Profit".

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

1. То есть, сделать панель автоматически настраивающуюся под ширину графика? Или просто на ширину графика?

2. Сделаю.

3. Не совсем понял. То есть, таймфреймы должны настраиваться в поле ввода с кнопками +/-? И не делать отдельное окно со списком ордеров? Все на панели?

4. Переключателем может быть простая кнопка, меняющая текст при нажатии/отжатии?

5. Добавлю графических элементов.

(Переключателем можно сделать маленкий слайдер. Ползунок будет ходить вправо/влево)

 
Реter Konow:

Что касается торговли в тестере, то я сейчас решаю эту проблему. Хочу полностью переделать связь между советником и движком. Реализовать ее через "объекты связи" (МТ-объекты, строковое описание которых, использользуется для передачи данных между программами).

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

При текущем подходе к связи, нагружается очередь событий OnChartEvent(). При большом количестве событий, отправка и прием сообщений между советником и движком задерживается, и это становиться визуально заметно. Общение через МТ-объекты должно искоренить эту проблему, так как прием и отправка сообщений будет осуществляться вне очереди событий  OnChartEvent().

В теории, должно работать...

Не уверен что до конца понял суть.

Правильно ли я понимаю, что Вы собираетесь реализовать связь между панелью и советником в режиме тестирования через события OnChartEvent()?

Если да, то шансов на успех мало, т.к. в тестере события OnChartEvent() для советника не генерируются (только для индикатора).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 тут предлагался вариант заменить события OnChartEvent() событием OnTick().

Я попробовал, но при этом перестают работать все составные объекты (SpinEdit, ComboBox и другие). Единственный метод который позволяет менять значения переменных в тестере Button.Pressed() и только для самостоятельных кнопок (кнопок не включенных в состав какого-либо комплексного объекта типа SpinEdit)

SimplePanel проблема при переключении таймфрейма
SimplePanel проблема при переключении таймфрейма
  • 2018.12.16
  • www.mql5.com
В составе стандартного пакета MT4 имеется пример создания панели управления "Simple Panel...
 
Александр:

Не уверен что до конца понял суть.

Правильно ли я понимаю, что Вы собираетесь реализовать связь между панелью и советником в режиме тестирования через события OnChartEvent()?

Если да, то шансов на успех мало, т.к. в тестере события OnChartEvent() для советника не генерируются (только для индикатора).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 тут предлагался вариант заменить события OnChartEvent() событием OnTick().

Я попробовал, но при этом перестают работать все составные объекты (SpinEdit, ComboBox и другие). Единственный метод который позволяет менять значения переменных в тестере Button.Pressed() и только для самостоятельных кнопок (кнопок не включенных в состав какого-либо комплексного объекта типа SpinEdit)

Это долго объяснять. Но, поверьте моему опыту. Метод связи будет работать. 

Панель будет на обычном графике. Советник в тестере. Панель будет находить советник в тестере, создавать МТ-объекты и через их описание "общаться" с советником. 

На обычном графике работает OnChartEvent(). В тестере - нет. Но, синхронизации значений параметров это не помешает. 

Уверен, что получится.

Вопрос одной недели.

 
Реter Konow:

Это долго объяснять. Но, поверьте моему опыту. Метод связи будет работать. 

Панель будет на обычном графике. Советник в тестере. Панель будет находить советник в тестере, создавать МТ-объекты и через их описание "общаться" с советником. 

На обычном графике работает OnChartEvent(). В тестере - нет. Но, синхронизации значений параметров это не помешает. 

Уверен, что получится.

Вопрос одной недели.

не получится.

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