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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.