매우 유용한 지표 - 페이지 2

 
동영상을 녹화하고 거래 시스템을 바로 게시할 수 있습니까?
 
__zeus__ :
동영상을 녹화하고 거래 시스템을 바로 게시할 수 있습니까?
충분한 상태
 
__zeus__ :

증거가 필요합니다

고울 스토리 브렌트 11.19

글쎄, 이것은 완전히 다른 문제입니다! 여기에서 이미 생각의 비행, 억제되지 않은 환상 등을 볼 수 있습니다. 그리고 심지어 좋아))

 
Dmitriy Skub :

글쎄, 이것은 완전히 다른 문제입니다! 여기에서 이미 생각의 비행, 억제되지 않은 환상 등을 볼 수 있습니다. 그리고 심지어 좋아))

당신에게서 건설적인 것은 아무것도 없습니다. 다른 사람들의 시간을 낭비하지 마십시오. 당신은 그 길을 따라 할 일이 없습니다.

 
__zeus__ :

당신에게서 건설적인 것은 아무것도 없습니다. 다른 사람들의 시간을 낭비하지 마십시오. 당신은 그 길을 따라 할 일이 없습니다.

빙고, 당신은 그것을 추측!
 
__zeus__ :

모든 것이 실생활에 있습니다. 단어에서이 지표가 사용되지 않았다는 것이 분명합니다.

눈보라를 동반하기 전에 YuCluster 또는 Delta Volume Histogram과 비교하십시오.

신선한 역사의 존재는 아무 의미가 없습니까?

글쎄, 당신은이 지표를 너무 좋아하고 누구의 말을 듣고 싶지 않기 때문에 그것은 당신에게 달려 있습니다.

거래를 해보세요....

추가됨

여기에 라이브 표시기(선물) 가 있습니다.

 //+------------------------------------------------------------------+
//|                                                     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);
}
//+------------------------------------------------------------------+
 

그러나 이 표시기는 거래와 거래량 모두를 실시간으로 보여줍니다.

 //+------------------------------------------------------------------+
//|                                                    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 :

글쎄, 당신은이 지표를 너무 좋아하고 누구의 말을 듣고 싶지 않기 때문에 그것은 당신에게 달려 있습니다.

거래해 보세요....

추가됨

여기에 라이브 표시기(선물) 가 있습니다.

Quik과 비슷한 것이 있습니까?

 
prostotrader :

그러나 이 표시기는 거래와 거래량 모두를 실시간으로 보여줍니다.

이러한 지표에 대한 거래는 송곳을 비누로 바꾸는 것과 같으며 효과는 일시적입니다.

 
__zeus__ :

이러한 지표에 대한 거래는 송곳을 비누로 바꾸는 것과 같으며 효과는 일시적입니다.

당신이 거래하려는 것 - 그냥 짜증납니다.

정말 멋진 그래픽 :)