Повесить индикатор в отдельное окно - страница 4

 
Эдуард Климуш:
#property copyright "Eduard Klimush"
#property link      "http://bincall.pro/"
#property version   "1.00"
#property indicator_separate_window

string periodString[]={"M1","M5","M15","M30", "H1", "H4", "D1", "W1", "MN1"};


input color    Color_UpTrade=clrGreen;
input color    Color_DownTrade=clrRed;
input color    Color_DontTrade=clrGray;
input color    Color_Symbol=clrBlack;
input color    Color_TimeFrame=clrBlack;
input int      Timer=10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  EventSetTimer(Timer);
  for (int x=0; x<23; x++)
         for (int y=0; y<9; y++)
      {
         
         ObjectCreate(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJ_LABEL,0,0,0,0,0);
         // создаем очередную метку. Обратите внимание, что название метки
         // создается "на лету" и зависит от счетчиков "x" и "y"
         
         ObjectSetString (0, "signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_FONT, "Wingdings");
         // меняем шрифт на Wingdingsб чтобы получить доступ к символам
         
         ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Color_DontTrade);
         // меняем цвет на синий
         
         ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_FONTSIZE, 65);
         
         ObjectSetString(0, "signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_TEXT, CharToString (110));
         //делаем квадратики
 
         ObjectSetInteger(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJPROP_XDISTANCE,x*55+60);
         // изменяем координату Х.
         // x*20 - каждая метка создается с интервалом в 20 пикселей по
         // горизонтали и напрямую зависит от счетчика "x"
 
         ObjectSetInteger(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJPROP_YDISTANCE,y*55+50);
         // изменяем координату Y.
         // y*20 - каждая метка создается с интервалом в 20 пикселей по
         // вертикали и напрямую зависит от счетчика "y"
      }   
      
     for(int x=0;x<9;x++)
   {
      // все как обычно
      ObjectCreate(0, "textPeriod"+IntegerToString(x),OBJ_LABEL,0,0,0,0,0);
      ObjectSetInteger(0,"textPeriod"+IntegerToString(x),OBJPROP_XDISTANCE,5);
      ObjectSetInteger(0,"textPeriod"+IntegerToString(x),OBJPROP_YDISTANCE,x*55+85);
      ObjectSetInteger (0,"textPeriod"+IntegerToString(x), OBJPROP_COLOR,  Color_TimeFrame);
         // меняем цвет на синий
      ObjectSetInteger (0,"textPeriod"+IntegerToString(x), OBJPROP_FONTSIZE,  20);   
      ObjectSetString(0,"textPeriod"+IntegerToString(x),OBJPROP_TEXT, periodString[x]);
      // используем массив periodString[], чтобы указать надписи
   }
      for(int x=0;x<23;x++)
   {
      // все как обычно
      ObjectCreate(0, "textSymbol"+IntegerToString(x),OBJ_LABEL,0,0,0,0,0);
      ObjectSetInteger(0,"textSymbol"+IntegerToString(x),OBJPROP_XDISTANCE,x*55 +65);
      ObjectSetInteger(0,"textSymbol"+IntegerToString(x),OBJPROP_YDISTANCE, 45);
      ObjectSetInteger (0,"textSymbol"+IntegerToString(x), OBJPROP_COLOR, Color_Symbol);
         // меняем цвет на синий
      ObjectSetInteger (0,"textSymbol"+IntegerToString(x), OBJPROP_FONTSIZE, 9);
      ObjectSetString(0,"textSymbol"+IntegerToString(x),OBJPROP_TEXT, aSymbol(x));
      // используем массив periodString[], чтобы указать надписи
   }
   
      
   return(0);
//---
   return(INIT_SUCCEEDED);
  }
Дак у Вас все объекты пишутся на чарт, а Вам надо в подокно! Найдите нужное подокно и пишите объекты туда.
 
Эдуард Климуш:
#property copyright "Eduard Klimush"
#property link      "http://bincall.pro/"
#property version   "1.00"
#property indicator_separate_window

string periodString[]={"M1","M5","M15","M30", "H1", "H4", "D1", "W1", "MN1"};


input color    Color_UpTrade=clrGreen;
input color    Color_DownTrade=clrRed;
input color    Color_DontTrade=clrGray;
input color    Color_Symbol=clrBlack;
input color    Color_TimeFrame=clrBlack;
input int      Timer=10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  EventSetTimer(Timer);
  for (int x=0; x<23; x++)
         for (int y=0; y<9; y++)
      {
         ObjectCreate(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJ_LABEL,0,0,0,0,0);
         // создаем очередную метку. Обратите внимание, что название метки
         // создается "на лету" и зависит от счетчиков "x" и "y"
         
         ObjectSetString (0, "signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_FONT, "Wingdings");
         // меняем шрифт на Wingdingsб чтобы получить доступ к символам
         
         ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Color_DontTrade);
         // меняем цвет на синий
         
         ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_FONTSIZE, 65);
         
         ObjectSetString(0, "signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_TEXT, CharToString (110));
         //делаем квадратики
 
         ObjectSetInteger(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJPROP_XDISTANCE,x*55+60);
         // изменяем координату Х.
         // x*20 - каждая метка создается с интервалом в 20 пикселей по
         // горизонтали и напрямую зависит от счетчика "x"
 
         ObjectSetInteger(0, "signal"+IntegerToString(x)+IntegerToString(y),OBJPROP_YDISTANCE,y*55+50);
         // изменяем координату Y.
         // y*20 - каждая метка создается с интервалом в 20 пикселей по
         // вертикали и напрямую зависит от счетчика "y"
      }   
      
     for(int x=0;x<9;x++)
   {
      // все как обычно
      ObjectCreate(0, "textPeriod"+IntegerToString(x),OBJ_LABEL,0,0,0,0,0);
      ObjectSetInteger(0,"textPeriod"+IntegerToString(x),OBJPROP_XDISTANCE,5);
      ObjectSetInteger(0,"textPeriod"+IntegerToString(x),OBJPROP_YDISTANCE,x*55+85);
      ObjectSetInteger (0,"textPeriod"+IntegerToString(x), OBJPROP_COLOR,  Color_TimeFrame);
         // меняем цвет на синий
      ObjectSetInteger (0,"textPeriod"+IntegerToString(x), OBJPROP_FONTSIZE,  20);   
      ObjectSetString(0,"textPeriod"+IntegerToString(x),OBJPROP_TEXT, periodString[x]);
      // используем массив periodString[], чтобы указать надписи
   }
      for(int x=0;x<23;x++)
   {
      // все как обычно
      ObjectCreate(0, "textSymbol"+IntegerToString(x),OBJ_LABEL,0,0,0,0,0);
      ObjectSetInteger(0,"textSymbol"+IntegerToString(x),OBJPROP_XDISTANCE,x*55 +65);
      ObjectSetInteger(0,"textSymbol"+IntegerToString(x),OBJPROP_YDISTANCE, 45);
      ObjectSetInteger (0,"textSymbol"+IntegerToString(x), OBJPROP_COLOR, Color_Symbol);
         // меняем цвет на синий
      ObjectSetInteger (0,"textSymbol"+IntegerToString(x), OBJPROP_FONTSIZE, 9);
      ObjectSetString(0,"textSymbol"+IntegerToString(x),OBJPROP_TEXT, aSymbol(x));
      // используем массив periodString[], чтобы указать надписи
   }
   
      
   return(0);
//---
   return(INIT_SUCCEEDED);
  }

При наличии ошибок вряд ли будет работать.  Переменная x - или объявить в начале программы или #property strikt


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

 
Alexey Kozitsyn:
Дак у Вас все объекты пишутся на чарт, а Вам надо в подокно! Найдите нужное подокно и пишите объекты туда.
Собственно, в этом и состоит вопрос, виндоуфайнд - это понятно, но его создать надо или обозвать как-то? Как мне искать то, что я не знаю, как называется?
 
Эдуард Климуш:
Собственно, в этом и состоит вопрос, виндоуфайнд - это понятно, но его создать надо или обозвать как-то? Как мне искать то, что я не знаю, как называется?
По короткому имени или имени файла, насколько я помню.
 
Эдуард Климуш:
Собственно, в этом и состоит вопрос, виндоуфайнд - это понятно, но его создать надо или обозвать как-то? Как мне искать то, что я не знаю, как называется?
Практически любой индикатор, создающий объекты, можно переделать на использование буферов...
 
Эдуард Климуш:

а средствами "со стороны", например, .net и т.д.?

я слышал, можно скриптом проверять наличие открытых ордеров и всю информацию с них брать.

Неужели ничего аналогичного нельзя сделать с новостями? 

можно, средствами WIN32 API.

И Алерты и все, что нужно... 

 
Mikhail Dovbakh:

можно, средствами WIN32 API.

И Алерты и все, что нужно... 

Тоже тема еще та... Так же как с чтением мануалов и с баном в гугле. Почему только Win32? А Win64 никак? Если все так раз два... сделайте да покажите.
 
Эдуард Климуш:
Собственно, в этом и состоит вопрос, виндоуфайнд - это понятно, но его создать надо или обозвать как-то? Как мне искать то, что я не знаю, как называется?
посмотрите эту статью, возможно в ней найдете решение. https://www.mql5.com/ru/articles/750
Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
  • 2013.10.21
  • Anatoli Kazharski
  • www.mql5.com
В этой статье мы рассмотрим пример разработки пользовательского интерфейса с такими элементами управления, как кнопки. В качестве подсказки пользователю о том, что с элементом можно взаимодействовать, сделаем так, чтобы кнопка при наведении на нее курсора мыши меняла цвет. При наведении курсора мыши на кнопку цвет будет немного затеняться, а при нажатии будет становиться заметно темнее. Добавим еще всплывающие подсказки для каждой кнопки. Таким образом, интерфейс станет интуитивно понятным.
 

Dmitry Fedoseev:
Тоже тема еще та... Так же как с чтением мануалов и с баном в гугле. Почему только Win32? А Win64 никак? Если все так раз два... сделайте да покажите. 


пример для англоязычного терминала..

 

[ЗАКРЫТЫЙ КОД УДАЛЁН МОДЕРАТОРОМ] 

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