Yalnızca ürünü satın alan veya kiralayan kullanıcılar yorum yazabilir
Alexey Navoykov  

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

Например, если нужно построить график спрэда (разности) между EURUSD и GBPUSD с коэффициентами 4 и 3 соответственно, то задаём такую формулу:

EURUSD * 4 - GBPUSD * 3

И получаем график:


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


Для построения доступно до 8 графиков в одном окне.  Каждому из них в настройках индикатора задаётся своя формула.

Для написания формул используются стандартные математические операторы:

+ - * / ^ > < = ( )     (знак ^ означает возведение в степень)

Операции сравнения выдают соответственно  1 или 0  (истина/ложь)

Приоритет операций также стандартный:    1.  ( )      2. ^      3. * /      4. + -      5. <=>

 

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

-  ценовые функции

-  индикаторные функции МТ4 (полный набор)

-  математические функции

-  функции получения информации о символе, и прочие функции

-  а также возможность создавать свои собственные функции


Подробное описание всех функций приведено в конце.


Большинство функций поддерживают вложенные параметры, т.е. аргумент может быть задан в виде сложного выражения, в том числе с использование других функций.

В качестве примера приведу такую формулу: 

Correl( Close(EURUSD,M1)-Close(EURUSD,M1,1), Close(1/USDCHF,M1)-Close(1/USDCHF,M1,1), M1, 100 )

Получаем график корреляции приращений цен закрытия EURUSD и 1/USDCHF за 100 минутных баров:


Хотя данный пример можно было бы написать и гораздо проще (например пользуясь специальной функцией CorrelD).

 

В формулах можно ссылаться на другие формулы, указывая это в виде  F1, F2 и т.д.   Например:

Formula1:  EURUSD

Formula2:  F1 ^ 2    (что эквивалентно EURUSD^2)


При этом можно передавать им некоторые параметры (аргументы), тем самым создавая свою функцию-шаблон.  Для этого в исходной формуле  должны быть заданы шаблонные аргументы в виде значка #

Formula1:   # / # * #

Formula2:   F1(EURUSD, GBPUSD, AUDUSD)   (что эквивалентно  EURUSD/GBPUSD*AUDUSD)

 

Для уточнения порядка аргументов, можно их указывать в виде #1, #2  и т.д. 

Formula1:   #1 / #3 * #2

Formula2:   F1(EURUSD, AUDUSD, GBPUSD)   (что эквивалентно  EURUSD/GBPUSD*AUDUSD)

 

Также имеется возможность привязаться к определённому бару, выбранному пользователем на графике.  Для этого предназначены функции LineOpen, LineClose, LineHigh и LineLow, LineVolume.   При их использовании появляется вертикальная красная линия на графике, задающая положение бара.  Её можно свободно двигать, выбирая нужный бар.  Для выбранного момента времени функция получает соответствующую цену (Open, Close, High или Low) по символу, заданному в функции.

Например, с помощью такой линии можно связать несколько графиков в одной точке:

Formula1:  #-LineClose(#)

Formula2:  F1(EURUSD)

Formula3:  F1(GBPUSD)

Formula4:  F1(1/USDCHF)

 


Можно использовать и несколько линий. Для этого к названию функции добавляем индекс:  LineClose1, LineClose2 и т.д.   Получаем разные линии, работающие независимо друг от друга.


Все имена функций и торговых символов можно писать в любом регистре.

Пробелы между операторами/символами/функциями ставить необязательно.

Если в имени торгового символа присутствуют знаки, совпадающие с математическими, например символ GAZR-9.14, то его следует заключить в квадратные скобки:

([GAZR-9.14] + [GAZR-12.14] + [GAZR-3.15]) /3

 

При отсутствии требуемого символа в "Обзоре рынка" (и отсутствии истории по нему), производится попытка подгрузить историю для этого символа из соответствующего файла .hst в папке истории.  Благодая этому можно использовать "чужую" историю для построения графиков.

Если какой-то график нужно скрыть (не рисовать на экране), то его формулу можно "закомментировать" с помощью значка ' перед началом формулы:

Formula1:  'GBPUSD/EURUSD

 

Чтобы узнать точную формулу, по которой строится той или иной график, нужно навести мышкой на его формулу в углу окна, и во всплывающей подсказке будет указана полная формула расчёта.

 

Все графики синхронизируются по времени. Используемые ценовые данные тоже. При расчёте графика в каждой точке используются только прошлые или текущие цены для данной точки, т.е. индикатор не может заглядывать в будущее.

 



ПАРАМЕТРЫ ИНДИКАТОРА

 

  • Formula1  -   здесь задаются формулы для каждого графика
  • Formula2
  • Formula3
  • Formula4
  • Formula5
  • Formula6
  • Formula7
  • Formula8
  • Shown Charts      - здесь можно вписать (через запятую или пробел) номера только тех формул, графики которых должны отображаться. Все остальные графики будут скрыты. Если ничего не указано, то отображаются все графики.
  • Precision Digits    - точность отображаемых значений индикатора (количество знаков после запятой). Если задано auto, то точность определяется автоматически.
  • TimeShift_minutes   - сдвижка по времени всех графиков относительно временной шкалы (в минутах)
  • TimeSnap_Mode    - режим ограничения временной привязки полученных значений формулы к отображаемым барам индикатора. Может быть задано в барах ("bars"), либо в минутах ("minutes"). Если ничего не задано, то ограничения нет.  Под привязкой здесь понимается разница во времени между баром, для которого рассчитывается индикатор, и фактически рассчитанным значением формулы, которое может оказаться старее, чем данный бар.  Например если по символам, входящим в формулу, пропущены бары в данном месте, то для расчёта доступны только их прошлые (устаревшие) значения, и в итоге для данного бара можно получить только устаревшее значение формулы.  Нужно ли его рисовать на экране или оставить пропуск (разрыв графика), мы и выбираем в этом параметре.  Сам размер привязки задаётся с помощью следующего параметра.
    p.s. При этом сихронизация между всеми символами, входящими в формулу, всегда полная. Т.е. при сложении символа A с символом B складываются их значения на одном и том же баре.
  • TimeSnap_Size    - максимальный размер привязки. Если временной лаг между рассчитываемым баром и полученным значением превышает данный размер, то бар не рисуется на экране.  Если задано -1, то ограничения привязки нет.
  • Draw Mode   - режим отрисовки графика:
    - LINE  (линия)
    - BARS  (бары)
    - SECTION  (отрезки между непустыми значениями)
    - HISTOGRAM  (гистограмма) 
    - POINTS  (точки)
    - AUTO  (автоматический выбор в соответствии с выбранным режимом отображения в главном окне)
  • Interpolation Timeframe  - таймфрейм для интерполяции внутрибаровых значений при построении синтетических баров (например для графика в виде баров).  По умолчанию M1.  Если такая интерполяция задействуется, то график строится лишь в пределах доступной истории по указанному таймфрейму.

  • Auto Scale            - автомасштабирование графиков.  Здесь указывается номер главного графика, к размеру которого подгоняются все остальные графики. Если задано auto, то выбирается первый непустой график.  Если ничего не задано, то автомасштабирования нет.  Масштабирование производится не динамически, а только при ручном обновлении индикатора ("Обновить"), либо при инициализации индикатора.

  • LabelsOnTheRight   - если TRUE, то формулы отображаются в правой части экрана, иначе в левой (по умолчанию)

  • Show Bid/Ask      - если TRUE, то отображаются синтетические уровни Bid/Ask для каждого графика
  • Signal_ChartNumber   - номер графика, для которого используются сигнальные значения и сигнальные линии. Можно перечислить несколько номеров (через пробел или запятую), соответственно для всех этих графиков будут работать сигналы.
  • Signal_HighValue  - верхнее сигнальное значение, при достижении которого начнут подаваться звуковые сигналы и печататься сообщение в лог.
  • Signal_LowValue  - нижнее сигнальное значение
  • Signal_HighLine   - верхняя сигнальная линия, при достижении которой будет выдаваться сигнал и сообщение. Здесь указывается имя любой построенной на графике линии (горизонтальной или трендовой), которая и станет верхней границей.
     
  • Signal_LowLine   - нижняя сигнальная линия
  • Signal_CrossCharts   - номера графиков (через пробел или запятую), при пересечении которых требуется подавать сигнал.  Если указать более двух графиков, сигнал будет подаваться при пересечении любых двух их них.   Также можно указать несколько групп графиков, отделив их знаком   например  1,2;  6,7,8     Для каждой группы будет свой сигнал.
  • Signal_Pause            - пауза между повторением одинаковых сигналов (в секундах)
  • Save_ChartNumber  - номер графика, значения которого будут сохраняться в текстовый файл. Сохранение происходит только в момент полного пересчёта индикатора (при инициализации либо при ручном обновлении графика)
  • Save_FileName         - имя файла, куда сохраняются значения графика
  • Save_FileDelimiter   - текстовый разделитель, используемый в файле. Если ничего не задано, то используется символ табуляции.
  • Color1   - цвета графиков
  • Color2
  • Color3
  • Color4
  • Color5
  • Color6
  • Color7
  • Color8




        ФУНКЦИИ


        Здесь приведён полный перечень функций, разделённый по группам.  Описание параметров функций приведено в конце.

         

        1. Группа ценовых функций

        Получают указанный параметр бара. 

        Open (symbol,  timeframe,  shift)        

        Close (symbol,  timeframe,  shift)        

        High (symbol,  timeframe,  shift)          

        Low (symbol,  timeframe,  shift)

        Volume (symbol,  timeframe,  shift)

         

        LineOpen (symbol,  timeframe,  shift)     -  получают параметр бара для вертикальной линии

        LineClose (symbol,  timeframe,  shift)

        LineHigh (symbol,  timeframe,  shift)

        LineLow (symbol,  timeframe,  shift)

        LineVolume (symbol,  timeframe,  shift)

         

        shift  -  это сдвижка в барах (влево) относительно текущего рассчитываемого бара



        2. Группа стандартных индикаторных функций

        Рассчитывают значение технических индикаторов, используемых в МТ4.  Синтаксис почти у всех совпадает с принятым в MQL4:  https://docs.mql4.com/ru/indicators

        Отличия есть лишь у нескольких функций, имеющих в MQL4 параметр ma_shift, который здесь совмещён с параметром shift

         

        ATR (symbol,  timeframe,  period,  shift)

        StdDev (symbol,  timeframe,  period,  method,  applied_price,  shift)

        AC (symbol,  timeframe,  shift)

        AO (symbol,  timeframe,  shift)

        AD (symbol,  timeframe,  applied_volume,  shift)

        ADX (symbol,  timeframe,  period,  applied_price,  adx_mode,  shift)

        Alligator (symbol,  timeframe,  jaw_period,  jaw_shift,  teeth_period,  teeth_shift,  lips_period,  lips_shift,  method,  applied_price,  gator_mode,  shift)

        Gator (symbol,  timeframe,  jaw_period,  jaw_shift,  teeth_period,  teeth_shift,  lips_period,  lips_shift,  method,  applied_price,  gator_mode,  shift)

        Bands (symbol,  timeframe,  period,  ,  applied_price,  bands_mode,  shift)

        BearsPower (symbol,  timeframe,  period,  applied_price,  shift)

        BullsPower (symbol,  timeframe,  period,  applied_price,  shift)

        BWMFI (symbol,  timeframe,  applied_volume,  shift)

        CCI (symbol,  timeframe,  period,  applied_price,  shift)

        DeMarker (symbol,  timeframe,  period,  shift)

        Envelopes (symbol,  timeframe,  period,  method,  applied_price,  ,  bands_mode,  shift)

        Force (symbol,  timeframe,  period,  method,  applied_price,  applied_volume,  shift)

        Fractals (symbol,  timeframe,  bands_mode,  shift)

        Ichimoku (symbol,  timeframe,  period_tenkan,  period_kijun,  period_senkou,  ichimoku_mode,  shift)

        MA (symbol,  timeframe,  period,  method,  applied_price,  shift)

        MACD (symbol,  timeframe,  fast_period,  slow_period,  signal_period,  applied_price,  mode,  shift)

        Momentum (symbol,  timeframe,  period,  applied_price,  shift)

        MFI (symbol,  timeframe,  period,  shift)

        RSI (symbol,  timeframe,  period,  applied_price,  shift)

        Stochastic (symbol,  timeframe,  k_period,  d_period,  ,  method,  price_field,  mode,  shift)

        OSMA (symbol,  timeframe,  fast_period,  slow_period,  signal_period,  applied_price,  shift)

        OBV (symbol,  timeframe,  applied_volume,  shift)

        SAR (symbol,  timeframe,  ,  ,  shift)

        RVI (symbol,  timeframe,  period,  mode,  shift)

        WPR (symbol,  timeframe,  period,  shift)

         

        Maximum (symbol,  timeframe,  period,  applied_mode,  shift)     -  получает максимальную цену на заданном интервале

        Minimum (symbol,  timeframe,  period,  applied_mode,  shift)      -  получает минимальную цену на заданном интервале


        Следующие 10 функций дублируют функции максимума и минимума для частных случаев:

          MaxClose (symbol,  timeframe,  period,  shift)         - максимальная цена закрытия                                            

          MinClose (symbol,  timeframe,  period,  shift)          - минимальная цена закрытия

          MaxOpen (symbol,  timeframe,  period,  shift)         - максимальная цена открытия, и т.д.  

          MinOpen (symbol,  timeframe,  period,  shift)

          MaxHigh (symbol,  timeframe,  period,  shift)

          MinHigh (symbol,  timeframe,  period,  shift)

          MaxLow (symbol,  timeframe,  period,  shift)

          MinLow (symbol,  timeframe,  period,  shift)

          MaxVolume (symbol,  timeframe,  period,  shift)

          MinVolume (symbol,  timeframe,  period,  shift)

         
        Примечание:   Не все индикаторные функции поддерживают вложенность аргумента  s
        ymbol (т.е. заданного в виде выражения).  Поддержка есть пока только у следующих функций  ATR,  Bands,  CCI,  Envelopes,  MA,  Momentum,  StdDev,  RSI,  Maximum,  Minimum.   В дальнейшем планируется расширить этот список.



        3. Группа дополнительных индикаторных функций.

        Здесь пока только функция корреляции:

        Correlation (symbol1,  symbol2,  timeframe,  period,  shift),     либо можно писать сокращённо:  Correl

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


        Для нестационарных рядов можно использовать функцию

        CorrelationD (symbol1,  symbol2,  timeframe,  period,  shift),     либо можно писать сокращённо CorrelD

         которая считает корреляцию между дельтами (первыми разностями)  symbol1 и symbol2



        4. Группа математических функций


        Abs (a                     - модуль значения a

        Log (a,  b)                 - логарифм a по основанию b.  Если b не задано, то берётся натуральный логарифм

        Log10 (a)                  - десятичный логарифм

        Exp (a)                      - экспонента

        Rand () или  Rnd ()   - случайная величина от 0 до 1

        Round (a,  b)             - округление a до точности b (число знаков после запятой).  Если b не задано, то округляется до целого

        Sign (a)                     - «знак» аргумента (-1 для отрицательного числа,  1 для положительного,  0 для 0)

        Sin (a)                       - синус

        Cos (a)                      - косинус

        Tan (a)                      - тангенс

        Max (a, b, …)             - максимальное значение из перечисленных аргументов (поддерживается до 8 аргументов)

        Min (a, b, …)              - минимальное значение  из перечисленных аргументов

         


        5. Группа функций для получения информации о символе

         

        LotSize (symbol)        - размер лота

        Tick (symbol)             - размер тика

        Point (symbol)           - размер пункта

        Pip (symbol)               - то же

        Ask (symbol)              - цена аск

        Bid (symbol)               - цена бид

         


        Параметры функций:


        В таблице приведена информация о параметрах. Их значения можно задавать как в числовом, так и в текстовом виде (при наличии)


        Параметр

        Значение по умолчанию

        Возможные значения

         symbol

        0 =текущий символ основного окна)

         

         timeframe

        0 =текущий таймфрейм основного окна)

        0,  M1, M5, M15, M30, H1, H4, D1, W1, MN1

         shift

        0

         

         method

        0

        SMA =0,  EMA =1,  SMMA =2,  LWMA =3

         applied_price

        0

        Close =0,  Open =1,   High =2,  Low =3,  Median =4, Typical =5,  Weighted =6

         applied_mode

        0

        Open =0,  Low =1,  High =2,  Close =3,  Volume=4

         applied_volume

        0

        Tick =0,  Real =1

         mode

        0

        Main =0,  Signal =1

         adx_mode

        0

        Main =0,  PlusDI =1,  MinusDI =2

         bands_mode

        0

        Main =0,  Upper =1,  Lower =2

         gator_mode

        1

        Jaw =1,  Teeth =2,  Lips=3

         ichimoku_mode

        1

        Tenkan=1,  Kijun=2,  SenkouA=3,  SenkouB=4,  Chinkou=5

         price_field

        0

        LowHigh =0,  CloseClose =1

         period

        100

         

         fast_period

        100

         

         slow_period

        200

         

         signal_period

        100

         

         k_period

        100

         

         d_period

        100

         

         period_tenkan

        9

         

         period_kijun

        26

         

         period_senkou

        52

         

         

        Примечания:


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

        MA(EURUSD, D1)    что эквивалентно  MA(EURUSD, D1, 100, 0, 0, 0)


        Если после опущенных параметров идёт параметр со значением, то следует  явно отделять все предшествующие параметры запятыми:

        MA (EURUSD, , 20, , , 1)    что эквивалентно  MA(EURUSD, 0, 20, 0, 0, 1)


        И пара слов о параметре shift.   Помимо указания в параметрах функции, его также можно задать в квадратных скобках следом за функцией:

        MA(EURUSD,,100)[10],   что эквивалентно   MA(EURUSD, , 100, , , 10)

        Точно также его можно указать следом за одиночным символом:

        EURUSD[10],   что эквивалентно  Close(EURUSD,,10)

        Alexey Navoykov  
        ingensi:
        Засада! Не скачивается.
        А что пишет? Его только сегодня опубликовали, может были какие-то неполадки в тот момент.
        Alexey Navoykov  
        Вот бесплатная демо-версия индикатора.  Отличие от полной версии в том, что график рисуется только за прошлые месяцы.
        Dosyalar:
        Jan Kupilik  

        Hello

        Is it possible make  chart EURJPY sell - GBPJPY buy? 

        Which is used in futures  chart spread

         

        Alexey Navoykov  
        kilipuk:

        Hello

        Is it possible make  chart EURJPY sell - GBPJPY buy? 

        Which is used in futures  chart spread

         

        Yes, it's easy.  You should enter formula:  GBPJPY - EURJPY

        And you can also add some coefficients for this symbols.   I don't know what is 'futures chart spread' you mean.   Currency spreads on CME(Globex) or what?

        Eduard_D  

        Добавьте, пожалуйста, в DrawMode  СANDLES  (возможность выводить график в свечах) также как это реализовано у Вас в ChartBuilder MT5.

        Alexey Navoykov  
        Eduard_D:

        Добавьте, пожалуйста, в DrawMode  СANDLES  (возможность выводить график в свечах) также как это реализовано у Вас в ChartBuilder MT5.

        Подумаю над этим.  Просто в МТ4 нет штатной отрисовки свечей в индикаторе. Равно как и баров (Bars).  Но бары оказалось легко отрисовать самому с помощью графических объектов, а со свечами сложнее.
        1392606  

        Alexey,


        I bought the ChartBuilder indicator. I generated the chart I needed. Now, I need to put in this graph a linear regression (moving average). How I do?


        Thank you

        Alexey Navoykov  
        1392606:

        Alexey,


        I bought the ChartBuilder indicator. I generated the chart I needed. Now, I need to put in this graph a linear regression (moving average). How I do?


        Thank you


        If you mean the Regression Channel then you can select such tool at the toolbar and place into your graph.

        And if you need a moving average then it can be set as an additional formula. For example, you have a Formula1= A+B+C,  so you can set a Formula2= MA(F1, D1, 20) to create a moving average using Formula1

        Yalnızca ürünü satın alan veya kiralayan kullanıcılar yorum yazabilir