If you are checking if the orders have been filled, you should use the PendingOrders.Filled event instead. You should cancel the remaining orders only when the order is filled.
Funny thing is that only builtin ones are not loading as you cans see in the screenshot attached.
Hi caputojr,
Could you pleasesend us some troubleshooting information the next time this happens? Please paste a link to this discussion inside the text box before you submit it.
ok thank you, i should have tested other broker feeds.
hey on a side note, everytime i leave ctrader open for multiple days it starts to act glitchy, like some of the candles are missing on multiple timeframes. just letting you know in case you want to try it. my workaround is to restart the program once a day.
Hi atrrwilder,
Thank you for reporting this issue. Could you pleasesend us some troubleshooting information the next time this happens? Please paste a link to this discussion inside the text box before you submit it.
I tried to use your workaround but it doesn't really work for 2 reasons :
1/ if I want to backtest the bot that I use on Live market I can't change a lot of code and so I have to keep using the same functions. It seems that even if the history date are loaded (I can see see it if I check the date with Bars[0]), I can't recall that data with the MarketData.GetBars
2/ To run the Backtest I have to choose 1 timeframe (let s say H1) but in my bot I need check the historical data of the H4 and the Daily. And so even if I start the backtest to beofre my “real” backtesting date to load the data, it loads only the data for H1 and not for H4/Daily.
Here is my 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(AccessRights = AccessRights.None)]
public class EasyHistoLoad : Robot
{
[Parameter("Backtest On/Off", Group = "BackTest", DefaultValue = false)]
public bool BackTest { get; set; }
[Parameter("Backtest Date", Group = "BackTest", DefaultValue = "2024/03/01 01:00:00")]
public string BackTestDate { get; set; }
protected override void OnStart()
{
// To learn more about cTrader Automate visit our Help Center:
The idea of my code/bot is to check some data in the past for the H4 to know if I am bullish or bearish and the to deep dive in the 1 minute chart.
Basically I have to go 60 bars on the timeframe and then go to the m1. Let s say I want to backtest from the 1st february, I check the H4 10 days before (60*4/24), that should be around mid of January and then I check some data on that date on the m1.
So most of the time I need to LoadMoreHistory on the m1.
while (_OfTimeFrameBars.OpenTimes[0] > time_to_test){ var numberOfLoadedBars = _OfTimeFrameBars.LoadMoreHistory();
LoadMoreHistory does not work in backtesting therefore your code enters an infinite loop.
Best regards,
Panagiotis
Hi Seb,
The workaround I use is to start the backtesting at earlier dates so that all the necessary information is loaded, while skipping all trading operations until a custom defined date. So I have a set of parameters like this
which replace the backtesting start date and I move my backtesting start date as far in the past as I want.
Best regards,
Panagiotis
Hi Seb,
I did not understand what the problem is here, sorry
You should retrieve the data on start, before the if condition. That's the whole point of the workaround
protected override void OnStart()
{
// To learn more about cTrader Automate visit our Help Center:
// https://help.ctrader.com/ctrader-automate
// Print(Bars.Count());
DateTime time_to_test = Bars[Bars.Count() - 5].OpenTime.AddDays(-15);
Bars _OfTimeFrameBars = MarketData.GetBars(TimeFrame.Minute, SymbolName);
Print("Bars[0].OpenTime " + Bars[0].OpenTime + " _OfTimeFrameBars.OpenTimes[0] " + _OfTimeFrameBars.OpenTimes[0] + " time_to_test " + time_to_test);
// Print(time_to_test);
// Get m1 Bars
if (BackTest && Bars.Last().OpenTime > DateTime.Parse(BackTestDate))
{
var LastOpenTimeLoaded = _OfTimeFrameBars.OpenTimes[0];
if (_OfTimeFrameBars.OpenTimes[0] > time_to_test)
{
Print("_OfTimeFrameBars is not using Bars history already loaded");
}
}
}
PanagiotisCharalampous
25 Apr 2024, 05:59
Hi there,
You can use a trade copy software like cMAM
https://clickalgo.com/ctrader-trade-copy
Best regards,
Panagiotis
@PanagiotisCharalampous