Summary
An indicator for identifying trends in a currency pair, as well as for gauging the probability of a trend reversal.
Remarks
The indicator fluctuates between 0 and 100, with values above 80 signalling an upward trend, and values below 20 signalling a downward trend.
Syntax
public interface Aroon
Members
Name | Type | Summary |
---|---|---|
Down | Property | Aroon Down |
Up | Property | Aroon Up |
Example 1
using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator] public class AroonReferenceExample:Indicator { private Aroon _aroon; [Parameter("Periods", DefaultValue = 25)] public int Periods { get; set; } [Output("Up")] public IndicatorDataSeries ResultAroonUp { get; set; } [Output("Down")] public IndicatorDataSeries ResultAroonDown { get; set; } protected override void Initialize() { _aroon = Indicators.Aroon(Periods); } public override void Calculate(int index) { ResultAroonUp[index] = _aroon.Up[index]; ResultAroonDown[index] = _aroon.Down[index]; } } }
Example 2
using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Robots { // This sample cBot shows how to use an Aroon indicator [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class AroonSample : Robot { private double _volumeInUnits; private Aroon _accumulativeSwingIndex; [Parameter("Volume (Lots)", DefaultValue = 0.01)] public double VolumeInLots { get; set; } [Parameter("Stop Loss (Pips)", DefaultValue = 10)] public double StopLossInPips { get; set; } [Parameter("Take Profit (Pips)", DefaultValue = 10)] public double TakeProfitInPips { get; set; } [Parameter("Label", DefaultValue = "Sample")] public string Label { get; set; } public Position[] BotPositions { get { return Positions.FindAll(Label); } } protected override void OnStart() { _volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots); _accumulativeSwingIndex = Indicators.Aroon(25); } protected override void OnBar() { if (_accumulativeSwingIndex.Up.Last(1) > _accumulativeSwingIndex.Down.Last(1) && _accumulativeSwingIndex.Up.Last(2) < _accumulativeSwingIndex.Down.Last(2)) { ClosePositions(TradeType.Sell); ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips); } else if (_accumulativeSwingIndex.Up.Last(1) < _accumulativeSwingIndex.Down.Last(1) && _accumulativeSwingIndex.Up.Last(2) > _accumulativeSwingIndex.Down.Last(2)) { ClosePositions(TradeType.Buy); ExecuteMarketOrder(TradeType.Sell, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips); } } private void ClosePositions(TradeType tradeType) { foreach (var position in BotPositions) { if (position.TradeType != tradeType) continue; ClosePosition(position); } } } }