Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

problema com um código

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    problema com um código

    estou tentando fazer com que as linhas desse meu indicador não fiquem interligadas de um ponto até o outro. a ideia é plotar uma linha customizável em um ponto onde ocorra uma agressão e só volte a aparecer quando acontecer outra agressão. mas o problema é que as linhas ficam interligadas. alguém pode me ajudar a arrumar isso? eis abaixo o código-fonte: region Using declarations
    using NinjaTrader.NinjaScript;
    using NinjaTrader.Data;
    using NinjaTrader.Gui.Tools;
    using System.ComponentModel;
    using System.Windows.Media;
    #endregion

    namespace NinjaTrader.NinjaScript.Indicators
    {
    public class StopSignal : Indicator
    {
    // Variável para plotar agressão
    private double stopSignal = double.NaN; // Inicializa como NaN para garantir que comece vazio
    private double lastStopSignal = double.NaN; // Armazena o último sinal de stop

    // Limite de agressão (acima de 1000)
    private double aggressionThreshold = 1000;

    // Período de cálculo (ajustável)
    private int lookbackPeriod = 50;

    protected override void OnStateChange()
    {
    if (State == State.SetDefaults)
    {
    Description = @"Indicador de Stop baseado em agressão maior que 1000";
    Name = "StopSignal";
    Calculate = Calculate.OnEachTick;
    IsOverlay = true; // Exibe no gráfico principal
    AddPlot(Brushes.Red, "StopSignal"); // Plot de agressão (Stop)
    }
    }

    protected override void OnBarUpdate()
    {
    if (CurrentBar < lookbackPeriod) return;

    // Cálculo de volume e agressão
    double totalVolume = 0;
    stopSignal = double.NaN; // Resetar a variável a cada barra
    double[] priceVolumes = new double[lookbackPeriod];

    // Iteração sobre o período de lookback para calcular os volumes
    for (int i = 0; i < lookbackPeriod; i++)
    {
    double barVolume = Volume[i];
    totalVolume += barVolume;

    // Se o volume da barra exceder o limite de agressão
    if (barVolume > aggressionThreshold)
    {
    stopSignal = Close[i]; // Define o preço atual como nível de stop
    break; // Saímos do loop após encontrar o primeiro sinal de agressão
    }
    }

    // Se um novo sinal de stop for identificado, atualize o último sinal
    if (!double.IsNaN(stopSignal))
    {
    lastStopSignal = stopSignal; // Armazena o último sinal de stop
    }
    else
    {
    stopSignal = lastStopSignal; // Mantém o último sinal caso não haja um novo
    }

    // Plotar o StopSignal baseado na agressão
    Values[0][0] = stopSignal;
    Print("Sinal de Stop: " + stopSignal); // Debug para verificar
    }
    }
    }

    region NinjaScript generated code. Neither change nor remove.

    namespace NinjaTrader.NinjaScript.Indicators
    {
    public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
    {
    private StopSignal[] cacheStopSignal;
    public StopSignal StopSignal()
    {
    return StopSignal(Input);
    }

    public StopSignal StopSignal(ISeries<double> input)
    {
    if (cacheStopSignal != null)
    for (int idx = 0; idx < cacheStopSignal.Length; idx++)
    if (cacheStopSignal[idx] != null && cacheStopSignal[idx].EqualsInput(input))
    return cacheStopSignal[idx];
    return CacheIndicator<StopSignal>(new StopSignal(), input, ref cacheStopSignal);
    }
    }
    }

    namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
    {
    public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
    {
    public Indicators.StopSignal StopSignal()
    {
    return indicator.StopSignal(Input);
    }

    public Indicators.StopSignal StopSignal(ISeries<double> input )
    {
    return indicator.StopSignal(input);
    }
    }
    }

    namespace NinjaTrader.NinjaScript.Strategies
    {
    public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
    {
    public Indicators.StopSignal StopSignal()
    {
    return indicator.StopSignal(Input);
    }

    public Indicators.StopSignal StopSignal(ISeries<double> input )
    {
    return indicator.StopSignal(input);
    }
    }
    }

    #endregion

Latest Posts

Collapse

Topics Statistics Last Post
Started by Geovanny Suaza, 02-11-2026, 06:32 PM
0 responses
574 views
0 likes
Last Post Geovanny Suaza  
Started by Geovanny Suaza, 02-11-2026, 05:51 PM
0 responses
332 views
1 like
Last Post Geovanny Suaza  
Started by Mindset, 02-09-2026, 11:44 AM
0 responses
101 views
0 likes
Last Post Mindset
by Mindset
 
Started by Geovanny Suaza, 02-02-2026, 12:30 PM
0 responses
553 views
1 like
Last Post Geovanny Suaza  
Started by RFrosty, 01-28-2026, 06:49 PM
0 responses
551 views
1 like
Last Post RFrosty
by RFrosty
 
Working...
X