Изучаем язык программирования MQL4

st2050

Гуру форума
А ты хоть одним глазом посмотрел код? Если это для тебя сложности, то на что ты вообще способен? Не в обиду. Сколько там всего строк, посчитал? Сколько времени тратится на отображение и изменение отображения посчитал? Ты позиционируешь себя

о каких сложностях можно говорить??? Я вообще самоучка… И если это делать через Lable, то код будет гораздо длиннее, сложнее и тормознутее.
Отвечаю на Ваши вопросы:
1. Код посмотрел, и одним глазом и вторым. И статью про OBJ_BITMAP_LABEL почитал.
2. Я способен писать прикладные информационные системы для предприятий и групп компаний в RAD и Visual Studio на С, VB и Delphi под Oracle и SQL-Server. 20 лет этим занимаюсь.
3. Нет, не посчитал.
4. Нет, не посчитал.
5. Я говорю о моих сложностях. На новый релиз информационной системы уровня предприятия в прошлом году ушло 9 месяцев и два ведущих программиста. А в этом году будем делать новый релиз другой системы, побольше. С её текущей версией сейчас работают четыре компании, включающих 8 территориальных предприятий.

IRL в прикладных ИС мне нужно делать примерно такие интерфейсы, это простой демо-пример разработчика элементов интерфейса - компании DevExpress. Реальные программы сложнее и больше по объёму данных.
Нужно делать с динамическим расположением элементов и масштабированием. В новых версиях теперь и под планшеты и смартфоны.

Я тоже самоучка, у меня диплом в области для которой я пишу. Но это не мешает сотням пользователей онлайн эксплуатировать мои программы 24/7/365. Было тысячи, но тот масштабный проект закрыт. Мне такие объёмы не нужны, а интегратору проект надоел, поэтому закрыли.
 

Вложения

  • WinForms-Office-Inspired-Application.png
    WinForms-Office-Inspired-Application.png
    70,3 КБ · Просмотры: 24
Последнее редактирование:

mobidik

-----
Если перенести входной параметр отвечающий за смену ТФ на самый верх, то перестаёт работать и вешает терминал.

Добавил ENUM для метода МА и ТФ, закомментил 2 строчки extern, больше ничего в коде не трогал.
Так и будет - по коду, при использовании старшего ТФ, индикатор вызывает сам себя, используя iCustom, а для нормальной работы данной ф-ции, все переменные должны быть строго в том же порядке, что и входные настраиваемые параметры. При смене положения во входных данных - следует изменить и в iCustom-е.
 

mobidik

-----
Признаю, у меня ошибка в ДНК 🤪
За это - респект.
А так:
Чудеса!

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

st2050

Гуру форума
Да и мерятся следовало бы реальным кодом, временем его исполнения, функциональностью.., а не картинками, сугубо мое имхо.
Извините, я не буду выкладывать тут информацию, позволяющую меня идентифицировать.
Человек спросил на что я способен, я описал. Доказывать это в интернете листингами и скриншотами не буду. Я ж не школьник, у меня свои проекты много лет, своя компания, патенты на ПО.

P.S. Скорость исполнения кода в моих проектах редко бывает критичной. Это системы информационного сопровождения бизнес-процессов. Проще говоря, производственной деятельности.
Например, у самого большого заказчика система крутится на сервере с четырьмя Ксеонами. Ну потому что там у них 1С. Стоит ли говорить что мои поделия по сравнению с 1С почти не дают загрузки серверу.

---
Пожалуйста, не говорите мне что я должен. У меня со времён СССР подгорает от этого слова. Я никому ничего не должен, даже себе.
 

AlexeyVik

Программист mql4 mql5
Конкретно это дерьмо не показалось мне сложным. Оно показалось мне не эргономичным и технологически костыльным.
Ага. лейблы наше всё… Остальное не эргономично и костыльно, по той простой причине, что мозгу с этим не справится. Ясно какой ты программист. Я покидаю эту дискуссию.
 

st2050

Гуру форума
Ага. лейблы наше всё… Остальное не эргономично и костыльно, по той простой причине, что мозгу с этим не справится. Ясно какой ты программист. Я покидаю эту дискуссию.
Очень бы хотелось увидеть как Вы таким костылём с преобразованием текста в картинку сможете реализовать современный программный интерфейс в стилистике MS Office.

Я прикладной программист. Мне не нужно изобретать велосипед из подручных средств. Комплект красивых и функциональных элементов интерфейса стоит 1,5-2 тысячи долларов в зависимости от среды разработки.
 

AlexeyVik

Программист mql4 mql5
Очень бы хотелось увидеть как Вы таким костылём с преобразованием текста в картинку сможете реализовать современный программный интерфейс в стилистике MS Office.

Я прикладной программист. Мне не нужно изобретать велосипед из подручных средств. Комплект красивых и функциональных элементов интерфейса стоит 1,5-2 тысячи долларов в зависимости от среды разработки.
Мы на форуме MS Office??? Или всёже на форуме трейдеров где пишутся программы на MQL???
В принципе MQL тоже можно назвать прикладным языком. А пример можете взять в какой либо статье по созданию панелей управления торговлей. Примерно такой
00.png
где нажатие на крестик удаляет советник с графика, а чёрточка сворачивает панельку как нормальное окно любого приложения MS Office.

И всё………… Больше я не отвечаю. Не провоцируй…
 

mobidik

-----
Очень бы хотелось увидеть как Вы таким костылём с преобразованием текста в картинку сможете реализовать современный программный интерфейс в стилистике MS Office.

Я прикладной программист. Мне не нужно изобретать велосипед из подручных средств. Комплект красивых и функциональных элементов интерфейса стоит 1,5-2 тысячи долларов в зависимости от среды разработки.
Ну вот, опять стали мерятся.., брать на "слабо", именно так это выглядит со стороны.
Верно замечено:
Мы на форуме MS Office??? Или всёже на форуме трейдеров где пишутся программы на MQL???
При этом, позволю себе Вас спросить: а что, индюк/советник оформлен именно в стиле MS Office повышает профит? Это всего лишь обвертка. Другое дело, когда подобный подход повышает восприятие информации, например, как на скрине ниже, что крайне редкое явление, но, как видно, решаемо.
 

Вложения

  • ProstoScreen.png
    ProstoScreen.png
    179,9 КБ · Просмотры: 23

mobidik

-----
Но, вернемся к началу:
👋 🤠
Индикатор выводит Comment() на графике.
Если кинуть на график дубль этого же индикатора(заданы разные ID), то комментарий остаётся только от последнего.

Внимание вопрос, уважаемые знатоки)

Есть ли способ избежать конфликта выводимых комментариев?
на что Вы, st2050 ответили:
Да, способ есть. Выводить информацию не в комменты, а в лейблы.
Пример корявой реализации можно посмотреть -тут-.

См. процедуры CreateLabel и RemoveObjects.
При этом, было уточнение от gravity:
Переформулирую.
Есть ли способ сделать так, чтобы были видны комменты от обоих индикаторов на одном экране?
И так: есть индюк в закрытом коде, который выдает коммент. Сам коммент может меняться полностью как по содержанию, так и по количеству строк.

st2050, Вы можете предоставить свое решение вопроса?
Пусть ваш индикатор/советник будет и в закрытом коде, главное, что я смогу реально убедится, что это возможно и работает. И не важно, будет конечный результат как коммент или как текст отображаться на графике. В противном случае, все выше только бла-бла-бла.
 

st2050

Гуру форума
Мы на форуме MS Office??? Или всёже на форуме трейдеров где пишутся программы на MQL???
В принципе MQL тоже можно назвать прикладным языком. А пример можете взять в какой либо статье по созданию панелей управления торговлей. Примерно такой
где нажатие на крестик удаляет советник с графика, а чёрточка сворачивает панельку как нормальное окно любого приложения MS Office.

И всё………… Больше я не отвечаю. Не провоцируй…
Отвечаю на Ваши вопросы:
1. Нет, мы не на форуме MS Office.
2. Да, мы на форуме трейдеров.

По существу: стилистика интерфейса и функционал - разные понятия.
Надеюсь, расположение элементов интерфейса в приведённом Вами примере изменяется в зависимости от размера окна, сами элементы визуально интерактивны, а их вид динамически изменяется при изменении темы Windows.
Если так, то снимаю шляпу.
 

gravity

Местный знаток
Запустите несколько раз этот скрипт и почитайте комментарий.
Как обновить комментарий додумаетесь сами…
Что-то вышло, но додумать пока никак не получается.
Если накинуть 2 одинаковых индикатора с разными id, потом щёлкнуть пр.кнопку мыши - список индикаторов - закрыть. То комментарии дублируются.
Код:
Expand Collapse Copy
#property copyright ""
#property link      "https:"
#property indicator_chart_window
#property version   "1.00"
#property strict


extern string id = "copy1";
//string comment;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
  {

//---- indicators
   return(0);
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+

int deinit()
  {
//---- TODO: add your code here

   Comment("");

//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

// Задача, чтобы при наличии двух индикаторов на графике, комментарий одного, не сбивал комментарий другого

int start()
{
  string comment = "\nНовый Comment"+id;                   // текст комментария

  string st = ChartGetString(ChartID(), CHART_COMMENT);    // считываем текст комментария с текущего графика
  //string str_find = StringFind(st,id);
  string comment2 = st+"\n===================="+comment;   //

      if (comment == st || st == "")                       // если тексты одинаковые или коммент пустой,...
      {
          Comment(comment);                                // ... то выводим текст комментария
      }
      else //if (st == comment2)                           // если тексты разные,...
      {
          Comment(comment2);    // ... то, добавляем к имеющемуся комментарию(st), текст нового комментария(comment)
      }
      return(0);
}


/******************************************************************/

/*****************************End program**************************/
 

Вложения

st2050

Гуру форума
Ну вот, опять стали мерятся.., брать на "слабо", именно так это выглядит со стороны.
Ничего подобного. Наоборот, это был сарказм в мой адрес - зачем мы тратимся на покупку элементов интерфейса.

При этом, позволю себе Вас спросить: а что, индюк/советник оформлен именно в стиле MS Office повышает профит?
Отвечаю на Ваш вопрос: нет, не повышает. Но при написании программ IRL я не согласен на компромиссы в интерфейсе. Хочу чтобы мои программы выглядели не хуже.

И так: есть индюк в закрытом коде, который выдает коммент. Сам коммент может меняться полностью как по содержанию, так и по количеству строк.
st2050, Вы можете предоставить свое решение вопроса?
Пусть ваш индикатор/советник будет и в закрытом коде, главное, что я смогу реально убедится, что это возможно и работает. И не важно, будет конечный результат как коммент или как текст отображаться на графике. В противном случае, все выше только бла-бла-бла.
Извините, я не вижу чтобы в условиях исходной задачи было указано что исходный индикатор в закрытом коде. Мне кажется вопрос касается подпиливания кода.

Отвечаю на Ваш вопрсос: да, своё могу.
Я представил пример, где вместо коммента используется лейбл. Это и есть моё решение - использовать в подпиливаемом индикаторе лейблы.
 
Последнее редактирование:

st2050

Гуру форума
Что-то вышло, но додумать пока никак не получается.
Если накинуть 2 одинаковых индикатора с разными id, потом щёлкнуть пр.кнопку мыши - список индикаторов - закрыть. То комментарии дублируются.
В функции deinit придётся прописывать удаление части комментария, соответствующего удаляемому экземпляру индикатора.
Я говорил что геморрой )
 

MERFY

Местный знаток
Привет!
Подскажите, как мне правильно прописать сдвиг по GMT в коде? Чтобы не привязываться к терминальный дневным свечам, а сдвинуть расчет на +2 часа вперед? Спасибо!

Код:
Expand Collapse Copy
int ATR = 5;
int i, ATR_D=0;

int init()

{
   pips = Point;
   if (Digits == 5 || Digits == 3) pips = 10.0 * pips;

   for(i=1;i<=ATR; i++)
   {

     ATR_D=ATR_D+MathRound((iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/pips);

   }

   ATR_D=ATR_D/ATR;

  return(0);
}
 
Верх