Um indicador muito útil - página 2

 
Talvez você devesse gravar um vídeo e colocar um sistema comercial?
 
__zeus__:
Talvez você devesse gravar um vídeo e colocar um sistema comercial?
o estado é suficiente.
 
__zeus__:

Se você quer um pouco de aspereza, pegue-o.

Go wool the Brent story 11.19

Aí está, essa é uma história diferente! Você já pode ver o vôo da imaginação extravagante, desenfreada, etc., etc.)

 
Dmitriy Skub:

Bem, isso é outra história! Aqui você pode ver o vôo da imaginação fantasiosa, desenfreada, etc., etc.)

Não perca o tempo de ninguém. Você parece não ter nada melhor para fazer.

 
__zeus__:

Você não tem nada de construtivo a dizer. Você parece não ter nada melhor para fazer.

Bingo, você adivinhou!)
 
__zeus__:

Tudo na vida real, é óbvio a partir das palavras que você não utilizou este indicador.

Compare com YuCluster ou Delta Volume Histogram antes de começar a falar bobagem.

Não significa nada se você tem uma história recente?

Bem, se você gosta tanto deste indicador, e não quer ouvir ninguém, então é uma questão pequena.

Tente negociar com ela....

Adicionado por

Aqui está um indicador de tempo real (presente)

//+------------------------------------------------------------------+
//|                                                     FVolumes.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
#define  on_call -111

#property indicator_separate_window
//---
#property indicator_buffers 2
#property indicator_plots   2

//--- plot Label1
#property indicator_label1  "Sell vol"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//---
#property indicator_label2  "Buy vol"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  3
//---
double SellBuf[], BuyBuf[];
ulong sell_vol, buy_vol;
ulong start_time;
MqlTick ticks[];
bool is_book;
int event_cnt;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  event_cnt = 0;
  if(CopyTicks(Symbol(), ticks, COPY_TICKS_TRADE, 0, 1) == 1)
  {
    start_time = ticks[0].time_msc + 1;
  }
  else
  {
    Alert("Не получено начальное время тиков!");
    return(INIT_FAILED);
  }   
  is_book = MarketBookAdd(Symbol());
  if(is_book == false)
  {
    Alert("Не добавлен стакан по символу " + Symbol());
    return(INIT_FAILED);
  }
//--- Set buffers 
   IndicatorSetInteger(INDICATOR_DIGITS,0);
   IndicatorSetString(INDICATOR_SHORTNAME,"FVolumes");
//---Set buffers
   SetIndexBuffer(0,SellBuf,INDICATOR_DATA);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(SellBuf,true);

   SetIndexBuffer(1,BuyBuf,INDICATOR_DATA);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(BuyBuf,true);
//--- indicator buffers mapping
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+  
void OnDeinit(const int reason)
{
  if(is_book == true)  MarketBookRelease(Symbol());
}

//+------------------------------------------------------------------+
//| Custom indicator On book event function                          |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
  if(symbol == Symbol())
  {
    double price[];
    OnCalculate(event_cnt,event_cnt,on_call,price); 
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
bool GetVolumes(ulong &s_vol, ulong &b_vol)
{
  s_vol = 0;
  b_vol = 0;
  int result = CopyTicks(Symbol(), ticks, COPY_TICKS_TRADE, start_time, 0);
  if(result > 0)
  {
    for(int i = 0; i < result; i++)
    {
      if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) 
      { 
        s_vol += ticks[i].volume;
      }
      else
      if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) 
      { 
        b_vol += ticks[i].volume; 
      }
    }
    start_time = ticks[0].time_msc + 1;
    return(true);
  }
  return(false);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
  if(prev_calculated == 0)
  {
    ArrayInitialize(SellBuf, EMPTY_VALUE);
    ArrayInitialize(BuyBuf, EMPTY_VALUE);
    SellBuf[0]= 0;
    BuyBuf[0] = 0;
  }
//---
  if(GetVolumes(sell_vol, buy_vol)== true)
  {
    SellBuf[0] -= double(sell_vol);
    BuyBuf[0] += double(buy_vol);
  }  
//--- return value of prev_calculated for next call
  event_cnt=rates_total;
  return(rates_total);
}
//+------------------------------------------------------------------+
 

E este indicador mostra tanto os negócios como os volumes em tempo real

//+------------------------------------------------------------------+
//|                                                    DealsLent.mq5 |
//|                                Copyright 2016-2018, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016-2018, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.04"
#define  on_call -111  //Отрицательное число для вызова функции OnCalculate
// (данные не могут быть в отрицательном диаппозоне)
//---
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plot Label1
#property indicator_label1  "Sell"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrLightPink
#property indicator_style1  STYLE_SOLID
#property indicator_width1  5
//--- plot Label2
#property indicator_label2  "Sell_vol"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  5
//--- plot Label3
#property indicator_label3  "Buy"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3  clrLightSkyBlue
#property indicator_style3  STYLE_SOLID
#property indicator_width3  5
//--- plot Label4
#property indicator_label4  "Buy_vol"
#property indicator_type4   DRAW_HISTOGRAM
#property indicator_color4  clrBlue
#property indicator_style4  STYLE_SOLID
#property indicator_width4  5
//--- indicator buffers
double SellBuffer[];
double BuyBuffer[];
double SellVol[];
double BuyVol[];
ulong sell_all;
ulong buy_all;
ulong sell_all_vol;
ulong buy_all_vol;
ulong start_time;
ulong last_tick_time;
int event_cnt;
int mem_bars;
bool is_book;    
MqlTick ticks[];
//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   sell_all = 0;
   buy_all = 0;
   sell_all_vol = 0;
   buy_all_vol = 0; 
   event_cnt=0;
   is_book = MarketBookAdd(Symbol());
//--- Set buffers 
   IndicatorSetInteger(INDICATOR_DIGITS,0);
   IndicatorSetString(INDICATOR_SHORTNAME,"DealsLent");
//---Set buffers
   SetIndexBuffer(0,SellBuffer,INDICATOR_DATA);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(SellBuffer,true);
   SetIndexBuffer(1,SellVol,INDICATOR_DATA);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(SellVol,true);
   SetIndexBuffer(2,BuyBuffer,INDICATOR_DATA);
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(BuyBuffer,true);
   SetIndexBuffer(3,BuyVol,INDICATOR_DATA);
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   ArraySetAsSeries(BuyVol,true);

 //---Set objects
   int window=ChartWindowFind(ChartID(),"DealsLent");
   ObjectCreate(ChartID(),"Dl_label_1",OBJ_LABEL,window,0,0);
   ObjectCreate(ChartID(),"Dl_label_2",OBJ_LABEL,window,0,0);
   ObjectCreate(ChartID(),"Dl_label_3",OBJ_LABEL,window,0,0);
   ObjectCreate(ChartID(),"Dl_label_4",OBJ_LABEL,window,0,0);
   ObjectSetInteger(ChartID(),"Dl_label_1",OBJPROP_YDISTANCE,30);
   ObjectSetInteger(ChartID(),"Dl_label_1",OBJPROP_XDISTANCE,0);
   ObjectSetInteger(ChartID(),"Dl_label_2",OBJPROP_YDISTANCE,60);
   ObjectSetInteger(ChartID(),"Dl_label_2",OBJPROP_XDISTANCE,0);
   ObjectSetInteger(ChartID(),"Dl_label_3",OBJPROP_YDISTANCE,15);
   ObjectSetInteger(ChartID(),"Dl_label_3",OBJPROP_XDISTANCE,0);
   ObjectSetInteger(ChartID(),"Dl_label_4",OBJPROP_YDISTANCE,45);
   ObjectSetInteger(ChartID(),"Dl_label_4",OBJPROP_XDISTANCE,0);
   ObjectSetInteger(ChartID(),"Dl_label_1",OBJPROP_COLOR,clrLightPink);
   ObjectSetInteger(ChartID(),"Dl_label_2",OBJPROP_COLOR,clrLightSkyBlue);
   ObjectSetInteger(ChartID(),"Dl_label_3",OBJPROP_COLOR,clrLightPink);
   ObjectSetInteger(ChartID(),"Dl_label_4",OBJPROP_COLOR,clrLightSkyBlue);
   ObjectSetString(ChartID(),"Dl_label_1",OBJPROP_TEXT,"Сум. объём Sell: 0");
   ObjectSetString(ChartID(),"Dl_label_2",OBJPROP_TEXT,"Сум. объём Buy: 0");
   ObjectSetString(ChartID(),"Dl_label_3",OBJPROP_TEXT,"Сум. кол-во Sell: 0");
   ObjectSetString(ChartID(),"Dl_label_4",OBJPROP_TEXT,"Сум. кол-во Buy: 0");
//---
   PlotIndexSetInteger(0,PLOT_SHOW_DATA,false);
   PlotIndexSetInteger(1,PLOT_SHOW_DATA,false);
   PlotIndexSetInteger(2,PLOT_SHOW_DATA,false);
   PlotIndexSetInteger(3,PLOT_SHOW_DATA,false);
   ChartRedraw(ChartID());
   if(CopyTicks(Symbol(), ticks, COPY_TICKS_TRADE, 0, 1) == 1)
   {
     last_tick_time = ticks[0].time_msc;
     start_time = GetMicrosecondCount();
     mem_bars = Bars(Symbol(), PERIOD_CURRENT);
   }
   else return(INIT_FAILED);  
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+  
void OnDeinit(const int reason)
{
  if(is_book == true) MarketBookRelease(Symbol());
  ObjectDelete(ChartID(),"Dl_label_1");
  ObjectDelete(ChartID(),"Dl_label_2");
  ObjectDelete(ChartID(),"Dl_label_3");
  ObjectDelete(ChartID(),"Dl_label_4");
  if(reason==REASON_INITFAILED)
  {
    int window=ChartWindowFind();
    ChartIndicatorDelete(ChartID(),window,"DealsLent");
  }
}
//+------------------------------------------------------------------+
//| Custom indicator On book event function                          |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
  if(symbol==Symbol())
  {
    double price[];
    OnCalculate(event_cnt,event_cnt,on_call,price);                      //Вызов функции для обработки данных 
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void GetData(double& s_data, double& b_data, double& s_vol, double& b_vol)
{
  s_data = 0;
  b_data = 0;
  s_vol = 0;
  b_vol = 0;
  ulong delta_time = ulong(MathAbs(double(GetMicrosecondCount() - start_time)));
  int result = CopyTicksRange(Symbol(), ticks, COPY_TICKS_TRADE, last_tick_time, last_tick_time + delta_time);
  if(result > 0)
  {
    for(int i = 0; i < result; i++)
    {
      if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) 
      { 
        s_data++;
        s_vol += double(ticks[i].volume);
      }
      else
      if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) 
      { 
        b_data++;
        b_vol += double(ticks[i].volume); 
      }
    }
    last_tick_time = ticks[0].time_msc + 1;
    start_time = GetMicrosecondCount();
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
  if(prev_calculated==0)
  {
    ArrayInitialize(SellBuffer,EMPTY_VALUE);
    ArrayInitialize(BuyBuffer,EMPTY_VALUE);
    ArrayInitialize(SellVol,EMPTY_VALUE);
    ArrayInitialize(BuyVol,EMPTY_VALUE);
  }
  else
  {
    int cur_bars = Bars(Symbol(), PERIOD_CURRENT);
    if(cur_bars < 10) return(prev_calculated);
    if((begin != on_call) && (mem_bars != cur_bars))
    {
      mem_bars = cur_bars;
      sell_all = 0;
      buy_all = 0;
      sell_all_vol = 0;
      buy_all_vol = 0;
      SellBuffer[1] = EMPTY_VALUE;
      SellVol[2] = EMPTY_VALUE;
      BuyBuffer[3] = EMPTY_VALUE;
      BuyVol[4] = EMPTY_VALUE;
    }
    double sell_data, buy_data, sell_vol, buy_vol;
    GetData(sell_data, buy_data, sell_vol, buy_vol);
    if(sell_data > 0.0)
    {
      SellBuffer[0] = sell_data;
      sell_all += ulong(sell_data);
    } 
    if(sell_vol > 0.0)
    {
      SellVol[1] = sell_vol;
      sell_all_vol += ulong(sell_vol);
    }
    if(buy_data > 0.0)
    {
      BuyBuffer[2] = buy_data;
      buy_all += ulong(buy_data);
    }
    if(buy_vol > 0.0)
    {
      BuyVol[3] = buy_vol;
      buy_all_vol += ulong(buy_vol);
    }
  } 
  ObjectSetString(ChartID(),"Dl_label_1",OBJPROP_TEXT,"Сум. объём Sell: " + string(sell_all_vol));
  ObjectSetString(ChartID(),"Dl_label_2",OBJPROP_TEXT,"Сум. объём Buy: " + string(buy_all_vol));
  ObjectSetString(ChartID(),"Dl_label_3",OBJPROP_TEXT,"Сум. кол-во Sell: " + string(sell_all));
  ObjectSetString(ChartID(),"Dl_label_4",OBJPROP_TEXT,"Сум. кол-во Buy: " + string(buy_all));
  ChartRedraw(ChartID());  
  event_cnt=rates_total;
//--- return value of prev_calculated for next call
  return(rates_total);
}
//+------------------------------------------------------------------+
 
prostotrader:

Bem, já que você gosta tanto deste indicador e não quer ouvir mais ninguém, é só uma questão de fazer um pouco.

Tente negociar com ela....

Adicionado

Aqui está um indicador que funciona em tempo real (presente)

Você tem algo parecido para o QuickBooks?

 
prostotrader:

Mas este indicador mostra tanto os negócios quanto os volumes em tempo real

Trocar estes indicadores é como trocar um pedaço de merda por um pedaço de merda, o efeito é temporário.

 
__zeus__:

Negociar com estes indicadores é como negociar um pedaço de merda, o efeito é apenas temporário.

O que você vai negociar é uma porcaria,

mas os gráficos são lindos :)