i NEED HELP
i NEED HELP
09 May 2022, 21:41
i need to setup this bot only for short or long
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class SampleBreakoutRobot : Robot
{
[Parameter("Source")]
public DataSeries Source { get; set; }
[Parameter("Band Height (pips)", DefaultValue = 40.0, MinValue = 0)]
public double BandHeightPips { get; set; }
[Parameter("Stop Loss (pips)", DefaultValue = 20, MinValue = 1)]
public int StopLossInPips { get; set; }
[Parameter("Take Profit (pips)", DefaultValue = 40, MinValue = 1)]
public int TakeProfitInPips { get; set; }
[Parameter("Volume", DefaultValue = 10000, MinValue = 1000)]
public int Volume { get; set; }
[Parameter("Bollinger Bands Deviations", DefaultValue = 2)]
public int Deviations { get; set; }
[Parameter("Bollinger Bands Periods", DefaultValue = 20)]
public int Periods { get; set; }
[Parameter("Bollinger Bands MA Type")]
public MovingAverageType MAType { get; set; }
[Parameter("Consolidation Periods", DefaultValue = 2)]
public int ConsolidationPeriods { get; set; }
BollingerBands bollingerBands;
string label = "SampleBreakoutRobot";
int consolidation;
protected override void OnStart()
{
bollingerBands = Indicators.BollingerBands(Source, Periods, Deviations, MAType);
}
protected override void OnBar()
{
var top = bollingerBands.Top.Last(1);
var bottom = bollingerBands.Bottom.Last(1);
if (top - bottom <= BandHeightPips * Symbol.PipSize)
{
consolidation = consolidation + 1;
}
else
{
consolidation = 0;
}
if (consolidation >= ConsolidationPeriods)
{
if (Symbol.Ask > top)
{
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, label, StopLossInPips, TakeProfitInPips);
consolidation = 0;
}
else if (Symbol.Bid < bottom)
{
ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, label, StopLossInPips, TakeProfitInPips);
consolidation = 0;
}
}
}
}
}
amusleh
10 May 2022, 09:41
Hi,
Try this:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class SampleBreakoutRobot : Robot { [Parameter("Source")] public DataSeries Source { get; set; } [Parameter("Band Height (pips)", DefaultValue = 40.0, MinValue = 0)] public double BandHeightPips { get; set; } [Parameter("Stop Loss (pips)", DefaultValue = 20, MinValue = 1)] public int StopLossInPips { get; set; } [Parameter("Take Profit (pips)", DefaultValue = 40, MinValue = 1)] public int TakeProfitInPips { get; set; } [Parameter("Volume", DefaultValue = 10000, MinValue = 1000)] public int Volume { get; set; } [Parameter("Bollinger Bands Deviations", DefaultValue = 2)] public int Deviations { get; set; } [Parameter("Bollinger Bands Periods", DefaultValue = 20)] public int Periods { get; set; } [Parameter("Bollinger Bands MA Type")] public MovingAverageType MAType { get; set; } [Parameter("Consolidation Periods", DefaultValue = 2)] public int ConsolidationPeriods { get; set; } [Parameter("Enabled", DefaultValue = false, Group = "Single Direction")] public bool IsSingleDirection { get; set; } [Parameter("Trade Type", Group = "Single Direction")] public TradeType SingleDirectionTradeType { get; set; } private BollingerBands bollingerBands; private string label = "SampleBreakoutRobot"; private int consolidation; protected override void OnStart() { bollingerBands = Indicators.BollingerBands(Source, Periods, Deviations, MAType); } protected override void OnBar() { var top = bollingerBands.Top.Last(1); var bottom = bollingerBands.Bottom.Last(1); if (top - bottom <= BandHeightPips * Symbol.PipSize) { consolidation = consolidation + 1; } else { consolidation = 0; } if (consolidation >= ConsolidationPeriods) { if (Symbol.Ask > top && (IsSingleDirection == false || SingleDirectionTradeType == TradeType.Buy)) { ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, label, StopLossInPips, TakeProfitInPips); consolidation = 0; } else if (Symbol.Bid < bottom && (IsSingleDirection == false || SingleDirectionTradeType == TradeType.Sell)) { ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, label, StopLossInPips, TakeProfitInPips); consolidation = 0; } } } } }
@amusleh