Ответ
 
Опции темы
Старый 19.06.2015, 06:31   #4001 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от CrazyDoc Посмотреть сообщение
SetIndexBuffer, не хочешь чтобы отображался подпольный индикатор - переделай его(индикатор, а не функцию).
Не знаю на сколько правильный подход, но поменял indicator_separate_window на indicator_chart_window и индюк из подвала пропал.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.06.2015, 06:38   #4002 (permalink)
Новичок форума
 
Аватар для CrazyDoc
 
Регистрация: 02.05.2015
Адрес: Ступино
Сообщений: 28
Репутация: 12
CrazyDoc
Сказал(а) спасибо: 4
Поблагодарили 11 раз(а) в 7 сообщениях
Поинты: 20
Если будет много индикаторов\экспертов - подход не верный(МТ имеет ограниченное кол-во возможной используемой памяти). Во всем остальном:
CrazyDoc вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (19.06.2015)
Старый 20.06.2015, 06:46   #4003 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Здравствуйте, уважаемые программисты. Я программист негодный, ибо дельфин, а не сишник. Но когда нужно и корова может быть тягловым животным.

Преамбула: Использую индикатор на графике, который красит бары. А еще для анализа часто бывает нужно увидеть чистый график в виде линии. Приходится выключать индикатор руками через свойства, а это долго и неудобно.

Амбула: Подскажите, как программно отобразить/скрыть конкретный индикатор на графике? У меня собственная торговая панель, я специальную кнопку сделаю )))

Логика: Ведь сделал же кнопку, которая располагает график сверху/снизу. Лень - двигатель прогресса:

Скрытый текст


Код:
void SwapChartForeground() {
  if (ChartGetInteger(0,CHART_FOREGROUND))
  {
    ChartSetInteger(0,CHART_FOREGROUND,false);
    ObjectSetText(ButtonNamePrefix+"GA_ChartForeground","Front");
  }
  else
  {
    ChartSetInteger(0,CHART_FOREGROUND,true);
    ObjectSetText(ButtonNamePrefix+"GA_ChartForeground","Back");
  }
}
[свернуть]

Ну так что скажут знатоки?
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.06.2015, 08:26   #4004 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,250
Репутация: 1961
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 346
Поблагодарили 1,890 раз(а) в 1,067 сообщениях
Поинты: 1266
Отправить сообщение для Ugar с помощью ICQ
Сообщение от st2050 Посмотреть сообщение
Здравствуйте, уважаемые программисты. Я программист негодный, ибо дельфин, а не сишник. Но когда нужно и корова может быть тягловым животным.

Преамбула: Использую индикатор на графике, который красит бары. А еще для анализа часто бывает нужно увидеть чистый график в виде линии. Приходится выключать индикатор руками через свойства, а это долго и неудобно.

Амбула: Подскажите, как программно отобразить/скрыть конкретный индикатор на графике? У меня собственная торговая панель, я специальную кнопку сделаю )))

Логика: Ведь сделал же кнопку, которая располагает график сверху/снизу. Лень - двигатель прогресса:

Скрытый текст


Код:
void SwapChartForeground() {
  if (ChartGetInteger(0,CHART_FOREGROUND))
  {
    ChartSetInteger(0,CHART_FOREGROUND,false);
    ObjectSetText(ButtonNamePrefix+"GA_ChartForeground","Front");
  }
  else
  {
    ChartSetInteger(0,CHART_FOREGROUND,true);
    ObjectSetText(ButtonNamePrefix+"GA_ChartForeground","Back");
  }
}
[свернуть]

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
st2050 (20.06.2015)
Старый 20.06.2015, 08:53   #4005 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Сообщение от Ugar Посмотреть сообщение
Индикатор же вычисляет данные для отображаемых буферов. Надо просто сделать что бы он это делал только когда кнопка нажата, а если не нажата буфера заполнить нулями.

Предлагаете изменить код индикатора так, чтобы он читал, нажата ли кнопка в советнике-торговой панели?

Технически это конечно возможно ... Только вот подобное решение не кажется изящным. Вроде как изнасилование индикатора получается.
А нельзя ли все таки сделать это каким-нибудь апишным способом?

Я правильно понял Вашу идею?

Скрытый текст


Код:
int _ShowBarPainter = 0;
GlobalVariableGet(GVNamePrefix+"ShowBarPainter", _ShowBarPainter);
if (_ShowBarPainter==0)
{
   FillNullValues();
   return(0);
}

Дааа, МТ4 такая няшка ) Это Вам даже не BASIC под DOS баловать!
[свернуть]
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.06.2015, 10:05   #4006 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,250
Репутация: 1961
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 346
Поблагодарили 1,890 раз(а) в 1,067 сообщениях
Поинты: 1266
Отправить сообщение для Ugar с помощью ICQ
Сообщение от st2050 Посмотреть сообщение
Предлагаете изменить код индикатора так, чтобы он читал, нажата ли кнопка в советнике-торговой панели?

Технически это конечно возможно ... Только вот подобное решение не кажется изящным. Вроде как изнасилование индикатора получается.
А нельзя ли все таки сделать это каким-нибудь апишным способом?

Я правильно понял Вашу идею?

Скрытый текст


Код:
int _ShowBarPainter = 0;
GlobalVariableGet(GVNamePrefix+"ShowBarPainter", _ShowBarPainter);
if (_ShowBarPainter==0)
{
   FillNullValues();
   return(0);
}
Дааа, МТ4 такая няшка ) Это Вам даже не BASIC под DOS баловать!
[свернуть]
зачем советник? Индикатором же надо управлять. Добавь в индикатор кнопку и управляй.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.06.2015, 10:19   #4007 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Сообщение от Ugar Посмотреть сообщение
зачем советник? Индикатором же надо управлять. Добавь в индикатор кнопку и управляй.

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

Но в любом случае спасибо за идею, вполне рабочая.

---
Кстати, я у некоторых сов видел, что кнопки там не кнопки прямоугольные, а красивые имаджи. Нет ли какого-нибудь исходника в качестве примера?
А то кнопок у меня все больше, только все они квадратные и одинаковые. Иногда это приводит к неправильным действиям.
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.06.2015, 10:33   #4008 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Сообщение от st2050 Посмотреть сообщение
Кстати, я у некоторых сов видел, что кнопки там не кнопки прямоугольные, а красивые имаджи. Нет ли какого-нибудь исходника в качестве примера?
А то кнопок у меня все больше, только все они квадратные и одинаковые. Иногда это приводит к неправильным действиям.
Посмотри этот код, как пример, это сов помощник, много кнопок, есть выбор цветовой темы, изучай:
Вложения:
Тип файла: mq4 cm-Trade System 240514-1.mq4 (43.4 Кб, 38 просмотров)
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
cnut (15.10.2015), st2050 (20.06.2015)
Старый 20.06.2015, 14:11   #4009 (permalink)
 
Аватар для поручик
 
Регистрация: 14.02.2009
Сообщений: 1,151
Репутация: 3212
поручик поручик поручик поручик поручик поручик поручик поручик поручик поручик поручик
Сказал(а) спасибо: 805
Поблагодарили 3,210 раз(а) в 775 сообщениях
Поинты: 327
А профилями попереключаться?
Миниатюры:
Нажмите на изображение для увеличения
Название: st.PNG
Просмотров: 17
Размер:	13.7 Кб
ID:	210043  
поручик на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.06.2015, 21:00   #4010 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Сообщение от поручик Посмотреть сообщение
А профилями попереключаться?

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

Дальше я нарисую трендовый канал по ценам закрытия и переключусь обратно. Что же произойдет? Правильно, графики будут отстроены заново и я не увижу своего трендового канала.

Итого: Ваше предложение не принято.
Вообще, это предложение пользователя, но не программиста. Программисты создают возможности, пользователи используют существующие. Это два разных мира:

Скрытый текст


Программист создает


Пользователи нажимают кнопки

[свернуть]

Последний раз редактировалось st2050; 20.06.2015 в 21:34.
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.06.2015, 01:35   #4011 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
В общем, я так решил вопрос (про сокрытие индикатора с чарта в режиме "линии"):

В торговой панели:

Скрытый текст


Этот код выполняется при нажатии кнопки смены вида графика
Код:
void SwapChartLine() {
  if (ChartGetInteger(0,CHART_MODE)==CHART_LINE) ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
    else ChartSetInteger(0,CHART_MODE,CHART_LINE);
  RefreshChart();
}
[свернуть]

В индикаторе:

Скрытый текст


Код:
extern bool      DonShowInChartLineMode = true;
...
int start()
  {
  
   if((DonShowInChartLineMode)&&(ChartGetInteger(0,CHART_MODE)==CHART_LINE))
   {
      SetIndexStyle(0,DRAW_NONE, 0, 1);
      SetIndexStyle(1,DRAW_NONE, 0, 1);
      SetIndexStyle(2,DRAW_NONE, 0, 1);
      SetIndexStyle(3,DRAW_NONE, 0, 1);
   }
   else
   {
      SetIndexStyle(0,DRAW_HISTOGRAM, 0, width_histogram);      
      SetIndexStyle(1,DRAW_HISTOGRAM, 0, width_histogram);      
      SetIndexStyle(2,DRAW_HISTOGRAM, 0, width_histogram);      
      SetIndexStyle(3,DRAW_HISTOGRAM, 0, width_histogram);      
   }

... дальше родной код
[свернуть]

Спасибо за консультации.
Хорошо или плохо - результат достигнут. Индикатор прилагаю.
Вложения:
Тип файла: mq4 Elder Impulse Candle Color2.mq4 (6.7 Кб, 15 просмотров)
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.06.2015, 05:31   #4012 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Я сам не программист, поэтому в коде все корректирую под себя методом тыка Но тут мне повстречалась ошибка array out of range. При чем при компиляции все отлично, а появляется она в журнале, если переключить на минутный график или месячный. Что за зверек такой? Не слушается моих тыков

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 23.06.2015, 06:10   #4013 (permalink)
Новичок форума
 
Аватар для CrazyDoc
 
Регистрация: 02.05.2015
Адрес: Ступино
Сообщений: 28
Репутация: 12
CrazyDoc
Сказал(а) спасибо: 4
Поблагодарили 11 раз(а) в 7 сообщениях
Поинты: 20
ошибка в массивах. добавь проверки на кол-во баров в истории, просмотри заполнение массивов
CrazyDoc вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (25.06.2015)
Старый 23.06.2015, 15:08   #4014 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,250
Репутация: 1961
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 346
Поблагодарили 1,890 раз(а) в 1,067 сообщениях
Поинты: 1266
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Yurkov Посмотреть сообщение
Я сам не программист, поэтому в коде все корректирую под себя методом тыка Но тут мне повстречалась ошибка array out of range. При чем при компиляции все отлично, а появляется она в журнале, если переключить на минутный график или месячный. Что за зверек такой? Не слушается моих тыков
Эта ошибка выскакивает при обращении к несуществующей ячейке массива. Например, самая распространённая ошибка:
int Arr[5];
Arr[5]=23;
Здесь попытка записи в несуществующую ячейку массива.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (25.06.2015)
Старый 23.06.2015, 18:08   #4015 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,516
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2002
И ещё вариант, был баг при обращении к нулевому бару. В билде 840 уже вроде исправлено. Обновись и проверь.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Ugar (24.06.2015), Yurkov (25.06.2015)
Старый 24.06.2015, 09:22   #4016 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Подскажите как узнать:
1) установленный цвет фона графика?
2) высоту окна подвального индикатора?
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.06.2015, 13:04   #4017 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Сообщение от mobidik Посмотреть сообщение
Подскажите как узнать:
1) установленный цвет фона графика?
2) высоту окна подвального индикатора?
1) Ищите по слову color здесь:
docs.mql4.com/ru/constants/chartconstants/enum_chart_property
Нажимайте на нужное название, откроется код с примером

2) Думаю, как-то так. Вверху кода индикатора:
Код:
#import "user32.dll"
int GetWindowRect(int hwnd, int& lpRect[]);
В функции определения размеров окна:
Код:
  int _Window_rect[4];     // Массив координат окна
  int _GUI_Window_Width, _GUI_Window_Height;

  GetWindowRect(*хендл окна*, Period()), _Window_rect);
  _GUI_Window_Width = _Window_rect[2]-_Window_rect[0];
  _GUI_Window_Height = _Window_rect[3]-_Window_rect[1];
Как получить хэндл подвального окна я не помню, но где-то видел. Хэндл всего окна WindowHandle(Symbol())
Желаю успехов )
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mobidik (24.06.2015)
Старый 24.06.2015, 13:25   #4018 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Сообщение от mobidik Посмотреть сообщение
Подскажите как узнать:
1) установленный цвет фона графика?
2) высоту окна подвального индикатора?
По первому пункту уже нашел, определяется с помощью ф-ции: CHART_COLOR_BACKGROUND.
По второму - пока в поиске решения...
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.06.2015, 00:34   #4019 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,007
Репутация: 824
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 838 раз(а) в 552 сообщениях
Поинты: 1302
Я тоже люблю, чтобы было красиво, но не до такой же степени!

Система-то работает?

Смысла нет красиво рисовать, если прибыли нема!

Или слупим "якобы систему" и будем продавать? Да, можно больше денег заколотить.
И на этом людя зарабатывают, как, например, великий программер "Ким".


Подозреваю, что всякие вики и угары тут тоже неспросто околачиваются, ась?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.06.2015, 01:54   #4020 (permalink)
Местный знаток
 
Аватар для st2050
 
Регистрация: 08.09.2012
Сообщений: 311
Репутация: 577
st2050 - st2050 - st2050 - st2050 - st2050 - st2050 -
Сказал(а) спасибо: 362
Поблагодарили 576 раз(а) в 141 сообщениях
Поинты: 399
Сообщение от ansol Посмотреть сообщение
Я тоже люблю, чтобы было красиво, но не до такой же степени!

Система-то работает?

Смысла нет красиво рисовать, если прибыли нема!

Или слупим "якобы систему" и будем продавать? Да, можно больше денег заколотить.
И на этом людя зарабатывают, как, например, великий программер "Ким".


Подозреваю, что всякие вики и угары тут тоже неспросто околачиваются, ась?
1. Система работает. И я выкладывал ее для всех - в ветке "Поиск индикаторов".
2. Именно до такой степени. Я перфекционист. Если что-то возможно сделать и это мне хорошо и приятно - я это делаю. Торговую панель делал для себя под свой стиль торговли. Я ее не продаю, не раздаю и не хвастаюсь нигде.
3. У Игоря Кима множество скриптов и советников выложено в открытом коде с комментариями, чем я часто пользуюсь, т.к. опыт в MQL небольшой. Лично от меня ему респект за это.
И у него на сайте нет торговых систем - только утильные вещи, помогающие трейдерам. Большинство из них бесплатны.

Последний раз редактировалось st2050; 25.06.2015 в 02:26.
st2050 вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 00:17. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO