Olá, tenho um dúvida para criação de multiplas variáveis e de maneira variável
neste exemplo eu crio 5 variáveis para executar uma função que vai me criar linhas horizontais nas ultimas 5 barras de um gráfico, mas eu gostaria de varia isto que poderia ser de 1, 2,3... a 25.... 50, em fim eu colocaria este valor via input, antes de iniciar o indicador.
Como eu faço hoje:
// Criação da variáveis
private Bars _bars;
private Bars _bars2;
private Bars _bars3;
private Bars _bars4;
private Bars _bars5;
protected override void Initialize() // Inicialização das variáveis com TimeFrame no início do código
{
_bars = MarketData.GetBars(TimeFrame.Hour4);
_bars2 = MarketData.GetBars(TimeFrame.Hour4);
_bars3 = MarketData.GetBars(TimeFrame.Hour4);
_bars4 = MarketData.GetBars(TimeFrame.Hour4);
_bars5 = MarketData.GetBars(TimeFrame.Hour4);
}
// Aqui ele entra em Loop e fica calculando e criando as linhas conforme as barras vão mudando
public override void Calculate(int index)
{
// This or index == 0 will fix the issue
if (!IsLastBar) return;
//Last 1
if (High)
Chart.DrawHorizontalLine("Heigh", _bars.HighPrices.Last(1), HighColor, 1, LineStyle.Dots);
if (Low)
Chart.DrawHorizontalLine("Low", _bars.LowPrices.Last(1), LowColor, 1, LineStyle.Dots);
if (Open)
Chart.DrawHorizontalLine("Open", _bars.OpenPrices.Last(1), OpenColor,1, LineStyle.Solid);
if (Close)
Chart.DrawHorizontalLine("Close", _bars.ClosePrices.Last(1), CloseColor, 1, LineStyle.Solid);
// Last 2
if (!IsLastBar) return;
if (High)
Chart.DrawHorizontalLine("Heigh2", _bars2.HighPrices.Last(2), HighColor, 1, LineStyle.Dots);
if (Low)
Chart.DrawHorizontalLine("Low2", _bars2.LowPrices.Last(2), LowColor, 1, LineStyle.Dots);
if (Open)
Chart.DrawHorizontalLine("Open2", _bars2.OpenPrices.Last(2), OpenColor, 1, LineStyle.Solid);
if (Close)
Chart.DrawHorizontalLine("Close2", _bars2.ClosePrices.Last(2), CloseColor, 1, LineStyle.Solid);
// Last 3
if (!IsLastBar) return;
if (High)
Chart.DrawHorizontalLine("Heigh3", _bars3.HighPrices.Last(3), HighColor, 1, LineStyle.Dots);
if (Low)
Chart.DrawHorizontalLine("Low3", _bars3.LowPrices.Last(3), LowColor, 1, LineStyle.Dots);
if (Open)
Chart.DrawHorizontalLine("Open3", _bars3.OpenPrices.Last(3), OpenColor, 1, LineStyle.Solid);
if (Close)
Chart.DrawHorizontalLine("Close3", _bars3.ClosePrices.Last(3), CloseColor, 1, LineStyle.Solid);
// Last 4
if (!IsLastBar) return;
if (High)
Chart.DrawHorizontalLine("Heigh4", _bars3.HighPrices.Last(4), HighColor, 1, LineStyle.Dots);
if (Low)
Chart.DrawHorizontalLine("Low4", _bars3.LowPrices.Last(4), LowColor, 1, LineStyle.Dots);
if (Open)
Chart.DrawHorizontalLine("Open4", _bars3.OpenPrices.Last(4), OpenColor, 1, LineStyle.Solid);
if (Close)
Chart.DrawHorizontalLine("Close4", _bars3.ClosePrices.Last(4), CloseColor, 1, LineStyle.Solid);
// Last 5
if (!IsLastBar) return;
if (High)
Chart.DrawHorizontalLine("Heigh5", _bars3.HighPrices.Last(5), HighColor, 1, LineStyle.Dots);
if (Low)
Chart.DrawHorizontalLine("Low5", _bars3.LowPrices.Last(5), LowColor, 1, LineStyle.Dots);
if (Open)
Chart.DrawHorizontalLine("Open5", _bars3.OpenPrices.Last(5), OpenColor, 1, LineStyle.Solid);
if (Close)
Chart.DrawHorizontalLine("Close5", _bars3.ClosePrices.Last(5), CloseColor, 1, LineStyle.Solid);
}
Qualquer ajuda é bem vinda para otimizar isto, pois se eu tiver que colocar por exemplo os últimos 24 fica longo o código, e quero disponibilizar este indicador gratuitamente para ajudar outras pessoas.