| 13 | using OFT.Rendering.Tools; |
| 14 | |
| 15 | [DisplayName("Delta Intensity")] |
| 16 | public class DeltaIntensity : Indicator |
| 17 | { |
| 18 | private int iBigTrades = 25000; |
| 19 | |
| 20 | [Range(1, 100000)] |
| 21 | public int Bigtrades_Threshold |
| 22 | { get => iBigTrades; set { if (value < 1) return; iBigTrades = value; RecalculateValues(); } } |
| 23 | |
| 24 | private readonly ValueDataSeries _Weird = new("Unusual Candle") |
| 25 | { Color = Colors.LightCoral, VisualType = VisualMode.Dots, Width = 4 }; |
| 26 | |
| 27 | private readonly ValueDataSeries _DeltaDivRed = new("Delta Divergence Red") |
| 28 | { Color = Colors.Red, VisualType = VisualMode.Dots, Width = 4 }; |
| 29 | |
| 30 | private readonly ValueDataSeries _DeltaDivGreen = new("Delta Divergence Green") |
| 31 | { Color = Colors.Lime, VisualType = VisualMode.Dots, Width = 4 }; |
| 32 | |
| 33 | private readonly ValueDataSeries _VolSecNeg = new("Volume/Second Negative") |
| 34 | { Color = Colors.Red, VisualType = VisualMode.Histogram }; |
| 35 | |
| 36 | private readonly ValueDataSeries _VolSecPos = new("Volume/Second Positive") |
| 37 | { Color = Colors.LimeGreen, VisualType = VisualMode.Histogram }; |
| 38 | |
| 39 | private readonly ValueDataSeries _negSeries = new("Negative Delta") |
| 40 | { Color = Colors.DarkOrange, VisualType = VisualMode.Histogram }; |
| 41 | |
| 42 | private readonly ValueDataSeries _posSeries = new("Positive Delta") |
| 43 | { Color = Colors.DarkGreen, VisualType = VisualMode.Histogram }; |
| 44 | |
| 45 | public DeltaIntensity() : |
| 46 | base(true) |
| 47 | { |
| 48 | Panel = IndicatorDataProvider.NewPanel; |
| 49 | DataSeries[0] = _posSeries; |
| 50 | DataSeries.Add(_negSeries); |
| 51 | DataSeries.Add(_VolSecPos); |
| 52 | DataSeries.Add(_VolSecNeg); |
| 53 | |
| 54 | DataSeries.Add(_Weird); |
| 55 | DataSeries.Add(_DeltaDivRed); |
| 56 | DataSeries.Add(_DeltaDivGreen); |
| 57 | } |
| 58 | |
| 59 | protected override void OnCalculate(int bar, decimal value) |
| 60 | { |
| 61 | if (bar < 2) |
| 62 | return; |
| 63 | |
| 64 | var candle = GetCandle(bar); |
| 65 | |
| 66 | value = candle.Close; |
| 67 | var red = candle.Close < candle.Open; |
| 68 | var green = candle.Close > candle.Open; |
| 69 | |
| 70 | var candleSeconds = Convert.ToDecimal((candle.LastTime - candle.Time).TotalSeconds); |
| 71 | if (candleSeconds is 0) |
| 72 | candleSeconds = 1; |
nothing calls this directly
no outgoing calls
no test coverage detected