Обсуждение статьи "Графические интерфейсы X: Сортировка, реконструкция таблицы и элементы управления в ячейках (build 11)" - страница 10

 

Привет,

Ваш проект таблицы действительно интересен и является примером хорошего ООП-кодирования.

Могу ли я спросить, не хотите ли вы подумать о - я надеюсь, что и для других - очень полезном дополнении для сложных многосимвольных советников?

Представьте себе советник, который торгует многими символами с большим количеством индикаторов с - для каждого символа - индивидуальной настройкой параметров индикатора (например, простой):

input string Sym1 = "EURUSD";

input int Sym1MACDema1 = 12;

input int Sym1MACDema2 = 26;

input int Sym1MACDsma3 = 9

input ENUM_APPLIED_PRICE Sym1MACDprc =PRICE_CLOSE;

входная строка Sym2 = "GBPUSD";

input int Sym2MACDema1 = 11;

input int Sym2MACDema2 = 25;

input int Sym2MACDsma3 = 10

input ENUM_APPLIED_PRICE Sym2MACDprc =PRICE_CLOSE;

...

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

Особенно если вы позволите своему приложению управлять StartegyTester по этому csv-файлу. Я думаю, что нужно управлять советником в StrategyTester по csv-файлу в функции OnInit()-функции.

Для этого можно было бы добавить то, что предлагает StratTester: определение диапазона. от, до, шаг.

Но тут может возникнуть проблема, что в случае генетического алгоритма, если OnInit() возвращает INIT_PARAMETERS_INCORRECT или INIT_FAILED, то генетический алгоритм считает это как правильное прохождение, что уменьшит количество действительно пройденных тестов, а это уменьшит достоверность конечного результата.

Я понял эту проблему в mt4 и написал об этом в службу поддержки - но я понятия не имею, решили они ее или нет.


В любом случае, хорошая работа - продолжайте :)




 
Carl Schreiber:

...

Спасибо за отзыв и предложение! Я подумаю, как это можно реализовать.
 

Здравствуйте, Как я могу программно переместить главную форму или диалог в определенное место.

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

 

Толь, заметил странности при изменении размеров колонок - неверно обрезается текст. И ещё случайно обнаружил постоянное изменение размера колонки при удержании клавиши Ctrl.


 
Artyom Trishkin:

1. Толь, заметил странности при изменении размеров колонок - неверно обрезается текст.

2. И ещё случайно обнаружил постоянное изменение размера колонки при удержании клавиши Ctrl.

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

2. С клавишей Ctrl воспроизводится, но непонятно, почему такое поведение. Эта клавиша не прописана в коде таблицы.

 

Привет!

Это отличная библиотека!

Вы все еще поддерживаете MT4?

Наличие поддержки MT4 и MT5 было бы отличным способом плавного перехода от MT4 к MT5, когда придет время для этого.

 

Здравствуйте,


Я скачал библиотеку из этой статьи, модифицировал, чтобы изучить библиотеку. У меня есть простой вопрос.


Если я не создаю меню, как в коде, который я модифицировал ниже, я не могу сортировать таблицу и одинарно нажимать на чекбокс, почему это происходит? @AnatoliKazharski


//+------------------------------------------------------------------+
//| Создает торговую панель|
//+------------------------------------------------------------------+
bool CProgram::CreateExpertPanel(void)
  {
//--- Создание формы 1 для элементов управления
   if(!CreateWindow1("EXPERT PANEL"))
      return(false);
/*/--- Создание элементов управления:
// Главное меню
 if(!CreateMenuBar(1,20))
 return(false);
//--- Контекстные меню
 if(!CreateMBContextMenu1())
 return(false);
 if(!CreateMBContextMenu2())
 return(false);
 if(!CreateMBContextMenu3())
 return(false);
 if(!CreateMBContextMenu4())
 return(false);*/
//--- Создание строки состояния
   if(!CreateStatusBar(1,25))
      return(false);
//--- Кнопки
   if(!CreateSimpleButton1(7,50,"ADD COLUMN"))
      return(false);
   if(!CreateSimpleButton2(7,75,"DELETE COLUMN"))
      return(false);
   if(!CreateSimpleButton3(180,50,"ADD ROW"))
      return(false);
   if(!CreateSimpleButton4(180,75,"DELETE ROW"))
      return(false);
   if(!CreateSimpleButton5(353,50,"REBUILD TABLE"))
      return(false);
   if(!CreateSimpleButton6(353,75,"CLEAR TABLE"))
      return(false);
//--- Правки
   if(!CreateSpinEdit1(114,52,":"))
      return(false);
   if(!CreateSpinEdit2(114,77,":"))
      return(false);
   if(!CreateSpinEdit3(287,52,":"))
      return(false);
   if(!CreateSpinEdit4(287,77,":"))
      return(false);
//--- Создайте отрисованную таблицу
   if(!CreateCanvasTable(1,103)) // 103 | 42
      return(false);
//--- Перерисовка графика
   m_chart.Redraw();
   return(true);
  }
 
Здравствуйте, подскажите, как обновлять таблицу, если в ней динамические данные https://www.mql5.com/ru/forum/165152/page10#comment_7488387
 
Juer:
Здравствуйте, подскажите, как обновлять таблицу, если в ней динамические данные https://www.mql5.com/ru/forum/165152/page10#comment_7488387

Посмотрите здесь: Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)