Страница 1 из 2

Помогите написать индикатор

Добавлено: 06 окт 2017, 14:30
Павел Эдуардович
Всем доброго времени суток!

Во время торгов, постоянно провожу эксперименты и расчеты различных показателей, и в недавнее время столкнулся с очень интересным расчетом. За основу взял цену по high и low, а также объем, и при расчете получил показатель, который показывает ближайшее направление цены (возможно, я ошибаюсь, но руками считать не получается быстро, чтобы убедиться). Если тут найдется добрый человек, который поможет автоматизировать данные расчеты и сделать отображение на графике, то возможно, данный индикатор станет очень полезен дэйтрейдерам.

Вкратце как работает:
1. За основу берём 5 баров (количество, наверное, может быть любое) (рис 1)
2. С каждого бара нас интересует средняя цена на основе high и low, а также объем того же бара (рис 2)
3. Затем считаем среднюю цену этих баров, она станет 0 в расчетах (рис 3)
4. Распределяем цены баров по сортировке и присваиваем уровни. Объем распределяем в шкале от 100% до 0 (рис 4)
5. Расставляем полученные значения в когорте. То значение, которое попадает на 100% является этим самым индикатором. (рис 5)
6. Для наглядности рисуем лучи, где первая точка - открытие первого бара, на которых идет расчет (рис 6)

Рис 1
IPE1.png


Рис 2
IPE2.png


Рис 3
IPE3.png


Рис 4
IPE4.png


Рис 5
IPE5.png


Рис 6
IPE6.png


Также рассмотрел еще один участок, чтобы было более наглядно:

IPE1-1.png
IPE1-2.png


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

Если кто-то готов помочь с написанием индикатора, давайте в личку, расскажу о том, как я считаю и обсудим уже более конкретно. Табличку, в которой считаю, тоже скину в личку. Возможно, совместными усилиями получится даже улучшить эту гипотезу.

Всем добра и прибыльных сделок!

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 15:35
evge
Здравствуйте.

Через какие точки проводятся лучи?

Первая точка понятна: открытие от первого из пяти анализируемых баров.

Вторая точка это что, какое значение берется по оси цены? какой номер бара берется из пяти, тот у которого 100%, т.е. просто максимальный объем из тех самых пяти баров?

Тогда не понятно зачем считать остальные % баров и вообще какой-то анализ по ним проводить, если можно взять просто бар с максимальным объемом и всё.

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 15:44
evge
Ещё вопросы:

Какие именно бары в истории необходимо анализировать?
Каким образом выбраны именно эти 5 баров, а не соседние 5 или другие?

Индикатор нарисует лучи, но надо определить откуда их рисовать и анализ каких баров проводить на каждом участке графика.

Например, 20 баров назад берем 5 баров и их анализируем и индикатор будет строить свои лучи всегда на основе анализа баров с 20 по 25 или же надо как-то искать эти 5 баров предварительно на графике и только потом проводить анализ?

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 16:28
Павел Эдуардович
Приветствую!

Начну с последнего:
зачем считать остальные % баров и вообще какой-то анализ по ним проводить, если можно взять просто бар с максимальным объемом и всё

Вот тут как раз важно использовать все бары, так как по ним проводится анализ значений для второй точки. если же взять только один бар, то тогда не получится посчитать на какой позиции (по Y) должна быть точка. Т.е. из пяти баров, по мимо 5 значений, мы получаем среднее значение, которое принимаем за 0, затем все 5 значений каждого бара распределяем по возрастанию и убыванию от 0. После этого процентное соотношение каждой цены к 0 формируем в значение, тем самым, условно, рисуем уровни, которые потом пересекают ось Х (объемы). В итоге мы получаем одну точку привязанную к открытию первого бара из пяти, и 5 точек на плоскости для каждого направления. Тут, действительно, все лучи не нужны, достаточно будет только основного, т.е. того, который соответствует 100%

Как я себе вижу формирование плоскости:

За анализ берутся 5 закрытых баров от текущего (т.е. не в середине, как я изобразил на рисунках. это лишь для понимания). Получаем, что анализ начинается с 6 бара с конца (5 закрытых +1 текущий). Соответственно первая точка индикатора будет на 1 баре в анализе, на открытии.
Шкала по оси Х формируется по всему окну с графиком, где 0 открытие нашего бара. Максимальная длина окна получает разбег от 0 до 100, другая часть пропорциональная. По оси Y распределяется объем анализируемых баров (от 100% до 0%), где 100% это притык окна по горизонтале.
0.png


Сами точки у нас берутся из расчетов, они не должны отображаться, это просто ориентиры для лучей - главное, сигнальный луч. Точки появляются при пересечении значений по осям Х и Y
00.png


Ну вот как-то так))


Вторая часть:
Пропуск баров (N баров назад), это, конечно, прям идеально, но это сложно, наверное. Мне сейчас хочется понять, действительно ли расчеты дают нужный результат, а красоту можно и потом сделать)) В изначальном варианте, начинаться анализ должен всегда с 6 бара с конца (5+1), а чтобы было видно луч (если вдруг такой вопрос будет), то для этого ставим отступ на графике, тем самым рисуем как бы в даль графика.

Про анализ истории, это, конечно, хорошо, но я руководствовался не прошлыми данными, а именно будущими. То есть смысл именно в том, чтобы индикатор был динамичным и после завершения каждого бара показывал дальнейшее направление (прозвучало, как "Опять тут кто-то грааль пытается придумать"), но опять же повторюсь - руками очень трудно каждый раз считать значение, сдвигая их, возможно, это полная чушь и ничего там не показывает. Но при выборке, как раз на истории, результат положительный. Поэтому тут нужен прям грубый подход, который даст возможность проверить всё, и либо убедиться, что всё работает, либо выкинуть эту гипотезу и начать всё сначала (в плане расчетов).

Не факт, что смог объяснить, но я пытался)))

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 18:08
evge
Объясните появление точек по оси Y на графике вне анализируемых 5 баров. Каким образом Вы их рассчитали по оси Y и по оси баров X?

Через точку открытия первого бара и эти 4 точки построены лучи. Пока непонятно как рассчитаны эти точки и их координаты на оси X (бар),Y (цена)

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 18:50
Павел Эдуардович
Я вроде попробовал объяснить))

Может так поможет, я накидал таблицу с шагами действий, думаю, что так станет более понятней.
Индикатор.xlsx
(113.97 КБ) 1558 скачиваний

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 19:31
evge
Попробую в выходные реализовать

Re: Помогите написать индикатор

Добавлено: 06 окт 2017, 19:34
Павел Эдуардович
О, спасибо огромное.
Надеюсь, что всё получится.

Re: Помогите написать индикатор

Добавлено: 09 окт 2017, 10:59
evge
Перевожу что понял из приложенного файла.

1. Берем 5 баров
2. Ищем тот, у которого максимальный объем, запоминаем его среднюю цену (high + low) * 0.5. Далее "Цена бара".
3. По всем средним ценам 5 баров вычисляем общую среднюю цену. Далее "Средняя общая"
4. Прогноз строим по формуле:

Цена бара * 100 / Средняя общая - 100

Ещё для какой-то цели это всё умножаем на 1000, в итоге это значение является значением для "Луч индикатора". Я в коде оставил * 1000 под комментарием. Нет особого смысла в этом умножении, если надо добавить в формулу, то сделать это будет просто, место в коде обозначено. На визуализацию это не повлияет никак (только значения будут в 1000 раз увеличены).

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

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

В индикаторе значение рассчитывается на каждом баре истории для количества баров, указанных в параметре индикатора "Period", т.е. 5 баров можно заменить на любое другое значение.

Пример отображения

VBars-01.png
VBars-01.png (32.52 КБ) 27951 просмотр


Код: Выделить всё

function Initialize()
{
IndicatorName = "VBars";
PriceStudy = false;
AddInput("I", Inputs.Candle);
AddSeries("A", DrawAs.Custom, Color.Red, AxisType.ZeroBased, false);
AddSeries("U", DrawAs.Custom, Color.Red, AxisType.ZeroBased);
AddSeries("D", DrawAs.Custom, Color.Green, AxisType.ZeroBased);

AddParameter("Period", 5);

AddGlobalVariable("APrice", Types.DoubleList);
}

function Evaluate()
{

var MaxVol = 0.0;
var MaxVolPrice = 0.0;

APrice.Clear();
for (var x = 0; x < Period; x++)
{
   APrice.Add((I.High[x] + I.Low[x]) * 0.5);
   if (MaxVol < I.Volume[x])
      {
      MaxVol = I.Volume[x];
      MaxVolPrice = (I.High[x] + I.Low[x]) * 0.5;
      }
}

var Average = APrice.Average(x => x);

A = MaxVolPrice * 100 / Average - 100; //* 1000

if (A[0] >= 0)
{
   U = A[0];
   U.DrawHistogram(Color.Green);
}
else
{
   D = A[0];
   D.DrawHistogram(Color.Red);
}

}


Если ваши расчеты не совпадают с тем что посчитал индикатор, напишите об этом здесь.

Re: Помогите написать индикатор

Добавлено: 09 окт 2017, 11:55
Павел Эдуардович
Приветствую!

Спасибо! Сегодня в течение дня протестирую, сверюсь с расчетами и отпишу.

Ещё для какой-то цели это всё умножаем на 1000

На 1000 умножалось как раз для луча, чтобы получить целое число, но в данном случае с гистограммой это не нужно, скорее всего, да.

Одно уточнение, Period - это количество баров, которое берется или это количество баров с конца? То есть, чтобы взять 5 баров от текущего, нужно выставить Period (6)? Иными словами, текущий бар (пока он не закрыт) учитывается или нет?