Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 694

 
Maxim Kuznetsov:

НЕТ, НЕЛЬЗЯ...

до смешного, но то что выбрал пользователь в закладке "Цвета" штатно получить внутри индикатора НЕЛЬЗЯ

Спасибо за ответ.

ЕСТЬ ЕЩЕ МЕЧТА, ЧТО БЫ РАЗРАБОТЧИК В МТ4 (for Windows) ПЕРЕКРЕСТИЕ АДАПТИРОВАЛ ПОД ПЛАНШЕТНИК.... 

я им писал, ответили. сказали все силы брошены на МТ5...

 
kopeyka2:

Спасибо за ответ.

ЕСТЬ ЕЩЕ МЕЧТА, ЧТО БЫ РАЗРАБОТЧИК В МТ4 (for Windows) ПЕРЕКРЕСТИЕ АДАПТИРОВАЛ ПОД ПЛАНШЕТНИК.... 

я им писал, ответили. сказали все силы брошены на МТ5...

В мт4 вряд-ли что уже будет новое.

 
kopeyka2:

Привет.

Вопрос: Можно ли в МТ4 согласовать цвет ИЗ буфера с графикой, при условии изменения цвета индикатора стоящего на графике ? 

В коде

#property indicators_color1 clrYellow

***

***

ObjectCreate(…….);

  ObjectSetInteger(...indicators_color1);


Проблема; при изменении цвета в индикаторе цвет буферной линии меняется, а в графике тот же, что в #property. Нужно согласование.

Пока решил через input color , НО это две записи в коде, два изменения в настройках, а хотелось бы через буфер одной настройкой.


Спасибо за любой ответ.

Набрал схематично со смартфона.


Берём индикатор, в котором выводится графика, и смотрим:

//+------------------------------------------------------------------+
//| Описание                                                         |
//+------------------------------------------------------------------+
void Descriptions(void)
  {
   int x=4;
   int y=1;
   int arr_colors[]={indicator_color1,indicator_color2,indicator_color3,indicator_color4,indicator_color5};
   string arr_texts[]={"Up direction","Down direction","Crossing to up","Crossing to down","Neutral"};
   string arr_names[COUNT];
   for(int i=0; i<COUNT; i++)
     {
      arr_names[i]=prefix+"label"+(string)i;
      arr_colors[i]=PlotIndexGetInteger(i,PLOT_LINE_COLOR);
      int shift=(i*(i<2 ? 90 : i<COUNT-1 ? 96 : 100)-(i>0 ? x : 0));
      x+=shift;
      Label(arr_names[i],x,y,CharToString(167),16,arr_colors[i],"Wingdings");
      Label(arr_names[i]+"_txt",x+10,y+5,arr_texts[i],10,clrGray,"Calibri");
     }
  }
//+------------------------------------------------------------------+

Массив цветов объявляется и инициализируется цветами, заданными пользователем в настройках индикатора.

Далее в функцию вывода текстовой метки передаётся значение цвета из данного массива.

Ну и в функции вывода текстовой метки всё стандартно:

//+------------------------------------------------------------------+
//| Выводит текстовую метку                                          |
//+------------------------------------------------------------------+
void Label(const string name,const int x,const int y,const string text,const int size,const color clr,const string font)
  {
   if(ObjectFind(0,name)!=wnd)
      ObjectCreate(0,name,OBJ_LABEL,wnd,0,0,0,0);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER);
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size);
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//---
   ObjectSetString(0,name,OBJPROP_FONT,font);
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetString(0,name,OBJPROP_TOOLTIP,"\n");
  }
//+------------------------------------------------------------------+

Переданным в функцию цветом устанавливается цвет текстовой метки. И всё работает...

 
Artyom Trishkin:

Берём индикатор, в котором выводится графика, и смотрим:

Массив цветов объявляется и инициализируется цветами, заданными пользователем в настройках индикатора.

Далее в функцию вывода текстовой метки передаётся значение цвета из данного массива.

Ну и в функции вывода текстовой метки всё стандартно:

Переданным в функцию цветом устанавливается цвет текстовой метки. И всё работает...

Вариант с массивом я обдумывал... Не ясно КАК он связан с буфером...? Вопрос был в ОДНОМ движении изменения цвета...для буфера и метки(линии). 

Или я чета не догоняю ?))) 

За пример спасибо))


PS

думал, может както из буфера вытаскивать (сравнивать) цвет... помоему бред...

 

Приветствую. Подскажите как написать что бы индикатор работал только по цене ask?

RSI = NormalizeDouble((iRSI(NULL,0,14,0,0)),Digits());

 
Anatolij Anufriev:

Приветствую. Подскажите как написать что бы индикатор работал только по цене ask?

RSI = NormalizeDouble((iRSI(NULL,0,14,0,0)),Digits());

в МТ4 бары - OHLC строятся по  Bid, по сути цены Ask не доступны в истории, как вариант собирайте в тиках Ask и используйте iRSIOnArray()

 

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

Статей много, сложно выбрать что то одно

 
Igor Makanu:

в МТ4 бары - OHLC строятся по  Bid, по сути цены Ask не доступны в истории, как вариант собирайте в тиках Ask и используйте iRSIOnArray()

Спасибо

 
Sergey Likho:

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

Статей много, сложно выбрать что то одно

поиском по форуму раздел "Статьи" Вы найдете всю информацию, если не было статьи, тогда раздел "Форум", но много что соединяли с МТ4, и SQL и приложения типа MathLab или R... что интересно то и ищите поиском, поиск довольно неплох на этом форуме

https://www.mql5.com/ru/search#!keyword=sql&module=mql5_module_articles

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

Почему-то не получается выловить в цикле бар, который начинается в 15 часов.

Если в качестве условия пишу if(i<24) в лог выводится время каждого бара за сутки, а нужное условие не выполняется:


   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   while(i>=0)                      // Цикл по непосчитанным барам
     {
      
      if( TimeHour(iTime(NULL,PERIOD_H1,i)==15)  )
      //if(i<24)
      Print("TimeHour = ", TimeHour(iTime(NULL,PERIOD_H1,i)));
      
      CrossDown[i]=High[i]+250*Point;
   
      i--;                          // Расчёт индекса следующего бара
     }
Причина обращения: