Код: Выделить всё
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);
}