Стратегии и роботы > Среднее значение глобальной переменной

Обсуждение, описание стратегий и роботов, идеи для стратегий
realuse
Сообщения: 8
Зарегистрирован: 18 авг 2021, 00:40
Благодарил (а): 6 раз

Среднее значение глобальной переменной

Непрочитанное сообщение realuse » 27 ноя 2024, 20:22

Помогите пожалуйста с реализацией кода: требуется находить на текущем баре среднее значение глобальной переменной X за 5 последних баров, при том, что значение X на каждом баре пересчитывается. :?: :!:

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

Re: Среднее значение глобальной переменной

Непрочитанное сообщение Den » 28 ноя 2024, 02:32

realuse писал(а):Помогите пожалуйста с реализацией кода: требуется находить на текущем баре среднее значение глобальной переменной X за 5 последних баров, при том, что значение X на каждом баре пересчитывается. :?: :!:


вот такая болванка

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

List<double> xValues = new List<double>(); // Список для хранения значений X


function Initialize()
{
    IndicatorName = "Average_X_Last_5_Bars";
    AddInput("Input", Inputs.Candle);
    AddGlobalVariable("X", Types.Double, 0.0); // Глобальная переменная X
}


function Evaluate()
{
    // Пересчитываем значение глобальной переменной X на текущем баре
    var currentValueOfX = CalculateNewValueOfX(); // твоя логика для вычисления X
    SetVariable("X", currentValueOfX);

    // Добавляем новое значение X в список
    xValues.Add(currentValueOfX);

    // Ограничиваем список до последних 5 значений
    if (xValues.Count > 5)
    {
        xValues.RemoveAt(0); // Удаляем самое старое значение
    }

    // Если у нас достаточно значений (не менее 5), то считаем среднее
    if (xValues.Count == 5)
    {
        var averageX = xValues.Average();
        Print("Среднее значение X за последние 5 баров: " + averageX);
    }
}

// Пример функции, которая пересчитывает значение X (нужно заменить на твою логику)
double CalculateNewValueOfX()
{
    // Здесь твой код для вычисления нового значения X
    return new Random().NextDouble() * 100; // Пример случайного значения
}


Вернуться в «Стратегии и роботы»

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

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