- Home
- Forum
- cTrader Automate
- Supertrend bot
Supertrend bot
Supertrend bot
Hey gang,
Seeking some wisdom on this bot.
using the Supertrend indicator it should open and reverse trades in line with the UpTrend or DownTrend properties - but when i go to backtest it just doesn't open a position - any help appreciated
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class SupertrendSample : Robot
{
private double _volumeInUnits;
private Supertrend _supertrend;
[Parameter("Volume (Lots)", DefaultValue = 0.01)]
public double VolumeInLots { get; set; }
[Parameter("Label", DefaultValue = "Sample")]
public string Label { get; set; }
[Parameter("Period", DefaultValue = 10)]
public int Period { get; set; }
[Parameter("Multiplier", DefaultValue = 3)]
public double Multiplier { get; set; }
protected override void OnStart()
{
_volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots);
_supertrend = Indicators.Supertrend(Period, Multiplier);
}
protected override void OnBar()
{
var position = Positions.Find(Label);
if (position != null)
{
if ((position.TradeType == TradeType.Buy && _supertrend.Trend.Last(1) == -1) ||
(position.TradeType == TradeType.Sell && _supertrend.Trend.Last(1) == 1))
{
ReversePosition(position);
}
}
else
{
if (_supertrend.Trend.Last(1) == 1)
{
ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, null, null);
}
else if (_supertrend.Trend.Last(1) == -1)
{
ExecuteMarketOrder(TradeType.Sell, SymbolName, _volumeInUnits, Label, null, null);
}
}
}
}
}