Обзор индикатора Fractals

Индикатор Fractals не имеет никаких настроек, кроме цветовых. Его главное отличие от рассмотренных в том, что вычисленные значения индикатора отрисовываются не в виде кривых, а в виде символов. Поэтому в нём вместо массива buff_curves применяется массив buff_symbols, предназначенный для отрисовки символов. Этот индикатор содержит два вида фракталов: восходящие и нисходящие. По этой причине, как и в случае с индикаторами, имеющими несколько кривых, используются два массива buff_symbols.

Подготовка массива buff_symbols с индексами id1 и id2 для записи значений:
buff_symbols[id1] = [];
buff_symbols[id2] = [];

Массив list_symbols предназначен для параметров отрисовки символов. В нашем случае для отрисовки фракталов используются символы с кодовыми значениями "217" и "218", размер "12px" и шрифт "Wingdings". Для того, чтобы симолы не накладывались на свечной график, предусмотрено смещение относительно ценовых экстремумов. Восходящие фракталы смещаются вверх на 5 пикселей относительно цен high, нисходящие на 15 вниз относительно цен low.
list_symbols[id1] = [String.fromCharCode(217), "12pt Wingdings", 5];
list_symbols[id2] = [String.fromCharCode(218), "12pt Wingdings", -15];

Как видно, элементы массива list_symbols с индексами индикатора принимают значения в виде массива с тремя элементами: символ, размер/шрифт, смещение. Вместо указания символов в виде String.fromCharCode(217) и String.fromCharCode(218), допускается короткая запись в виде "Ù" и "Ú".

for (var i = 2; i < view; i++) {...} Цикл поиска фракталов начинается со 2-й свечи с справой стороны, т.к. для каждой текущей свечи необходимы данные по 2 свечи с каждой стороны.

if ((high[i] > high[i-1]) && (high[i] > high[i-2]) && (high[i] > high[i+1]) && (high[i] > high[i+2])) buff_symbols[id1][i] = high[i]; Если цена high текущего бара выше этих цен 2-х баров с каждой стороны, то записываем значение цены high текущего бара в массив buff_symbols с соответствующими индексами.

if ((low[i] < low[i-1]) && (low[i] < low[i-2]) && (low[i] < low[i+1]) && (low[i] < low[i+2])) buff_symbols[id2][i] = low[i]; Условие для нисходящего фрактала. Значения найденных таких фракталов записывается в другой массив.

Результатом выполнения функции будут значения цен high и low в массиве buff_symbols. В качестве примера, ниже приводится таблица со значениями массива и результатом отрисовки. Для пустых ячеек – значение не определено.

ibuff_symbols[id1]buff_symbols[id2]
0
1
2362.20
3
4
5370.75
6
7
8371.00
9
10
11369.18
12
13370.78
14
15367.60
16
17
18372.61
19
20
21368.08
22
23370.15
24
25
26363.70
27371.49

Эта информация была полезной?

29 people found this page helpful so far!