CyberCycle


Summary

The Cyber Cycles Oscillator is an indicator designed by John Ehlers, it is used for isolating the cycle component of the market from its trend counterpart.

Syntax

public interface CyberCycle

Members

NameTypeSummary
Cycle Property
Trigger Property

Example 1

using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
namespace cAlgo.Robots
{
    // This sample cBot shows how to use the Cyber Cycle indicator
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class CyberCycleSample : Robot
    {
        private double _volumeInUnits;
        private CyberCycle _cyberCycle;
        [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);
            _cyberCycle = Indicators.CyberCycle(0.07);
        }
        protected override void OnBar()
        {
            if (_cyberCycle.Cycle.Last(1) > _cyberCycle.Trigger.Last(1) && _cyberCycle.Cycle.Last(2) <= _cyberCycle.Trigger.Last(2))
            {
                ClosePositions(TradeType.Sell);
                ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
            }
            else if (_cyberCycle.Cycle.Last(1) < _cyberCycle.Trigger.Last(1) && _cyberCycle.Cycle.Last(2) >= _cyberCycle.Trigger.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);
            }
        }
    }
}
Reference