Warning! This section will be deprecated on February 1st 2025. Please move all your Indicators to the cTrader Store catalogue.
Description
Indicator to determine the Higher Highs, Lower Lows, Lower Highs and Higher Lows. Takes period as a parameter. The higher the rougher the Pivot Points.
Feel free to buy me a coffee if i helped you out ^^
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo
{
[Indicator(IsOverlay = true)]
public class PivotPoints : Indicator
{
[Parameter("Period", DefaultValue = 3)]
public int Period { get; set; }
[Output("HigherHigh", PlotType = PlotType.Points, Thickness = 20, Color = Colors.Blue)]
public IndicatorDataSeries hh { get; set; }
[Output("HigherLow", PlotType = PlotType.Points, Thickness = 20, Color = Colors.Yellow)]
public IndicatorDataSeries hl { get; set; }
[Output("LowerLow", PlotType = PlotType.Points, Thickness = 20, Color = Colors.Red)]
public IndicatorDataSeries ll { get; set; }
[Output("LowerHigh", PlotType = PlotType.Points, Thickness = 20, Color = Colors.Orange)]
public IndicatorDataSeries lh { get; set; }
public double PivotHigh { get; private set; } = double.NaN;
public double PivotLow { get; private set; } = double.NaN;
public double HigherHigh { get; private set; } = double.NaN;
public double LowerHigh { get; private set; } = double.NaN;
public double HigherLow { get; private set; } = double.NaN;
public double LowerLow { get; private set; } = double.NaN;
public override void Calculate(int index)
{
index -= Period;
if (index < Period) return;
var isHighPivot = true;
var isLowPivot = true;
for (var i = index - Period; i <= index + Period; i++)
{
if (i != index)
{
if (MarketSeries.High[i] >= MarketSeries.High[index])
{
isHighPivot = false;
}
if (MarketSeries.Low[i] <= MarketSeries.Low[index])
{
isLowPivot = false;
}
}
}
PivotHigh = isHighPivot ? MarketSeries.High[index] : double.NaN;
PivotLow = isLowPivot ? MarketSeries.Low[index] : double.NaN;
// Determine pivot point types
if (!double.IsNaN(PivotHigh))
{
if (double.IsNaN(HigherHigh) || PivotHigh > HigherHigh)
{
HigherHigh = PivotHigh;
hh[index] = HigherHigh;
}
else if (PivotHigh < HigherHigh)
{
LowerHigh = PivotHigh;
lh[index] = LowerHigh;
}
}
if (!double.IsNaN(PivotLow))
{
if (double.IsNaN(LowerLow) || PivotLow < LowerLow)
{
LowerLow = PivotLow;
ll[index] = LowerLow;
}
else if (PivotLow > LowerLow)
{
HigherLow = PivotLow;
hl[index] = HigherLow;
}
}
}
}
}
DE
Descy
Joined on 01.07.2023
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: Best Pivots.algo
- Rating: 5
- Installs: 1767
- Modified: 06/07/2023 13:38
Note that publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section, please use the Copyright Infringement Notification form to submit a claim.
Comments
Log in to add a comment.
No comments found.