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

 
Iosebi Tavadze #:
"+20 тиков а в низ было-- 5" = это 25%" там считается процент разницы100%* (р1+(-р2))/(р1-(-р2))  .   Может кто и поможет с кодом.Будем поискать.Помогите да Помогите!!!!!!

Формулу поставил вашу

//+------------------------------------------------------------------+
//|                                                     Tick.mq4/mq5 |
//|                                                              MVS |
//+------------------------------------------------------------------+
#property link      "https://www.mql5.com/ru/users/mvs/seller"
#property copyright "MVS © 2021"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_plots   2
#property indicator_buffers 2

#property indicator_type1               DRAW_HISTOGRAM
#property indicator_color1              clrDeepSkyBlue
#property indicator_width1              2
#property indicator_type2               DRAW_HISTOGRAM
#property indicator_color2              clrCrimson
#property indicator_width2              2

#define ASK SymbolInfoDouble(Symbol(), SYMBOL_ASK)
#define BID SymbolInfoDouble(Symbol(), SYMBOL_BID)

double b,a;
int ch=0,cl=0,rs=0;
int wndNum=0;
double up[],dn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  IndicatorSetInteger(INDICATOR_DIGITS,0);
  SetIndexBuffer(0, up);
  SetIndexBuffer(1, dn);
  ArraySetAsSeries(up, true);
  ArraySetAsSeries(dn, true);
  IndicatorSetString(INDICATOR_SHORTNAME,MQLInfoString(MQL_PROGRAM_NAME)+": ");
  wndNum=ChartWindowFind();
  b=BID;
  a=BID;
  SetLabel("Label_up",5,indicator_color1);
  SetLabel("Label_dn",25,indicator_color2);
  SetLabel("Label_rs",45,clrMediumSeaGreen);
//---
  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  ObjectsDeleteAll(0,"Label_");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//--
  if(prev_calculated==0) {
    ArrayInitialize(up,EMPTY_VALUE);
    ArrayInitialize(dn,EMPTY_VALUE);
    return(rates_total);
  }
  if(rates_total-prev_calculated==1) {
    ch=0;
    cl=0;
  }

//--
  if(b<BID) {
    ch++;
    up[0]=ch;

  }
  if(b>BID) {
    cl++;
    dn[0]=-cl;
  }
  b=BID;

//--
  if(ch-cl>0)
    rs = 100*(ch+(-cl))/(ch-(-cl));
  ObjectSetString(0,"Label_up",OBJPROP_TEXT,"Up: "+(string)ch);
  ObjectSetString(0,"Label_dn",OBJPROP_TEXT,"Dn: "+(string)cl);
  ObjectSetString(0,"Label_rs",OBJPROP_TEXT,"%:"+(string)rs);
//--
  return(rates_total);
}

//+------------------------------------------------------------------+
void SetLabel(string nm, int yd, color clr)
{
  if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_LABEL,wndNum,0,0);
    ObjectSetInteger(0,nm,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
    ObjectSetInteger(0,nm,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
    ObjectSetString (0,nm,OBJPROP_FONT,"Arial");
    ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,10);
    ObjectSetInteger(0,nm,OBJPROP_BACK,false);
    ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
    ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,false);
    ObjectSetInteger(0,nm,OBJPROP_SELECTED,false);
    ObjectSetString (0,nm,OBJPROP_TOOLTIP,"\n");
    ObjectSetInteger(0,nm,OBJPROP_YDISTANCE,yd);
    ObjectSetInteger(0,nm,OBJPROP_XDISTANCE,5);
    ObjectSetString (0,nm,OBJPROP_TEXT,"0");
    ObjectSetInteger(0,nm,OBJPROP_COLOR,clr);
  }
}
//+------------------------------------------------------------------+


Файлы:
Tick.mq4  8 kb
 
Vitaly Muzichenko #:

Формулу поставил вашу


  Спасибо за помощь и проявленый интерес к теме.В вашем индикаторе все хорошо,но нет резултирующего третьего цвета.То есть он не отображает %.Я вспоминал,вспоминал и вспомнил BearBullBalance_AD. Он и историю сохраняет и третий цветР1+(-Р2) у него есть.Только куда всунуть мою формулу не сообразил.Если вы сможите его посмотреть Буду Благодарен.

P.S.  только параметр  AD смущает. Как то не так он что то делает из за этого  AD.Нашел другой  BearBullBalance но нет МКЛ-4  он в маркете.Авто Ihor Herasko.Попробую связаться с ним тоже.
Файлы:
 

Вам нужно понять одну вещь, если вам нужна информация о тиках - то это только онлайн сбор данных (как сделал Виталий), для MT4 .

В MT5 вроде как есть доступ к тиковой истории


p/s. но вам правильно сказали, что плотность тикового потока у разных ДЦ отличается. Поэтому показания индикатора будут не о чем, для форекса уж точно.

 
Maxim Kuznetsov #:

он считает тики...

для лиц не открывавшим исходный код :

суммируются iVolume, это не пункты. Почти тики ;-)


Это вообще не пойми что...  Самое интересное, что значение на баре и сумма этих значений внутренних баров меньшего ТФ не совпадают.

 
Iosebi Tavadze #:

  Спасибо за помощь и проявленый интерес к теме.В вашем индикаторе все хорошо,но нет резултирующего третьего цвета.То есть он не отображает %.Я вспоминал,вспоминал и вспомнил BearBullBalance_AD. Он и историю сохраняет и третий цветР1+(-Р2) у него есть.Только куда всунуть мою формулу не сообразил.Если вы сможите его посмотреть Буду Благодарен.

P.S.  только параметр  AD смущает. Как то не так он что то делает из за этого  AD.Нашел другой  BearBullBalance но нет МКЛ-4  он в маркете.Авто Ihor Herasko.Попробую связаться с ним тоже.

Вот, добавил 3-й буфер


Файлы:
Tick.mq4  9 kb
 
Огромное Спасибо!!!!!!!!! Ты Супер!!!!!!!! Все что надо было для изучения я получил.Здоровья Вам Всем.Поделюсь с Вами фамильным Гербом и Эконой.Да Хранит Вас Святой Гиорги.Да прибудет с Вами Благодать и Счастие!
Файлы:
quzo.jpg  36 kb
i9ck5a.jpg  79 kb
 
Vitaly Muzichenko #:

Вот, добавил 3-й буфер


Спасибо Витали.Все отлично. Но третий буфер считает df[0]=ch-cl;    а должен считать  100*(ch+(-cl))/(ch-(-cl));   Весь смысл гистограмы визуализация процента.Я хочу наложить индикатор объема на индикатор тиков и понаблюдать закономерности хода цены . А в противовазе волум и тики иногда работают.В этом сегодня убедился. И что примечательно индикаторы не перерисовываются.Если будет время глянь Пожалуйста.Я сам пытался нашаманить но увы.Знаний в области програмирования только на уровне  Булева алгебры.

Файлы:
7nqlqjn.png  73 kb
 
Iosebi Tavadze #:

Спасибо Витали.Все отлично. Но третий буфер считает df[0]=ch-cl;    а должен считать  100*(ch+(-cl))/(ch-(-cl));   Весь смысл гистограмы визуализация процента.Я хочу наложить индикатор объема на индикатор тиков и понаблюдать закономерности хода цены . А в противовазе волум и тики иногда работают.В этом сегодня убедился. И что примечательно индикаторы не перерисовываются.Если будет время глянь Пожалуйста.Я сам пытался нашаманить но увы.Знаний в области програмирования только на уровне  Булева алгебры.

Вы правильно внесли правки, а такой результат отображения - разные величины, тиков мало, а результат большой

Вот более понятный код, скопируйте его и вставьте в файл для компиляции

//+------------------------------------------------------------------+
//|                                                     Tick.mq4/mq5 |
//|                                                              MVS |
//+------------------------------------------------------------------+
#property link      "https://www.mql5.com/ru/users/mvs/seller"
#property copyright "MVS © 2021"
#property version   "1.01"
#property strict
#property indicator_separate_window
#property indicator_plots   3
#property indicator_buffers 3

#property indicator_type1               DRAW_HISTOGRAM
#property indicator_color1              clrDeepSkyBlue
#property indicator_width1              2
#property indicator_type2               DRAW_HISTOGRAM
#property indicator_color2              clrCrimson
#property indicator_width2              2
#property indicator_type3               DRAW_HISTOGRAM
#property indicator_color3              clrGold
#property indicator_width3              2

#define ASK SymbolInfoDouble(Symbol(), SYMBOL_ASK)
#define BID SymbolInfoDouble(Symbol(), SYMBOL_BID)

double b,a;
int ch=0,cl=0;
double rs=0;
int wndNum=0;
double up[],dn[],df[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  IndicatorSetInteger(INDICATOR_DIGITS,0);
  SetIndexBuffer(0,up);
  SetIndexBuffer(1,dn);
  SetIndexBuffer(2,df);
  ArraySetAsSeries(up,true);
  ArraySetAsSeries(dn,true);
  ArraySetAsSeries(df,true);
  IndicatorSetString(INDICATOR_SHORTNAME,MQLInfoString(MQL_PROGRAM_NAME)+": ");
  wndNum=ChartWindowFind();
  b=BID;
  a=BID;
  SetLabel("Label_up",5,indicator_color1);
  SetLabel("Label_dn",25,indicator_color2);
  SetLabel("Label_rs",45,clrMediumSeaGreen);
//---
  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  ObjectsDeleteAll(0,"Label_");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//--
  if(prev_calculated==0) {
    ArrayInitialize(up,EMPTY_VALUE);
    ArrayInitialize(dn,EMPTY_VALUE);
    ArrayInitialize(df,EMPTY_VALUE);
    return(rates_total);
  }
  if(rates_total-prev_calculated==1) {
    ch = 0;
    cl = 0;
  }

//--
  //up
  if(b<BID) {
    ch++;
    up[0] = ch;

  }
  //dn
  if(b>BID) {
    cl++;
    dn[0] = -cl;
  }

  b=BID;
  // rs
  if(ch-cl !=0 && fabs(ch-cl) > 1) rs = 100*(ch+(-cl))/(ch-(-cl)); // результат
 //df
  df[0] = rs;//ch-cl; // вывод результата

//--
  ObjectSetString(0,"Label_up",OBJPROP_TEXT,"Up: "+(string)ch);
  ObjectSetString(0,"Label_dn",OBJPROP_TEXT,"Dn: "+(string)cl);
  ObjectSetString(0,"Label_rs",OBJPROP_TEXT,"%:"+DoubleToString(rs,0));
  ObjectSetInteger(0,"Label_rs",OBJPROP_COLOR,rs>0?indicator_color1:indicator_color2);
//--
  return(rates_total);
}

//+------------------------------------------------------------------+
void SetLabel(string nm, int yd, color clr)
{
  if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_LABEL,wndNum,0,0);
    ObjectSetInteger(0,nm,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
    ObjectSetInteger(0,nm,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
    ObjectSetString (0,nm,OBJPROP_FONT,"Arial");
    ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,10);
    ObjectSetInteger(0,nm,OBJPROP_BACK,false);
    ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
    ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,false);
    ObjectSetInteger(0,nm,OBJPROP_SELECTED,false);
    ObjectSetString (0,nm,OBJPROP_TOOLTIP,"\n");
    ObjectSetInteger(0,nm,OBJPROP_YDISTANCE,yd);
    ObjectSetInteger(0,nm,OBJPROP_XDISTANCE,5);
    ObjectSetString (0,nm,OBJPROP_TEXT,"0");
    ObjectSetInteger(0,nm,OBJPROP_COLOR,clr);
  }
}
//+------------------------------------------------------------------+
 

Если что, можете взять этот, линия - результат

Файлы:
Tick.mq4  10 kb
 
Vitaly Muzichenko #:

Если что, можете взять этот, линия - результат

       Прекрасно!!!!!!!  Огромное спасибо Витали.. Потестил.Работает.!!!!!.Что дает с ходу сказать с увереностью 100% не могу.Набираю статистику и наблюдаю.Индикатор лучше чем калькулятор и лист бумаги с ручкой это беспорно.Ребята Вы облегчили мне жизнь.Здравия и успехов Вам.