Replies

PanagiotisCharalampous
20 May 2024, 08:08

Hi there,

Can you please let us know your broker? Also try cleaning your backtesting cache in C:\Users\user\AppData\Roaming\Broker cTrader\BacktestingCache

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 08:03

Hi there,

You should talk to FTT about this.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 07:33

Hi there,

Looks like a temporary network issue. Can you try opening this link and let us know if it works fine for you?

https://backtesting.ctrader.com/v5.0.0/

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:25

Hi there,

Documentation for this feature will be added soon.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:24

Hi there,

Go to Settings > Assets and pick the units you wish

 

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:21

Hi there,

You can find some here.

Best regards,


 


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:17

Hi there,

It seems that historical data is missing from your broker. Talk to your broker about this.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:13

Hi there,

Can you please be more specific regarding what you are looking for?

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:12

RE: RE: Residence verification problem

denisigrishta47 said: 

PanagiotisCharalampous said: 

Hi there,

Can you please send us a screenshot of the message as well as the IP of your device?

Best regards,

Panagiotis

 

Hi there,

It seems that you have confirmed to the app that you are a US citizen. If this is not the case, please uninstall and reinstall the application.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:10

Hi there,

Why don't I find the "Invite" section when I open "Public Settings"?

This will be available only in broker cTrader applications.

How can you open cBots on cTrader app on iPhone?

If you have synchronized your cBots to the cloud, you should see the Algo tab in your mobile application

I can't find the "cTrader Algo" app in the store.

There is no such app in the store

when you try to make an export by choosing "for all users", cTrader goes into error.

The error has been sent to the product team, they will check


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:02

Hi there,

This is not possible. In order to connect with Binance, Binance needs to offer cTrader.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 06:00

RE: RE: Why only Algo trading update?

TWiLiGHT_FX said: 

PanagiotisCharalampous said: 

Hi there,

More updates for updates for manual trading will be released in future releases.

Best regards,

Panagiotis

Hi Panagiotis

When it says Public profile on my cBot does that mean by “Enabling Synchronization” will make it viewable to the public & if so what information will be viewable to the public, spotware & or if on the cloud.??

No the algos will not be available to the public


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 05:57

Hi there,

Thank you for reporting this issue. Unfortunately we were not able to reproduce this behavior. Could you please send us some troubleshooting information the next time this happens? Please paste a link to this discussion inside the text box before you submit it.

Best regards,

Panagiotis
 


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 05:56

Hi there,

If you go to the Algo tab in your mobile application, you should be able to see all your algos and start them.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
20 May 2024, 05:47

RE: RE: RE: RE: New Bot

serebryana3 said: 

PanagiotisCharalampous said: 

serebryana3 said: 

PanagiotisCharalampous said: 

Hi there,

Can you record a video demonstrating the exact steps you are following to encounter this issue?

Best regards,

Panagiotis

Hi there, 

Here is the link to video 

 

Thanks

 

 

Can you share the code you are pasting?

using System;
using System.Collections.Generic;
using System.Threading;
using cAlgo.API;
using cAlgo.API.Internals;

namespace cAlgo
{
   [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
   public class SampleTradingPanel : Robot
   {
       [Parameter("Vertical Position", Group = "Panel alignment", DefaultValue = VerticalAlignment.Top)]
       public VerticalAlignment PanelVerticalAlignment { get; set; }

       [Parameter("Horizontal Position", Group = "Panel alignment", DefaultValue = HorizontalAlignment.Left)]
       public HorizontalAlignment PanelHorizontalAlignment { get; set; }

       [Parameter("Risk_default", Group = "x", DefaultValue = 1.5, MinValue = 0.1, Step = 0.1)]
       public double Risk { get; set; }

       [Parameter("Risk_step", Group = "x", DefaultValue = 0.5, MinValue = 0.1)]
       public double Risk_step { get; set; }

 

       protected override void OnStart()
       {
           var tradingPanel = new TradingPanel(this, Symbol, Chart, Risk, Risk_step);

           var border = new Border
           {
               VerticalAlignment = PanelVerticalAlignment,
               HorizontalAlignment = PanelHorizontalAlignment,
               Style = Styles.CreatePanelBackgroundStyle(),
               Margin = "20 20 20 20",
               Width = 245,
               Child = tradingPanel
           };

           Chart.AddControl(border);

           Chart.MouseUp += tradingPanel.Chart_MouseUp;
           Chart.KeyDown += tradingPanel.Chart_KeyDown;
       }
   }

   public class TradingPanel : CustomControl
   {
       private TextBox Input { get; set; }
       private Button Limit { get; set; }
       private Button Market { get; set; }

       private readonly Robot _robot;
       private readonly Symbol _symbol;
       Chart _chart;
       private double RiskStep { get; set; }
       private bool UsePercent { get; set; }
       LimitOrderState LimitState { get; set; }
       bool IsLong { get; set; }
       double LimitStopLoss { get; set; }

       MarketOrderState MarketState { get; set; }
       double MarketStopLoss { get; set; }

       public TradingPanel(Robot robot, Symbol symbol, Chart chart, double riskDef, double riskStep)
       {
           _robot = robot;
           _symbol = symbol;
           _chart = chart;
           RiskStep = riskStep;
           AddChild(CreateContentPanel(riskDef));
       }

       internal void Chart_MouseUp(ChartMouseEventArgs obj)
       {
           try
           {
               #region Limit
               if (LimitState == LimitOrderState.DetectingStopPrice)
               {
                   LimitStopLoss = obj.YValue;
                   LimitState = LimitOrderState.PlacingLimitOrder;
                   Limit.Text = "ORDER";
                   if (obj.YValue > _symbol.Ask)
                       IsLong = false;
                   else if (obj.YValue < _symbol.Ask)
                       IsLong = true;
                   _chart.DrawHorizontalLine("StopLine", obj.YValue, Color.Red);
               
               }
               else if (LimitState == LimitOrderState.PlacingLimitOrder)
               {
                   _chart.RemoveObject("StopLine");
                   double volume;

                   if (UsePercent)
                   {
                       volume = _symbol.VolumeForProportionalRisk(ProportionalAmountType.Balance, double.Parse(Input.Text), Math.Abs((obj.YValue - LimitStopLoss) / _symbol.PipSize));
                       volume = volume * _robot.Account.FreeMargin / _robot.Account.Balance;
                       volume = _symbol.NormalizeVolumeInUnits(volume, RoundingMode.ToNearest);
                   }
                   else
                   {
                       volume = _symbol.VolumeForFixedRisk(double.Parse(Input.Text), Math.Abs((obj.YValue - LimitStopLoss) / _symbol.PipSize));
                       volume = volume * _robot.Account.FreeMargin / _robot.Account.Balance;
                       volume = _symbol.NormalizeVolumeInUnits(volume, RoundingMode.ToNearest);
                   }


                   _robot.PlaceLimitOrderAsync(IsLong ? TradeType.Buy : TradeType.Sell, _symbol.Name, volume, obj.YValue, "CustomPanel", Math.Abs(obj.YValue - LimitStopLoss) / _symbol.PipSize, null,
                       (TradeResult result) =>
                       {
                           if (result != null && !result.IsSuccessful)
                           {
                               LimitState = LimitOrderState.Default;
                               Limit.Text = "LIMIT";
                           }
                       });
                   LimitState = LimitOrderState.PlacingTakeProfit;
                   Limit.Text = "TAKE";
               }
               else if (LimitState == LimitOrderState.PlacingTakeProfit)
               {
                   _robot.ModifyPendingOrderAsync(_robot.PendingOrders[^1], _robot.PendingOrders[^1].TargetPrice, _robot.PendingOrders[^1].StopLossPips, Math.Abs(obj.YValue - _robot.PendingOrders[^1].TargetPrice) / _symbol.PipSize,
                       (TradeResult result) =>
                       {
                           if (result == null || !result.IsSuccessful)
                           {
                               LimitState = LimitOrderState.Default;
                               Limit.Text = "LIMIT";
                           }
                       });

                   LimitState = LimitOrderState.Default;
                   Limit.Text = "LIMIT";
               }
               #endregion

               #region Market
               if (MarketState == MarketOrderState.DetectingStopPrice)
               {
                   MarketStopLoss = obj.YValue;

                   double volume;
                   double volume1;
                   if (UsePercent)
                   {
                       volume = _symbol.VolumeForProportionalRisk(ProportionalAmountType.Balance, double.Parse(Input.Text), Math.Abs((_symbol.Ask - MarketStopLoss) / _symbol.PipSize));
                       volume1 = volume;
                       volume = volume * _robot.Account.FreeMargin / _robot.Account.Balance;
                       volume = _symbol.NormalizeVolumeInUnits(volume, RoundingMode.ToNearest);
                   }
                   else
                   {
                       volume = _symbol.VolumeForFixedRisk(double.Parse(Input.Text), Math.Abs((_symbol.Ask - MarketStopLoss) / _symbol.PipSize));
                       volume1 = volume;
                       volume = volume * _robot.Account.FreeMargin / _robot.Account.Balance;
                       volume = _symbol.NormalizeVolumeInUnits(volume, RoundingMode.ToNearest);
                   }

                   TradeType type = TradeType.Buy;

                   if (MarketStopLoss > _symbol.Ask)
                       type = TradeType.Sell;

                   var res = _robot.ExecuteMarketOrder(type, _symbol.Name, volume);

                   if (res != null)
                   {
                       _robot.ModifyPositionAsync(res.Position, MarketStopLoss, null, null);

                       _robot.Print($"volume {volume1}");
                       _robot.Print($"res.Position.VolumeInUnits {res.Position.VolumeInUnits}");
                       double dif = Math.Abs(volume1 - res.Position.VolumeInUnits) / volume1;
                       _robot.Print($"dif {dif}");

                       if (dif > 0.2d)
                       {
                           _robot.Print($"Разница между рассчитанным и исполненным объемом {Math.Round(dif,2) * 100}%");
                           _robot.Notifications.PlaySound(SoundType.Announcement);
                       }
                   }

                   MarketState = MarketOrderState.PlacingTakeProfit;
                   Market.Text = "STOP";
               }
               else if (MarketState == MarketOrderState.PlacingTakeProfit)
               { 
                   var lastPosition = _robot.Positions[^1];
                   if (lastPosition != null)
                   {
                       double newTakeProfitPrice = obj.YValue;
                       _robot.ModifyPositionAsync(lastPosition, lastPosition.StopLoss, newTakeProfitPrice,
                           (TradeResult result) =>
                           {
                               if (result == null || !result.IsSuccessful)
                               {
                                   _robot.Print("Failed to modify the take profit: {0}", result.Error);
                               }
                               else
                               {
                                   _robot.Print("Take profit successfully modified.");
                               }
                           });
                   }
                   else
                   {
                       _robot.Print("No open positions found.");
                   }

                   MarketState = MarketOrderState.Default;
                   Limit.Text = "MARKET";
               }
               #endregion
           }
           catch
           {
               LimitState = LimitOrderState.Default;
               Limit.Text = "LIMIT";

               MarketState = MarketOrderState.Default;
               Market.Text = "MARKET";
           }
       }

               internal void Chart_KeyDown(ChartKeyboardEventArgs obj)
               {
                   if (obj.Key == Key.Escape)
                   {
                       _chart.RemoveObject("StopLine");
                       LimitState = LimitOrderState.Default;
                       Limit.Text = "LIMIT";
                       MarketState = MarketOrderState.Default;
                       Market.Text = "MARKET";
                   }
       }


       private Grid CreateContentPanel(double riskDef)
       {
           var grid = new Grid(1, 2)
           {
               Margin = 10
           };
           var gridLeft = new Grid(1, 3);

           Input = CreateInput(riskDef);
           gridLeft.AddChild(Input, 0, 0);

           var percentMoneySwitchButton = CreateSwitchButton("$", Styles.CreateGreenButtonStyle());
           gridLeft.AddChild(percentMoneySwitchButton, 0, 1);

           var gridLeftInner = new Grid(2, 1);

           var plusButton = CreatePlusMinusButton("+", Styles.CreateGreenButtonStyle());
           gridLeftInner.AddChild(plusButton, 0, 0);

           var minusButton = CreatePlusMinusButton("-", Styles.CreateGreenButtonStyle());
           gridLeftInner.AddChild(minusButton, 1, 0);

           gridLeft.AddChild(gridLeftInner, 0, 2);

           var gridRight = new Grid(1, 2);

           var limitButton = CreateLimitButton("LIMIT", Styles.CreateGreenButtonStyle());
           gridRight.AddChild(limitButton, 0, 0);

           var marketButton = CreateMarketButton("MARKET", Styles.CreateGreenButtonStyle());
           gridRight.AddChild(marketButton, 0, 1);

           grid.AddChild(gridLeft, 0, 0);
           grid.AddChild(gridRight, 0, 1);

           return grid;
       }

       private TextBox CreateInput(double riskDef)
       {
           var newInput = new TextBox
           {
               Margin = "2",
               Text = riskDef.ToString(),
               Style = Styles.CreateInputStyle()
           };

           return newInput;
       }

       private Button CreateSwitchButton(string text, Style style)
       {
           var button = new Button
           {
               Text = text,
               Style = style,
               Height = 28,
               Margin = "2"
           };

           button.Click += (button) =>
           {
               if (button.Button.Text == "%")
               {
                   button.Button.Text = "$";
                   UsePercent = false;
               }
               else
               {
                   button.Button.Text = "%";
                   UsePercent = true;
               }
           };

           return button;
       }

       private Button CreatePlusMinusButton(string text, Style style)
       {
           var button = new Button
           {
               Text = text,
               Style = style,
               Height = 12,
               VerticalContentAlignment = VerticalAlignment.Center,
               HorizontalContentAlignment = HorizontalAlignment.Center,
               Margin = "2"
           };

           if (text == "+")
               button.Click += args =>
               {
                   if (double.TryParse(Input.Text, out double buf))
                       Input.Text = (buf + RiskStep).ToString();
               };
           else
               button.Click += args =>
               {
                   if (double.TryParse(Input.Text, out double buf))
                       Input.Text = (buf - RiskStep).ToString();
               };

           return button;
       }

       private Button CreateLimitButton(string text, Style style)
       {
           var button = new Button
           {
               Text = text,
               Style = style,
               VerticalContentAlignment = VerticalAlignment.Center,
               HorizontalContentAlignment = HorizontalAlignment.Center,
               Margin = "2"
           };

           button.Click += (button) =>
           {
               if (LimitState == LimitOrderState.Default)
                   LimitState = LimitOrderState.DetectingStopPrice;

               MarketState = MarketOrderState.Default;
               Market.Text = "MARKET";

               if (button.Button.Text == "LIMIT")
                   button.Button.Text = "STOP";
           };

           Limit = button;

           return button;
       }

       private Button CreateMarketButton(string text, Style style)
       {
           var button = new Button
           {
               Text = text,
               Style = style,
               VerticalContentAlignment = VerticalAlignment.Center,
               HorizontalContentAlignment = HorizontalAlignment.Center,
               Margin = "2"
           };

           button.Click += (button) =>
           {
               if (MarketState == MarketOrderState.Default)
                   MarketState = MarketOrderState.DetectingStopPrice;

               LimitState = LimitOrderState.Default;
               Limit.Text = "LIMIT";

               if (button.Button.Text == "MARKET")
                   button.Button.Text = "STOP";
           };

           Market = button;

           return button;
       }


       enum LimitOrderState
       {
           Default,
           DetectingStopPrice,
           PlacingLimitOrder,
           PlacingTakeProfit
       }

       enum MarketOrderState
       {
           Default,
           DetectingStopPrice,
           PlacingTakeProfit
       }
   }

   public static class Styles
   {
       public static Style CreatePanelBackgroundStyle()
       {
           var style = new Style();
           style.Set(ControlProperty.CornerRadius, 3);
           style.Set(ControlProperty.BackgroundColor, GetColorWithOpacity(Color.FromHex("#292929"), 0.85m), ControlState.DarkTheme);
           style.Set(ControlProperty.BackgroundColor, GetColorWithOpacity(Color.FromHex("#FFFFFF"), 0.85m), ControlState.LightTheme);
           style.Set(ControlProperty.BorderColor, Color.FromHex("#3C3C3C"), ControlState.DarkTheme);
           style.Set(ControlProperty.BorderColor, Color.FromHex("#C3C3C3"), ControlState.LightTheme);
           style.Set(ControlProperty.BorderThickness, new Thickness(1));

           return style;
       }


       public static Style CreateInputStyle()
       {
           var style = new Style(DefaultStyles.TextBoxStyle);
           style.Set(ControlProperty.BackgroundColor, Color.FromHex("#1A1A1A"), ControlState.DarkTheme);
           style.Set(ControlProperty.BackgroundColor, Color.FromHex("#111111"), ControlState.DarkTheme | ControlState.Hover);
           style.Set(ControlProperty.BackgroundColor, Color.FromHex("#E7EBED"), ControlState.LightTheme);
           style.Set(ControlProperty.BackgroundColor, Color.FromHex("#D6DADC"), ControlState.LightTheme | ControlState.Hover);
           style.Set(ControlProperty.CornerRadius, 3);
           return style;
       }

       public static Style CreateGreenButtonStyle()
       {
           return CreateButtonStyle(Color.FromHex("#009345"), Color.FromHex("#10A651"));
       }


       private static Style CreateButtonStyle(Color color, Color hoverColor)
       {
           var style = new Style(DefaultStyles.ButtonStyle);
           style.Set(ControlProperty.Padding, new Thickness(2, 0, 2, 0));
           style.Set(ControlProperty.BackgroundColor, color, ControlState.DarkTheme);
           style.Set(ControlProperty.BackgroundColor, color, ControlState.LightTheme);
           style.Set(ControlProperty.BackgroundColor, hoverColor, ControlState.DarkTheme | ControlState.Hover);
           style.Set(ControlProperty.BackgroundColor, hoverColor, ControlState.LightTheme | ControlState.Hover);
           style.Set(ControlProperty.ForegroundColor, Color.FromHex("#FFFFFF"), ControlState.DarkTheme);
           style.Set(ControlProperty.ForegroundColor, Color.FromHex("#FFFFFF"), ControlState.LightTheme);
           return style;
       }

       private static Color GetColorWithOpacity(Color baseColor, decimal opacity)
       {
           var alpha = (int)Math.Round(byte.MaxValue * opacity, MidpointRounding.AwayFromZero);
           return Color.FromArgb(alpha, baseColor);
       }
   }
}

 

 

 

Hi there,

Unfortunately I cannot reproduce this problem. The code you pasted builds fine for me.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
18 May 2024, 06:44

RE: RE: Robot Backtesting doesnt work for all pairs!

DR.SHADI_JARRAR said: 

PanagiotisCharalampous said: 

Hi there,

Can you please provide more information about the issue? What do you mean when you say it doesn't work? Can you share the source code as well as steps to reproduce?

Best regards,

Panagiotis

simply the cbot doesnt excute any positions in all pairs except in indices. here is the result of backtesting when used with Japan225 for example:

 

On the other hand, for usdjpy backtesting this is the result: 

 

 

 

Here is the code of the cbot: 

 

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using System.Linq;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class YarabRobot : Robot
    {
                // تحديد الثوابت والمراجع
        private Yarabindicator _Yarabindicator;
        private bool tradeExecutedThisHour = false;
        private double initialLotSize = 0.01;
        private double currentLotSize = 0.01; 
        private bool previousPositionInLoss = false; 
        private bool IsNewHour()
        {
            return Server.Time.Minute == 0 && Server.Time.Second == 0;
        }

                // استدعاء المؤشر
        protected override void OnStart()
        {
            // Initialize the dLagema indicator
            _Yarabindicator = Indicators.GetIndicator<Yarabindicator>(3, 100, 60,1, 7,17);
        }

                // طريقة البار لفتح الصفقات

                 protected override void OnBar()
        {
                    int index = MarketSeries.Close.Count - 1;
                    
            // السماح بفتح الصفقات لمرة واحدة فقط بمجرد بداية الساعة                 
                if (IsNewHour())
                tradeExecutedThisHour = false;
            
            // اشتري بهذه الشروط واعلن اتمام فتح صفقة
            if ((Bars.ClosePrices[index-1] > _Yarabindicator.DLagEMAs[index-1]&&Bars.ClosePrices[index-2] < _Yarabindicator.DLagEMAs[index-2]) )
            {
                ExecuteMarketOrder(TradeType.Buy, Symbol, currentLotSize, "Open BUY Position", null,null,null, "Buy");
                tradeExecutedThisHour = true;
            }
            // بيع بهذه الشروط واعلن اتمام فتح صفقة
            else if ((Bars.ClosePrices[index-1] < _Yarabindicator.DLagEMAs[index-1]&&Bars.ClosePrices[index-2] > _Yarabindicator.DLagEMAs[index-2]))
            {
                ExecuteMarketOrder(TradeType.Sell, Symbol, currentLotSize, "Open SELL Position",null, null,null, "Sell");
                tradeExecutedThisHour = true;  
                
            }
         }    
         
         
                // طريقة التيك لاغلاق الصفقات
        protected override void OnTick()
        {
                    int index = Bars.ClosePrices.Count - 1;


            // أغلق صفقة الشراء باحدى الحالتين التاليتين
            if (Bars.HighPrices[index ] > _Yarabindicator.sr[index ]||Bars.LowPrices[index ] < _Yarabindicator.DLagEMAs2[index ] )
            {
                var buyPositions = Positions.Where(p => p.TradeType == TradeType.Buy).ToList();
                foreach (var position in buyPositions)
                    
                    if (position.GrossProfit < 0)
                    {
                    currentLotSize=currentLotSize*1;
                    ClosePosition(position);
                    }
                    else if (position.GrossProfit > 0)
                    {
                    currentLotSize=initialLotSize;
                    ClosePosition(position);
                    }
            }

            // أغلق صفقة الشراء باحدى الحالتين التاليتين
            if (Bars.LowPrices[index ] < _Yarabindicator.sr[index ]||Bars.HighPrices[index ] > _Yarabindicator.DLagEMAs2[index ])
            {
                var sellPositions = Positions.Where(p => p.TradeType == TradeType.Sell).ToList();
                foreach (var position in sellPositions)
 
                    if (position.GrossProfit < 0)
                    {
                    currentLotSize=currentLotSize*1;
                    ClosePosition(position);
                    }
                    else if (position.GrossProfit > 0)
                    {
                    currentLotSize=initialLotSize;
                    ClosePosition(position);
                    }
            }     
        }
       }
      }
 

You seem to use lots instead of units as volume. That's probably the reason.


@PanagiotisCharalampous

PanagiotisCharalampous
18 May 2024, 06:42

RE: RE: Disable Platform Software Auto Update

ctid6168533 said: 

PanagiotisCharalampous said: 

Hi RayAdam,

There is no option to disable updates for cTrader. 

Best Regards,

Panagiotis

hi Panagiotis, 

there should be a feature to block update. this is a platform we use to trade money and we can't risk our trades with new versions specially when they still have problems. there should be an update acknowlegment.. now i am not able to handle my Algos properly with very slow optimizations and optimization status not appearing on the left screen as before .. I am using a Dell R720 server with dual processors total 56 cores and 256 RAM yet the optimization is extremly slow compared to previous version ! 

Hi there,

If you don't want to use the update, you can use your broker's version which has not been updated yet.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
18 May 2024, 06:40

Hi there,

More updates for updates for manual trading will be released in future releases.

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
18 May 2024, 06:37

Hi there,

Can you share the cBot code so that we can check?

Best regards,

Panagiotis


@PanagiotisCharalampous

PanagiotisCharalampous
18 May 2024, 06:34

Hi all,

You can still use your broker's cTrader which has not been updated yet.

Best regards,

Panagiotis


@PanagiotisCharalampous