Problmes with referring custom indicator's to cBot causing none executed trade in Backtesting
Problmes with referring custom indicator's to cBot causing none executed trade in Backtesting
27 Aug 2023, 04:49
Hi guys, I am having problems by using(referring) my custom indicator's calculation result in(to) my cBot, I can't execute any trade in "Backtesting" but there are no errors showing up every time I build the code, I have checked lots of things I dont think is the cBot's error because when I use the built in indicator(RSI) it execute order and selling orders in Backtesting perfectly fine, so I think it's probably my calculation's format is doing wrongly?
I am a newbie on csharp, I will provide my indicator code and cBot code below for you guys to check, please help me out 🤝
This is the indicator code
```using cAlgo.API;
namespace cAlgo{ [Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AutoRescale = true, AccessRights = AccessRights.None)] public class JINGXUANSOUL : Indicator { [Parameter("Source")] public DataSeries Source { get; set; }
[Parameter(DefaultValue = 27)] public int Periods { get; set; }
[Parameter(DefaultValue = 3)] public int SSSmooth { get; set; }
[Parameter(DefaultValue = 3)] public int DDSmooth { get; set; }
[Output("K", LineColor = "Blue", PlotType = PlotType.Line)] public IndicatorDataSeries SS { get; set; }
[Output("D", LineColor = "Red", PlotType = PlotType.Line)] public IndicatorDataSeries DD { get; set; }
[Output("J", LineColor = "Green", PlotType = PlotType.Line)] public IndicatorDataSeries KK { get; set; } [Output("KD", LineColor = "Green", PlotType = PlotType.Line)] public IndicatorDataSeries KD { get; set; } protected override void Initialize() { IndicatorArea.DrawHorizontalLine("OverBoughtH" , 100 , Color.Orange); IndicatorArea.DrawHorizontalLine("OverBoughtL" , 90 , Color.Orange); IndicatorArea.DrawHorizontalLine("OverSoldH" , 10 , Color.Orange); IndicatorArea.DrawHorizontalLine("OverSoldL" , 0 , Color.Orange); }
public override void Calculate(int index) { var highestHigh = Source.Maximum(Periods); var lowestLow = Source.Minimum(Periods); var currentClose = Bars.ClosePrices;
double rsv = 0; if (highestHigh != lowestLow) rsv = (currentClose[index] - lowestLow) / (highestHigh - lowestLow) * 100;
var kPrev = index > 0 ? SS[index - 1] : 50; var dPrev = index > 0 ? DD[index - 1] : 50;
var ss = (rsv + (SSSmooth - 1) * kPrev) / SSSmooth; var dd = (ss + (DDSmooth - 1) * dPrev) / DDSmooth; var kk = 3 * ss - 2 * dd; var kd = ((ss+dd)/2);
SS[index] = ss; DD[index] = dd; KK[index] = kk; KD[index] = kd; } }}```
and this is the cBot code
```using System;using System.Collections.Generic;using System.Linq;using System.Text;using cAlgo.API;using cAlgo.API.Collections;using cAlgo.API.Indicators;using cAlgo.API.Internals;
namespace cAlgo.Robots{ [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class RelativeStrengthIndexSample : Robot { [Parameter("Volume (Lots)", DefaultValue = 0.1)] 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")] private JINGXUANSOUL _jxsoul; public string Label { get; set; } public Position[] BotPositions { get { return Positions.FindAll(Label); } } protected override void OnStart() { _jxsoul = Indicators.GetIndicator<JINGXUANSOUL>(); } protected override void OnBarClosed() { if (_jxsoul.KD.Last(1)>90) { ClosePositions(TradeType.Buy); ExecuteMarketOrder(TradeType.Sell, SymbolName, VolumeInLots, Label, StopLossInPips, TakeProfitInPips); } else if (_jxsoul.KD.Last(1)<10) { ClosePositions(TradeType.Sell); ExecuteMarketOrder(TradeType.Buy, SymbolName, VolumeInLots, Label, StopLossInPips, TakeProfitInPips); } } private void ClosePositions(TradeType tradeType) { foreach (var position in BotPositions) { if (position.TradeType != tradeType) continue; ClosePosition(position); } } }}
Replies
JXTA
07 Sep 2023, 00:00
( Updated at: 07 Sep 2023, 05:44 )
RE: Problmes with referring custom indicator's to cBot causing none executed trade in Backtesting
PanagiotisChar said:
Hi there,
Check your log and you will see an exception. You do not initialize BotPositions anywhere
Need help? Join us on Telegram
Thanks Panagiotis
@JXTA

PanagiotisChar
27 Aug 2023, 05:54 ( Updated at: 28 Aug 2023, 04:42 )
Hi there,
Check your log and you will see an exception. You do not initialize BotPositions anywhere
Aieden Technologies
Need help? Join us on Telegram
@PanagiotisChar