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

Volatility quality Stridsman

volatility_quality_stridsman bt.mq5
Вы автор или правообладатель?

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

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

О программе

Индикатор «Volatility quality Stridsman» рассчитывает метрику качества волатильности на основе соотношений ценовых данных (свечи High, Low, Open, Close) и отображает её в отдельном подокне графика. Основное значение волатильности накапливается по формуле, включающей истинный диапазон цены и изменения закрытия, а затем сглаживается и фильтруется по заданному порогу в пипсах для подавления незначительных колебаний.

На графике отображаются четыре графика: зона заливки между значением волатильности и его быстрой скользящей средней, линия быстрой и линия медленной скользящей средних, а также цветная линия самого показателя волатильности. Цвет линии меняется в зависимости от направления изменения значения (рост, падение, без изменений).

Индикатор включает настраиваемую кнопку на чарте, позволяющую включать и выключать отображение данных. Состояние кнопки сохраняется через глобальные переменные терминала. Параметры сглаживания цены и скользящих средних настраиваются по периоду и методу (SMA, EMA, SMMA, LWMA).

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

НастройкаОписание
Price smoothing period (PriceSmoothing) Период сглаживания цены — Период сглаживания ценовых данных перед расчётом волатильности
Price smoothing method (PriceSmoothingMethod) Метод сглаживания цены — Метод сглаживания ценовых данных (SMA, EMA, SMMA или LWMA)
Fast moving average (Ma1Period) Период быстрой скользящей средней — Период быстрой скользящей средней, применяемой к значению волатильности
Fast moving average method (Ma1Method) Метод быстрой скользящей средней — Метод расчёта быстрой скользящей средней (SMA, EMA, SMMA или LWMA)
Slow moving average (Ma2Period) Период медленной скользящей средней — Период медленной скользящей средней, применяемой к значению волатильности
Slow moving average method (Ma2Method) Метод медленной скользящей средней — Метод расчёта медленной скользящей средней (SMA, EMA, SMMA или LWMA)
Filter (in pips) (FilterInPips) Фильтр (в пипсах) — Фильтр изменений показателя, выраженный в пипсах; при значении 0 фильтр отключён
button_note1 Разделитель 1 — Текстовый разделитель перед настройками кнопки
What window to put the button on (btn_Subwindow) Подокно для кнопки — Номер подокна, в котором размещается кнопка (0 — основной график)
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) Уникальный идентификатор кнопки — Уникальный идентификатор кнопки для различения нескольких экземпляров индикатора на одном чарте
button_note2 Разделитель 2 — Текстовый разделитель после настроек кнопки
Получить полный код

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

???//

#property indicator_separate_window

#property indicator_buffers 7
#property indicator_plots   4

#property indicator_label1  "vq zone"
#property indicator_type1   DRAW_FILLING
#property indicator_color1  C'0,144,0',C'144,0,0'
#property indicator_label2  "fast average"
#property indicator_type2   DRAW_LINE
#property indicator_color2  C'0,144,0'    //clrDarkGray
#property indicator_style2  STYLE_DOT
#property indicator_label3  "slow average"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrBlue       //clrDarkGray
#property indicator_style3  STYLE_SOLID
#property indicator_width3  3
#property indicator_label4  "Volatility quality"
#property indicator_type4   DRAW_COLOR_LINE
#property indicator_color4  clrDarkGray,clrAqua,clrMagenta
#property indicator_width4  3

enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average,    // Average (high+low+open+close)/4
   pr_medianb,    // Average median body (open+close)/2
   pr_tbiased,    // Trend biased price
   pr_tbiased2,   // Trend biased (extreme) price
   pr_haclose,    // Heiken ashi close
   pr_haopen ,    // Heiken ashi open
   pr_hahigh,     // Heiken ashi high
   pr_halow,      // Heiken ashi low
   pr_hamedian,   // Heiken ashi median
   pr_hatypical,  // Heiken ashi typical
   pr_haweighted, // Heiken ashi weighted
   pr_haaverage,  // Heiken ashi average
   pr_hamedianb,  // Heiken ashi median body
   pr_hatbiased,  // Heiken ashi trend biased price
   pr_hatbiased2  // Heiken ashi trend biased (extreme) price
};
enum enMaTypes
{
   ma_sma,    // Simple moving average
   ma_ema,    // Exponential moving average
   ma_smma,   // Smoothed MA
   ma_lwma    // Linear weighted MA
};

input int       PriceSmoothing         = 5;        // Price smoothing period
input enMaTypes PriceSmoothingMethod   = ma_sma;   // Price smoothing method
input int       Ma1Period              = 9;        // Fast moving average
input enMaTypes Ma1Method              = ma_sma;   // Fast moving average method
input int       Ma2Period              = 200;      // Slow moving average
input enMaTypes Ma2Method              = ma_sma;   // Slow moving average method
input double    FilterInPips           = 2.5;      // Filter (in pips)

input string             button_note1          = "------------------------------";
input int                btn_Subwindow         = 3;                      // What window to put the button on
input ENUM_BASE_CORNER   btn_corner            = CORNER_RIGHT_LOWER;     // button corner on chart for anchoring
input string             btn_text              = "VQ";                   // a button name
input string             btn_Font              = "Arial";                // button font name
input int                btn_FontSize          = 8;                      // button font size
input color              btn_text_ON_color     = clrWhite;               // ON color when the button is turned on
input color              btn_text_OFF_color    = clrRed;                 // OFF color when the button is turned off
input color              btn_background_color  = clrDimGray;             // background color of the button
input color              btn_border_color      = clrDarkGray;            // border color the button
input int                button_x              = 270;                    // x coordinate of the button
input int                button_y              = 41;                     // y coordinate of the button
input int                btn_Width             = 65;                     // button width
input int                btn_Height            = 20;                     // button height
input string             UniqueButtonID        = "Stridsman";            // Unique ID for each button                         
input string             button_note2          = "------------------------------";

bool show_data = true;
string IndicatorName, IndicatorObjPrefix, buttonId;

double val[],valc[],fill1[],fill2[],avg1[],avg2[];

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

void OnDeinit(const int reason) { 
     ObjectsDeleteAll(0, IndicatorObjPrefix, -1, -1);

     if(reason != REASON_CHARTCHANGE) ObjectDelete(0,buttonId);
}

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

void handleButtonClicks()
   {
    if(ObjectGetInteger(0, buttonId, OBJPROP_STATE))
       {
        ObjectSetInteger(0, buttonId, OBJPROP_STATE, false);
        show_data = !show_data;
        GlobalVariableSet(buttonId + "_visibility", show_data ? 1.0 : 0.0); //this line has to be here
       }
   }

void OnChartEvent(const int id,
                  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)
        handleButtonClicks();
        if (show_data)
           {
             ObjectSetInteger(0,buttonId,OBJPROP_COLOR,btn_text_ON_color);
             PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_FILLING);
             PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);
             PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_LINE);
             PlotIndexSetInteger(3, PLOT_DRAW_TYPE, DRAW_COLOR_LINE);
             Comment(""); //this line has to be here; otherwise this indicator doesn't work; so weird
           }
        else
           {
             ObjectSetInteger(0,buttonId,OBJPROP_COLOR,btn_text_OFF_color);
             for (int i=0; i<indicator_plots; i++)
                 PlotIndexSetInteger(i,

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

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

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

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

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

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

Стоимость полного кода
1 134,80₽ ≈ $13.87