

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 гостя