CyberCycle
interface cAlgo.API.Indicators
DesktopCLICloud
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.
Definition
public interface CyberCycle
Namespace: cAlgo.API.Indicators · Group: Indicators · Implements: StandardIndicator
Examples
Example 1
var cyberCycle = Indicators.CyberCycle(0.07);
Print("Cycle: {0}, Trigger: {1}", cyberCycle.Cycle.Last(1), cyberCycle.Trigger.Last(1));
cyberCycle = api.Indicators.CyberCycle(0.07)
api.Print(f"Cycle: {cyberCycle.Cycle.Last(1)}, Trigger: {cyberCycle.Trigger.Last(1)}")
Example 2
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
public partial class CyberCycleSample : Robot
{
private double _volumeInUnits;
private CyberCycle _cyberCycle;
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);
}
}
}
}
import clr
clr.AddReference("cAlgo.API")
# Import cAlgo API types
from cAlgo.API import *
# Import trading wrapper functions
from robot_wrapper import *
class CyberCycleSample():
def on_start(self):
self.volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)
self.cyberCycle = api.Indicators.CyberCycle(0.07)
def on_bar_closed(self):
if self.cyberCycle.Cycle.Last(0) > self.cyberCycle.Trigger.Last(0) and self.cyberCycle.Cycle.Last(1) <= self.cyberCycle.Trigger.Last(1):
self.close_positions(TradeType.Sell)
api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)
elif self.cyberCycle.Cycle.Last(0) < self.cyberCycle.Trigger.Last(0) and self.cyberCycle.Cycle.Last(1) >= self.cyberCycle.Trigger.Last(1):
self.close_positions(TradeType.Buy)
api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)
def get_bot_positions(self):
return api.Positions.FindAll(api.Label)
def close_positions(self, tradeType):
for position in self.get_bot_positions():
if position.TradeType != tradeType:
continue
api.ClosePosition(position)
{
"AccessRights": "None",
"TimeZone": "UTC",
"Parameters": [
{
"Name": "VolumeInLots",
"DisplayName": "Volume (Lots)",
"Type": "Double",
"DefaultValue": 0.01
},
{
"Name": "StopLossInPips",
"DisplayName": "Stop Loss (Pips)",
"Type": "Double",
"DefaultValue": 10
},
{
"Name": "TakeProfitInPips",
"DisplayName": "Take Profit (Pips)",
"Type": "Double",
"DefaultValue": 10
},
{
"Name": "Label",
"Type": "String",
"DefaultValue": "Sample"
}
]
}
Properties
| Name | Description |
|---|---|
CycleDesktopCLICloudIndicatorDataSeries | The Cyber Cycles Oscillator plot. |
TriggerDesktopCLICloudIndicatorDataSeries | The CCO plot shifted one bar back; crossovers of the two plots suggest Buy/Sell signals. |
Inherited members
From StandardIndicator: AddToChart, Symbol, TimeFrame, Bars