Indicators
Notification Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.
How to installHow to install cBots & Indicators
- Download the Indicator or cBot.
- Double-click on the downloaded file. This will install all necessary files in cAlgo.
- Find the indicator/cbot you want to use from the menu on the left.
- Add an instance of the indicator/cBot to run.
- Download the Indicator
- Double-click on the downloaded file. This will install all necessary files in cTrader.
-
Select the indicator from Custom in the functions (f) menu in the top center of the chart
- Enter the parameters and click OK
3 x Moving Averages together
2
0
3358
by jdowney
free
27 Sep 2013
This Indicator produces 3 x Moving Averages together on the chart, of which you can edit the settings as follows.
ie SET Applied price to Close or Median using Zero, 1 , 2, 3 or 4
Price = 0 - Close
Price = 1 - Open
Price = 2 - High
Price = 3 - Low
Price = 4 - Median Price = (High+Low)/2
Ultimate Pivot Points 2
9
5
5555
by adaled
free
18 Dec 2013
Based on Ultimate 5 points pivot system [/algos/indicators/show/211]
The Padding Output (last 5) Colors and line style should be the same as the regular (first 5)
corresponding ones e.g. Daily Pivot should be the same as Daily Pivot Pad.
Currently works only for Less than H12 Timeframe. Check back for updates.
If you will use this as a reference indicator note that the last values of each line
are a different IndicatorDataSeries - e.g. p and P (this was to accomplish a discontinued line)
Heikin-Ashi Smoothed
7
5
12280
by FlatLander
free
02 Jul 2013
Heikin-Ashi with smoothing filter choices. If you don't need smoothing, set Periods = 1 and MA Type = Simple.
Daily Fibonacci Levels
0
0
4273
by babalu4u
free
09 Jan 2014
Fibonacci levels from daily open. You must install reference file(ATR).
Fibonacci Pivot Points
0
0
7704
by babalu4u
free
09 Jan 2014
Fibonacci support and resistance 9 levels. You must have installed ATR (reference file).
Envelopes
11
5
7359
by longshot
free
31 May 2013
Moving Average Envelopes are percentage-based envelopes set above and below a moving average. The moving average, which forms the base for this indicator, can be a simple or exponential moving average. Each envelope is then set the same percentage above or below the moving average. This creates parallel bands that follow price action. With a moving average as the base, Moving Average Envelopes can be used as a trend following indicator. However, this indicator is not limited to just trend following. The envelopes can also be used to identify overbought and oversold levels when the trend is relatively flat.
Price Channels
1
0
3537
by adaled
free
24 May 2013
Definition from ChartSchool
"Price Channels can be used to identify trend reversals or overbought/oversold levels that denote pullbacks within a bigger trend. A surge above the upper channel line shows extraordinary strength that can signal the start of an uptrend. Conversely, a plunge below the lower channel line shows serious weakness that can signal the start of a downtrend. Once an uptrend has started, chartists can move to a shorter timeframe to identify pullbacks with oversold readings. A move below the lower channel line indicates oversold conditions that can foreshadow an end to the pullback. Similarly, short-term bounces within a bigger uptrend can be identified with Price Channels. A move above the upper channel line signals overbought conditions that can foreshadow an end to the bounce."
[http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:price_channels]
Pivot Points Demark
1
0
4071
by cAlgo_Trader
free
23 Jul 2013
Demark Pivot Points start with a different base and use different formulas for support and resistance. These Pivot Points are based on the relationship between the close and the open.
If Close < Open, then X = High + (2 x Low) + Close
If Close > Open, then X = (2 x High) + Low + Close
If Close = Open, then X = High + Low + (2 x Close)
Pivot Point = X/4
Support 1 = X/2 - High
Resistance 1 = X/2 - Low
Real Time Fibonacci Indicators
8
5
6651
by Scott
free
04 May 2013
**************************** WILL ONLY WORK WHEN MARKET IS LIVE
This indicator uses fibonacci simple moving averages and fibonacci bands (/algos/indicators/show/190) to show support and resistance over 4 time frames. They are shown as price and plotted on the chart as below
You will need to open 4 charts 1m, 5m, 15m, 60m build the Average True Range (ATR) indicator first as you will need to referance this in the fibbandsRT indicator (code at bottom)
Then load fiblevelsRT and fibbandsRT indicators (code at bottom of post) resize them so they are like below, you will also have to move the time box to the left a bit to bring it all into view.
For the charts load FibGrid7Chart they will show 7 SMA's that show history, you could also add the fiboonacci bands indicator but I find this get crowded (I use it when looking though historical data)
There are 4 SMA's shown on the real time indicator they are 21sma, 34sma, 55sma and 233sma
The fibonacci bands show 23.60%, 38.00%, 61.80%, and 100.00% from the Average True Range (ATR) both above and below
The FibGrid7Chart Indicator Shows 7 simple moving averages 21sma, 34sma, 55sma, 75sma, 100sma, 144sma and 233sma
// Average True Range ---- Build this first as it needs to referenced in fibbandsRT
using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = false,ScalePrecision = 5)] public class averageTrueRange : Indicator { [Parameter(DefaultValue = 14, MinValue = 2)] public int Period { get; set; } [Output("AverageTrueRange", Color = Colors.Orange)] public IndicatorDataSeries atr { get; set; } private ExponentialMovingAverage ema; public IndicatorDataSeries tr; private TrueRange tri; protected override void Initialize() { tr = CreateDataSeries(); tri = Indicators.TrueRange(); ema = Indicators.ExponentialMovingAverage(tr,Period); } public override void Calculate(int index) { if(index<Period+1) {atr[index] = tri.Result[index];} if(index>=Period){ atr[index] = (atr[index-1]*(Period-1)+tri.Result[index]) / Period;} } } }
// fibbandsRT --- You need to referance the Average True Range indicator before this will build
using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true)] public class fibbandsRT : Indicator { private averageTrueRange _averageTrueRange; private ExponentialMovingAverage _exponentialMovingAverage; [Parameter(DefaultValue = 55)] public int PeriodEma { get; set; } [Parameter(DefaultValue = 21)] public int PeriodAtr { get; set; } [Output("Upper Band 1", Color = Colors.Aqua)] public IndicatorDataSeries UpperBand1 { get; set; } [Output("Upper Band 2", Color = Colors.DeepSkyBlue)] public IndicatorDataSeries UpperBand2 { get; set; } [Output("Upper Band 3", Color = Colors.DodgerBlue)] public IndicatorDataSeries UpperBand3 { get; set; } [Output("Upper Band 4", Color = Colors.Aquamarine)] public IndicatorDataSeries UpperBand4 { get; set; } [Output("Lower Band 1", Color = Colors.Aqua)] public IndicatorDataSeries LowerBand1 { get; set; } [Output("Lower Band 2", Color = Colors.DeepSkyBlue)] public IndicatorDataSeries LowerBand2 { get; set; } [Output("Lower Band 3", Color = Colors.DodgerBlue)] public IndicatorDataSeries LowerBand3 { get; set; } [Output("Lower Band 4", Color = Colors.Aquamarine)] public IndicatorDataSeries LowerBand4 { get; set; } [Output("EMA", Color = Colors.SlateGray)] public IndicatorDataSeries Ema { get; set; } protected override void Initialize() { _averageTrueRange = Indicators.GetIndicator<averageTrueRange>(PeriodAtr); _exponentialMovingAverage = Indicators.ExponentialMovingAverage(MarketSeries.Close, PeriodEma); } public override void Calculate(int index) { if (!IsRealTime) return; for (int i = index - 10; i <= index; i++) { double ema = _exponentialMovingAverage.Result[index]; double atr = _averageTrueRange.atr[index]; UpperBand1[i] = ema + 1.62*atr; UpperBand2[i] = ema + 2.62*atr; UpperBand3[i] = ema + 4.23*atr; UpperBand4[i] = ema + 1*atr; LowerBand1[i] = ema - 1.62*atr; LowerBand2[i] = ema - 2.62*atr; LowerBand3[i] = ema - 4.23*atr; LowerBand4[i] = ema - 1*atr; Ema[i] = ema; } for (int i = 0; i < index - 10; i++) { UpperBand1[i] = double.NaN; UpperBand2[i] = double.NaN; UpperBand3[i] = double.NaN; UpperBand4[i] = double.NaN; LowerBand1[i] = double.NaN; LowerBand2[i] = double.NaN; LowerBand3[i] = double.NaN; LowerBand4[i] = double.NaN; Ema[i] = double.NaN; } int xPos = index + 0; double yPos = UpperBand1[index]; string text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj1", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.Aqua); yPos = UpperBand2[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj2", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.DeepSkyBlue); yPos = UpperBand3[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj3", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.DodgerBlue); yPos = UpperBand4[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj4", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.Aquamarine); yPos = LowerBand1[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj5", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.Aqua); yPos = LowerBand2[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj6", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.DeepSkyBlue); yPos = LowerBand3[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj7", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.DodgerBlue); yPos = LowerBand4[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj8", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.Aquamarine); yPos = Ema[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj9", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.SlateGray); } } }
// fiblevelsRT indicator
using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true)] public class fiblevelsRT : Indicator { private fiblevelsRT fiblevelsRTIndicator; [Parameter] public DataSeries Source { get; set; } [Parameter("L1", DefaultValue = 21)] public int Periods { get; set; } [Parameter("L2", DefaultValue = 34)] public int Periods2 { get; set; } [Parameter("L3", DefaultValue = 55)] public int Periods3 { get; set; } [Parameter("L7", DefaultValue = 233)] public int Periods7 { get; set; } [Output("Level1", Color = Colors.Lime, Thickness = 5, LineStyle = LineStyle.DotsVeryRare)] public IndicatorDataSeries Result { get; set; } [Output("Level2", Color = Colors.Yellow, Thickness = 5, LineStyle = LineStyle.DotsVeryRare)] public IndicatorDataSeries Result2 { get; set; } [Output("Level3", Color = Colors.White, Thickness = 5, LineStyle = LineStyle.DotsVeryRare)] public IndicatorDataSeries Result3 { get; set; } [Output("Level7", Color = Colors.Red, Thickness = 5, LineStyle = LineStyle.DotsVeryRare)] public IndicatorDataSeries Result7 { get; set; } private SimpleMovingAverage _simpleMovingAverage1; private SimpleMovingAverage _simpleMovingAverage2; private SimpleMovingAverage _simpleMovingAverage3; private SimpleMovingAverage _simpleMovingAverage7; protected override void Initialize() { _simpleMovingAverage1 = Indicators.SimpleMovingAverage(Source, Periods); _simpleMovingAverage2 = Indicators.SimpleMovingAverage(Source, Periods2); _simpleMovingAverage3 = Indicators.SimpleMovingAverage(Source, Periods3); _simpleMovingAverage7 = Indicators.SimpleMovingAverage(Source, Periods7); } public override void Calculate(int index) { if (!IsRealTime) return; for (int i = index - 10; i <= index; i++) { Result[i] = _simpleMovingAverage1.Result[index]; Result2[i] = _simpleMovingAverage2.Result[index]; Result3[i] = _simpleMovingAverage3.Result[index]; Result7[i] = _simpleMovingAverage7.Result[index]; } for(int i = 0; i < index - 10; i++) { Result[i] = double.NaN; Result2[i] = double.NaN; Result3[i] = double.NaN; Result7[i] = double.NaN; } int xPos = index + 1; double yPos = _simpleMovingAverage1.Result[index]; var text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj1", text, xPos, yPos, VerticalAlignment.Center, HorizontalAlignment.Left,Colors.Lime); yPos = _simpleMovingAverage2.Result[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj2", text, xPos, yPos, VerticalAlignment.Bottom, HorizontalAlignment.Left,Colors.Yellow); yPos = _simpleMovingAverage3.Result[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj3", text, xPos, yPos, VerticalAlignment.Center, HorizontalAlignment.Left,Colors.White); yPos = _simpleMovingAverage7.Result[index]; text = String.Format("{0}", Math.Round(yPos, Symbol.Digits)); ChartObjects.DrawText("obj7", text, xPos, yPos, VerticalAlignment.Top, HorizontalAlignment.Left, Colors.Red); } } }
// FibGrid7Chart Indicator --- 7 simple moving averages
using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true)] public class FibGrid7Chart : Indicator { [Parameter] public DataSeries Source { get; set; } [Parameter("L1", DefaultValue = 21)] public int Periods { get; set; } [Parameter("L2", DefaultValue = 34)] public int Periods2 { get; set; } [Parameter("L3", DefaultValue = 55)] public int Periods3 { get; set; } [Parameter("L4", DefaultValue = 75)] public int Periods4 { get; set; } [Parameter("L5", DefaultValue = 100)] public int Periods5 { get; set; } [Parameter("L6", DefaultValue = 144)] public int Periods6 { get; set; } [Parameter("L7", DefaultValue = 233)] public int Periods7 { get; set; } [Output("Level1", Color = Colors.Lime, Thickness = 3)] public IndicatorDataSeries Result { get; set; } [Output("Level2", Color = Colors.Yellow, Thickness = 3)] public IndicatorDataSeries Result2 { get; set; } [Output("Level3", Color = Colors.White, Thickness = 3)] public IndicatorDataSeries Result3 { get; set; } [Output("Level4", Color = Colors.Aqua, Thickness = 3)] public IndicatorDataSeries Result4 { get; set; } [Output("Level5", Color = Colors.Blue, Thickness = 3)] public IndicatorDataSeries Result5 { get; set; } [Output("Level6", Color = Colors.Orange, Thickness = 3)] public IndicatorDataSeries Result6 { get; set; } [Output("Level7", Color = Colors.Red, Thickness = 3)] public IndicatorDataSeries Result7 { get; set; } private SimpleMovingAverage _simpleMovingAverage1; private SimpleMovingAverage _simpleMovingAverage2; private SimpleMovingAverage _simpleMovingAverage3; private SimpleMovingAverage _simpleMovingAverage4; private SimpleMovingAverage _simpleMovingAverage5; private SimpleMovingAverage _simpleMovingAverage6; private SimpleMovingAverage _simpleMovingAverage7; protected override void Initialize() { _simpleMovingAverage1 = Indicators.SimpleMovingAverage(Source, Periods); _simpleMovingAverage2 = Indicators.SimpleMovingAverage(Source, Periods2); _simpleMovingAverage3 = Indicators.SimpleMovingAverage(Source, Periods3); _simpleMovingAverage4 = Indicators.SimpleMovingAverage(Source, Periods4); _simpleMovingAverage5 = Indicators.SimpleMovingAverage(Source, Periods5); _simpleMovingAverage6 = Indicators.SimpleMovingAverage(Source, Periods6); _simpleMovingAverage7 = Indicators.SimpleMovingAverage(Source, Periods7); } public override void Calculate(int index) { Result[index] = _simpleMovingAverage1.Result[index]; Result2[index] = _simpleMovingAverage2.Result[index]; Result3[index] = _simpleMovingAverage3.Result[index]; Result4[index] = _simpleMovingAverage4.Result[index]; Result5[index] = _simpleMovingAverage5.Result[index]; Result6[index] = _simpleMovingAverage6.Result[index]; Result7[index] = _simpleMovingAverage7.Result[index]; } } }
If anyone wants the modified 1m that shows the price and lays out the fibs let me know
I would also like to thank support for all there hard work in helping me build this indicator (like 99% I've just modified)
Scott
Copyright © 2023 Spotware Systems Ltd. All rights reserved.