Пользовательские индикаторы > VOLUME CANDLES !!!

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Аватара пользователя
Den
Сообщения: 380
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

VOLUME CANDLES !!!

Непрочитанное сообщение Den » 13 мар 2025, 20:44

Добрый день, друзья!

давайте что-ли общими усилиями VOLUME CANDLES подумаем, который есть на новом графике?

[code][/code]
Вложения
Image 17.png
Image 17.png (33.89 КБ) 90134 просмотра

Аватара пользователя
Den
Сообщения: 380
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: VOLUME CANDLES !!!

Непрочитанное сообщение Den » 13 мар 2025, 22:56

пока так

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

function Initialize() {
    IndicatorName = "VOLUME_CANDLES_II";
    PriceStudy = true;

    // Изменяем входные данные (чтобы получить Open, Close, High, Low)
    AddInput("Input", Inputs.Candle);
    // Добавляем серии данных
    AddSeries("VolOpen", DrawAs.Custom, Color.MediumSpringGreen);
    AddSeries("VolClose", DrawAs.Custom, Color.MediumSpringGreen);
    AddSeries("VolHigh", DrawAs.Custom, Color.MediumSpringGreen);
    AddSeries("VolLow", DrawAs.Custom, Color.MediumSpringGreen);
    AddSeries("VolWidth", DrawAs.Custom, Color.MediumSpringGreen);
}

function Evaluate() {
    var open = Input.Open[0];
    var close = Input.Close[0];
    var high = Input.High[0];
    var low = Input.Low[0];
    var volume = Input.Volume[0];

    // Вывод в лог
    Console.WriteLine("O: " + open + " C: " + close + " H: " + high + " L: " + low + " V: " + volume);

    // Найдём максимальный объём за последние 50 баров
    var maxVolume = 0.0;
    for (var i = 0; i < 50; i++) {
        if (Input.Volume[i] > maxVolume) {
            maxVolume = Input.Volume[i];
        }
    }

    double widthFactor = Math.Max(0.5, Math.Min(2.0, (volume / maxVolume) * 2.5));
   
    // Записываем значения в серии
    VolOpen[0] = open;
    VolClose[0] = close;
    VolHigh[0] = high;
    VolLow[0] = low;
    VolWidth[0] = widthFactor;

    // Рисуем фигуру (уменьшил размер)
    VolOpen.DrawFigure(Figure.Square, Color.MediumSpringGreen, Line.Solid, (int)(widthFactor * 3), Color.MediumSpringGreen, 40);
}


Вложения
Image 30.png

Аватара пользователя
Den
Сообщения: 380
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: VOLUME CANDLES !!!

Непрочитанное сообщение Den » 14 мар 2025, 00:57

получше, но все равно чёт не то.


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

function Initialize() {
    IndicatorName = "VOLUME_CANDLES_II";
   
    // Настройка входных данных (добавляем свечи)
    AddInput("Input", Inputs.Candle);

    // Добавляем серии данных для отображения объёма
    AddShadowSeries("VolOpen", DrawAs.Custom, Color.MediumSpringGreen);
    AddShadowSeries("VolClose", DrawAs.Custom, Color.MediumSpringGreen);
    AddShadowSeries("VolHigh", DrawAs.Custom, Color.MediumSpringGreen);
    AddShadowSeries("VolLow", DrawAs.Custom, Color.MediumSpringGreen);
    AddShadowSeries("VolWidth", DrawAs.Line, Color.MediumSpringGreen);
}

function Evaluate() {
    var open = Input.Open[0];
    var close = Input.Close[0];
    var high = Input.High[0];
    var low = Input.Low[0];
    var volume = Input.Volume[0];

    // Вывод информации в лог
    Console.WriteLine("O: " + open + " C: " + close + " H: " + high + " L: " + low + " V: " + volume);

    // Определяем максимальный объём за последние 50 баров
    var maxVolume = 0.0;
    for (var i = 0; i < 50; i++) {
        if (Input.Volume[i] > maxVolume) {
            maxVolume = Input.Volume[i];
        }
    }

    // Рассчёт ширины
    double widthFactor = maxVolume > 0 ? Math.Max(0.5, Math.Min(2.0, (volume / maxVolume) * 2.5)) : 0.5;

    // Записываем значения в серии данных
    VolOpen[0] = open;
    VolClose[0] = close;
    VolHigh[0] = high;
    VolLow[0] = low;
    VolWidth[0] = widthFactor;

    // Отрисовка (здесь возможны ошибки, см. ниже)
    VolOpen.DrawSquare(Color.MediumSpringGreen, Line.Solid, (int)(widthFactor * 13), Color.MediumSpringGreen, 100);
}


Вложения
Image 32.png

bobby dee
Сообщения: 13
Зарегистрирован: 23 дек 2024, 14:53
Благодарил (а): 5 раз
Поблагодарили: 1 раз

Re: VOLUME CANDLES !!!

Непрочитанное сообщение bobby dee » 14 мар 2025, 11:03

Я предлагаю прикрутить индикатор VWMA - Взвешенная по объему скользящая средняя – это скользящая средняя, для которой в качестве весовой функции используется объем. А измерять свечки через коэффициент:
K = open \ close
VK = K * VWMA
нужно еще определить цвет свечи, ввести этот параметр для красной и зеленой свечи
Что-то в этом роде, извините, если это покажется бредом


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей