← К каталогу
Исходный код · ID 4353

Market_Statistics

volume spread analysis v8.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор рассчитывает и отображает на графике аналитические линии профиля объёма. Основные рассчитываемые значения включают PVP (уровень наибольшей концентрации объёма), VWAP (средневзвешенную цену по объёму) и уровни стандартного отклонения (SD1, SD2, SD3) как в положительном, так и в отрицательном направлении. Также строится гистограмма объёма с тепловой цветовой шкалой.

Индикатор поддерживает гибкую настройку периода анализа: задаётся количество дней назад для начала и конца анализируемого диапазона, а также начальный час торгового дня. Для таймфрейма M1 предусмотрена отдельная настройка глубины анализа в барах. В качестве источника объёма доступен выбор между тиковым объёмом и TPO (Time Price Opportunity).

Управление отображением всех линий и гистограммы осуществляется через кнопочный интерфейс на графике. Кнопка переключает видимость аналитических данных. Индикатор также имеет механизм автообновления через таймер с настраиваемым интервалом в секундах.

Настройки программы

НастройкаОписание
Notice Предупреждение — Текстовое предупреждение, отображаемое в информационном поле
FreeFx__ Дополнительный текст — Текстовый параметр для дополнительной информации
Refresh Every 30 seconds? (RefreshEverySeconds) Обновление каждые N секунд — Интервал автообновления индикатора в секундах
InstanceOnChart Экземпляр на графике — Номер экземпляра индикатора на графике, используется для позиционирования меток
DaysBackStart Дней назад (начало) — Количество дней назад для начала анализируемого диапазона
DaysBackEnd Дней назад (конец) — Количество дней назад для конца анализируемого диапазона
StartHourOfDay Час начала торгового дня — Час начала торгового дня для расчёта начала диапазона анализа
BarsBackOnM1 Баров назад на M1 — Количество баров назад для анализа на таймфрейме M1
UseTPOInsteadOfTickVolume Использовать TPO вместо тикового объёма — При включении использует TPO (Time Price Opportunity) вместо тикового объёма для расчётов
DragEndLine Перетаскивание конечной линии — Включает возможность перетаскивания конечной вертикальной линии на графике
HistogramAmplitudePercent Амплитуда гистограммы (%) — Амплитуда гистограммы в процентах от ширины диапазона
Show_Histogram Показать гистограмму — Включает отображение гистограммы объёма с тепловой цветовой шкалой
Show_SD1 Показать СО 1 — Включает отображение первого уровня стандартного отклонения
Show_SD2 Показать СО 2 — Включает отображение второго уровня стандартного отклонения
Show_SD3 Показать СО 3 — Включает отображение третьего уровня стандартного отклонения
Show_PVP Показать PVP — Включает отображение линии PVP (уровень наибольшего объёма)
Show_VWAP Показать VWAP — Включает отображение линии VWAP (средневзвешенная цена по объёму)
Show_POC Показать POC — Включает отображение линии POC (Point of Control)
POC_Color Цвет POC — Цвет линии POC (Point of Control)
POC_Thickness Толщина POC — Толщина линии POC (Point of Control)
POC_Style Стиль POC — Стиль линии POC (Point of Control)
LabelFontSize Размер шрифта меток — Размер шрифта меток стандартного отклонения и скошенности
LabelColorSD Цвет меток СО — Цвет текста меток стандартного отклонения и скошенности
button_note1 Заметка кнопки 1 — Текстовая заметка для первой кнопки
What window to put the button on. If <0, the button will use the same sub-window as the indicator. (btn_Subwindow) Подокно кнопки — Номер подокна для размещения кнопки; если отрицательное значение, кнопка размещается в том же подокне, что и индикатор
button corner on chart for anchoring (btn_corner) Угол кнопки — Угол графика для привязки кнопки
a button name (btn_text) Текст кнопки — Текст, отображаемый на кнопке управления
button font name (btn_Font) Шрифт кнопки — Шрифт текста кнопки управления
button font size (btn_FontSize) Размер шрифта кнопки — Размер шрифта текста кнопки
ON color when the button is turned on (btn_text_ON_color) Цвет текста кнопки (вкл) — Цвет текста кнопки при включённом состоянии
OFF color when the button is turned off (btn_text_OFF_color) Цвет текста кнопки (выкл) — Цвет текста кнопки при выключенном состоянии
background color of the button (btn_background_color) Фон кнопки — Цвет фона кнопки управления
border color the button (btn_border_color) Граница кнопки — Цвет границы кнопки управления
x coordinate of the button (button_x) X координата кнопки — Горизонтальная координата кнопки на графике
y coordinate of the button (button_y) Y координата кнопки — Вертикальная координата кнопки на графике
button width (btn_Width) Ширина кнопки — Ширина кнопки управления на графике
button height (btn_Height) Высота кнопки — Высота кнопки управления на графике
Unique ID for each button (UniqueButtonID) Уникальный ID кнопки — Уникальный идентификатор кнопки управления отображением
button_note2 Заметка кнопки 2 — Текстовая заметка для второй кнопки
Interpolate in multi time frame mode? (Interpolate) Интерполяция — Включает интерполяцию в многотаймфреймовом режиме
Получить полный код

Поиск по коду файла

#property version   ""

#property indicator_chart_window

#property indicator_buffers 8
#property indicator_color1 clrDarkGray      // PVP
#property indicator_width1 14
#property indicator_color2 clrNONE         //clrAqua         // VWAP
#property indicator_width2 2
#property indicator_color3 clrNONE         //clrGray         // SD1Pos
#property indicator_width3 1
#property indicator_style3 2
#property indicator_color4 clrNONE         //clrGray         // SD1Neg
#property indicator_width4 1
#property indicator_style4 2
#property indicator_color5 clrNONE         //clrGray         // SD2Pos
#property indicator_width5 1
#property indicator_style5 2
#property indicator_color6 clrNONE         //clrGray         // SD2Neg
#property indicator_width6 1
#property indicator_style6 2
#property indicator_color7 clrNONE         //clrGray         // SD3Pos
#property indicator_width7 1
#property indicator_style7 2
#property indicator_color8 clrNONE         //clrGray         // SD3Neg
#property indicator_width8 1
#property indicator_style8 2

extern string Notice = "Trading are risky! Trade only if you can loss your money";
extern string FreeFx__ = "free tools for forex! Join our channel for more free eas";
extern string The_our_telegram = "";
input int  RefreshEverySeconds        = 30;                             // Refresh Every 30 seconds?

extern int InstanceOnChart            = 1;

extern int DaysBackStart              = 1;
extern int DaysBackEnd                = 0;
extern int StartHourOfDay             = 0;
extern int BarsBackOnM1               = 100;

extern bool UseTPOInsteadOfTickVolume = false;

extern bool DragEndLine               = false;

extern int  HistogramAmplitudePercent = 50;
extern bool Show_Histogram            = true;

extern bool Show_SD1                  = true;
extern bool Show_SD2                  = true;
extern bool Show_SD3                  = true;
extern bool Show_PVP                  = true;
extern bool Show_VWAP                 = true;

extern bool Show_POC                  = true;
extern color POC_Color                = clrAqua;
extern int POC_Thickness              = 4;
extern int POC_Style                  = 0;

extern int LabelFontSize              = 15;
extern color LabelColorSD             = clrGray;

extern string             button_note1          = "------------------------------"; // ------------------------------
extern int                btn_Subwindow         = 0;                                // What window to put the button on.  If <0, the button will use the same sub-window as the indicator.
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER;                // button corner on chart for anchoring
extern string             btn_text              = "MARKET";                         // a button name
extern string             btn_Font              = "Arial";                          // button font name
extern int                btn_FontSize          = 9;                                // button font size               
extern color              btn_text_ON_color     = clrLime;                          // ON color when the button is turned on
extern color              btn_text_OFF_color    = clrRed;                           // OFF color when the button is turned off
extern color              btn_background_color  = clrDimGray;                       // background color of the button
extern color              btn_border_color      = clrBlack;                         // border color the button
extern int                button_x              = 260;                              // x coordinate of the button     
extern int                button_y              = 115;                              // y coordinate of the button     
extern int                btn_Width             = 80;                               // button width
extern int                btn_Height            = 20;                               // button height
extern string             UniqueButtonID        = "Stat";                           // Unique ID for each button        
extern string             button_note2          = "------------------------------"; // ------------------------------
extern bool               Interpolate           = true;                             // Interpolate in multi time frame mode?
bool show_data, recalc=false;
string IndicatorObjPrefix, buttonId;

double SD, PVP[], VWAP[], SD1Pos[], SD1Neg[], SD2Pos[], SD2Neg[], SD3Pos[], SD3Neg[], Hist[];

string label = "MS_Daily_", OBJECT_PREFIX;
int Bars_Back = 0, Bars_Back_End = 0, items;
datetime CurrentCandleTime = D'2034.03.05 15:46:58';
bool startLineDragged = false, endLineDragged   = false, firstRun;

void OnTimer()
{
   string test_obj = "AutoRefresh";

   int current_tf = Period();
   int temp_tf = 0;
   switch(current_tf)
   {
      case PERIOD_M1:  temp_tf = PERIOD_M5; break;
      case PERIOD_M5:  temp_tf = PERIOD_M1; break;
      case PERIOD_M15: temp_tf = PERIOD_M5; break;
      case PERIOD_M30: temp_tf = PERIOD_M15; break;
      case PERIOD_H1:  temp_tf = PERIOD_M30; break;
      case PERIOD_H4:  temp_tf = PERIOD_H1; break;
      case PERIOD_D1:  temp_tf = PERIOD_H4; break;
      case PERIOD_W1:  temp_tf = PERIOD_D1; break;
      case PERIOD_MN1: temp_tf = PERIOD_W1; break;
      default: temp_tf = PERIOD_M1; break;
   }
   ChartSetSymbolPeriod(0, _Symbol, temp_tf);
   ChartSetSymbolPeriod(0, _Symbol, current_tf);

   ChartRedraw();

   Print("Akif Market Stat indicator auto-refreshed at ", TimeToString(TimeCurrent(), TIME_SECONDS));
}

int OnInit()
{
      // код доступен только после оплаты
   }

void createButton(string buttonID,string buttonText,int width2,int height,string font,int fontSize,color bgColor,color borderColor,color txtColor)
{
      ObjectDelete    (0,buttonID);
      ObjectCreate    (0,buttonID,OBJ_BUTTON,btn_Subwindow,0,0);
      ObjectSetInteger(0,buttonID,OBJPROP_COLOR,txtColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,bgColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BORDER_COLOR,borderColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BORDER_TYPE,BORDER_RAISED);
      ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,width2);
      ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,height);
      ObjectSetString (0,buttonID,OBJPROP_FONT,font);
      ObjectSetString (0,buttonID,OBJPROP_TEXT,buttonText);
      ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,fontSize);
      ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(0,buttonID,OBJPROP_CORNER,btn_corner);
      ObjectSetInteger(0,buttonID,OBJPROP_HIDDEN,1);
      ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,9999);
      ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,9999);

      ObjectSetInteger(0, buttonId, OBJPROP_STATE, true);
}

void OnDeinit(const int reason) 
{
   EventKillTimer();   //stop the refreshing every minute

   if(reason != REASON_CHARTCHANGE) ObjectDelete(buttonId);
   deinit2(); 
}

void OnChartEvent(const int id, //don't change anything here
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{

   if(id==CHARTEVENT_OBJECT_CREATE || id==CHARTEVENT_OBJECT_DELETE) return; // This appears to make this indy compatible with other programs that enabled CHART_EVENT_OBJECT_CREATE and/or CHART_EVENT_OBJECT_DELETE
   if(id==CHARTEVENT_MOUSE_MOVE    || id==CHARTEVENT_MOUSE_WHEEL)   return; // If this, or another program, enabled mouse-events, these are not needed below, so skip it unless actually needed. 

   if (id==CHARTEVENT_OBJECT_CLICK && sparam == buttonId)
   {
      show_data = ObjectGetInteger(0, buttonId, OBJPROP_STATE);

      if (show_data)
      {
         EventSetTimer(RefreshEverySeconds); //Refresh every minute
         ObjectSetInteger(0,buttonId,OBJPROP_COLOR,btn_text_ON_color); 

         recalc=true;
         init2();
         mystart();
      }
      else
      {
         ObjectSetInteger(0,buttonId,OBJPROP_COLOR,btn_text_OFF_color);
         for (int Forex=0; Forex<indicator_buffers; Forex++)
              SetIndexStyle(Forex,DRAW_NONE);
         deinit2();  
      }
   }
}

int FindStartIndex()
{
   if (Bars >= Bars_Back) return(Bars_Back);
   return(0);
}

int FindEndIndex()
{
   if (Bars_Back_End < 0) return(0);
   return(Bars_Back_End);
}

int init2()
{
   label = "MS_Daily_" + InstanceOnChart + "_";
   OBJECT_PREFIX = label + "VolumeHistogram_";

   IndicatorBuffers(8);

   if (Show_PVP) SetIndexStyle(0, DRAW_LINE);
   else SetIndexStyle(0, DRAW_NONE);
   SetIndexLabel(0, "PVP");
   SetIndexBuffer(0, PVP);
   SetIndexEmptyValue(0, EMPTY_VALUE);

   if (Show_VWAP) SetIndexStyle(1, DRAW_LINE);
   else SetIndexStyle(1, DRAW_NONE);
   SetIndexLabel(1, "VWAP");
   SetIndexBuffer(1, VWAP);
   SetIndexEmptyValue(1, EMPTY_VALUE);

   if (Show_SD1) SetIndexStyle(2, DRAW_LINE);
   else SetIndexStyle(2, DRAW_NONE);
   SetIndexLabel(2, "SD1Pos");
   SetIndexBuffer(2, SD1Pos);
   SetIndexEmptyValue(2, EMPTY_VALUE);

   if (Show_SD1) SetIndexStyle(3, DRAW_LINE);
   else SetIndexStyle(3, DRAW_NONE);
   SetIndexLabel(3, "SD1Neg");
   SetIndexBuffer(3, SD1Neg);
   SetIndexEmptyValue(3, EMPTY_VALUE);

   if (Show_SD2) SetIndexStyle(4, DRAW_LINE);
   else SetIndexStyle(4, DRAW_NONE);
   SetIndexLabel(4, "SD2Pos");
   SetIndexBuffer(4, SD2Pos);
   SetIndexEmptyValue(4, EMPTY_VALUE);

   if (Show_SD2) SetIndexStyle(5, DRAW_LINE);
   else SetIndexStyle(5, DRAW_NONE);
   SetIndexLabel(5, "SD2Neg");
   SetIndexBuffer(5, SD2Neg);
   SetIndexEmptyValue(5, EMPTY_VALUE);

   if (Show_SD3) SetIndexStyle(6, DRAW_LINE);
   else SetIndexStyle(6, DRAW_NONE);
   SetIndexLabel(6, "SD3Pos");
   SetIndexBuffer(6, SD3Pos);
   SetIndexEmptyValue(6, EMPTY_VALUE);

   if (Show_SD3) SetIndexStyle(7, DRAW_LINE);
   else SetIndexStyle(7, DRAW_NONE);
   SetIndexLabel(7, "SD3Neg");
   SetIndexBuffer(7, SD3Neg);
   SetIndexEmptyValue(7, EMPTY_VALUE);

   IndicatorShortName("Market_Statistics");

   if (ObjectFind(label + "Starting_Time") == 0)
   {
      Bars_Back = iBarShift(NULL, 0, ObjectGet(label + "Starting_Time", OBJPROP_TIME1));
   }
   else
   {
      if (Period() == PERIOD_M1)
      {
         Bars_Back = BarsBackOnM1;
         if (Bars_Back >= Bars) Bars_Back = Bars - 1;
      }
      else
      {
         Bars_Back = findStartingIndexOfDayPrior(DaysBackStart);
      }
   }

   if (ObjectFind(label + "End_Time") == 0)
   {
      Bars_Back_End = iBarShift(NULL, 0, ObjectGet(label + "End_Time", OBJPROP_TIME1));
   }
   else
   {
      Bars_Back_End = findStartingIndexOfDayPrior(DaysBackEnd);
   }

   if (DragEndLine)
   {
      Bars_Back_End = 1;
   }

   firstRun = true;
   return(0);
}

int deinit2()
{
   ObDeleteObjectsByPrefix(OBJECT_PREFIX);
   ObjectDelete(label + "Label_SD_");
   ObjectDelete(label + "Label_Skew_");
   ObjectDelete(label + "Starting_Time");
   ObjectDelete(

Показано первые 50% кода (символов: 16379)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 637,90₽ ≈ $20.02