compatibility with .NET 6.0

Created at 04 Aug 2022, 11:39
How’s your experience with the cTrader Platform?
Your feedback is crucial to cTrader's development. Please take a few seconds to share your opinion and help us improve your trading experience. Thanks!
AL

al-n

Joined 03.01.2021

compatibility with .NET 6.0
04 Aug 2022, 11:39


hi everybody.

can someone please help to modificate the following tsl bot to be able to work wir ctrader 4.2.17  ?!?!


i have already tried to "build" the source code with "taget framework -> .NET 6.0". but unfortunately it didn't work.

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 my_tsl : Robot
    {
        [Parameter("Instance Name", DefaultValue = "")]
        public string InstanceName { get; set; }
        [Parameter("Include Trailing Stop", DefaultValue = true)]
        public bool IncludeTrailingStop { get; set; }
 
        [Parameter("Trailing Stop Trigger (pips)", DefaultValue = 2)]
        public double TrailingStopTrigger { get; set; }
 
        [Parameter("Trailing Stop Step (pips)", DefaultValue = 1)]
        public double TrailingStopStep { get; set; }
 
 
 
        protected override void OnStart()
        {
            // Put your initialization logic here
        }
 
        protected override void OnTick()
        {
            if (IncludeTrailingStop)
            {
                SetTrailingStop();
            }
            // Put your core logic here
        }
        private void SetTrailingStop()
        {
            var sellPositions = Positions.FindAll(InstanceName, Symbol, TradeType.Sell);
 
            foreach (Position position in sellPositions)
            {
                double distance = position.EntryPrice - Symbol.Ask;
 
                if (distance < TrailingStopTrigger * Symbol.PipSize)
                    continue;
 
                double newStopLossPrice = Symbol.Ask + TrailingStopStep * Symbol.PipSize;
 
                if (position.StopLoss == null || newStopLossPrice < position.StopLoss)
                {
                    ModifyPosition(position, newStopLossPrice, position.TakeProfit);
                }
            }
 
            var buyPositions = Positions.FindAll(InstanceName, Symbol, TradeType.Buy);
 
            foreach (Position position in buyPositions)
            {
                double distance = Symbol.Bid - position.EntryPrice;
 
                if (distance < TrailingStopTrigger * Symbol.PipSize)
                    continue;
 
                double newStopLossPrice = Symbol.Bid - TrailingStopStep * Symbol.PipSize;
                if (position.StopLoss == null || newStopLossPrice > position.StopLoss)
                {
                    ModifyPosition(position, newStopLossPrice, position.TakeProfit);
                }
            }
        }
        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }
    }
}

 


@al-n