Code below appears to not work since upgrade to Ctrader 3.5

Created at 30 Jul 2019, 09:59
Symposium's avatar

Symposium

Joined 16.07.2018

Code below appears to not work since upgrade to Ctrader 3.5
30 Jul 2019, 09:59


using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
 
/*
GlobalTP+ 0.22.1
 
Mario Hennenberger http://www.swingfish.trade/tools
 
terminates ALL open Positions and delete ALL Pending Orders of the Net Profit is reached
 
ToDo:
    - use percentages or absolute targets
    - switch between ALL and the current Product/Pair
 
Lizense:
    Creative Common - you are REQUIRED to mention me or swingfish.trade if you re-publish this.
 
 
get Updates:
    - https://ctdn.com/algos/cbots/show/1664
    - http://swingfish.trade/tools
 
Changes:
    - remove cents display
    - better text and display equity
    - reset equity OnTick
    - bug in calculating the total equity
    - use net instead of Gross
    - convert api names to new version
*/
 
namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class GlobalTPPlus : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double CashTarget { get; set; }
 
        protected override void OnStart()
        {
            // Put your initialization logic here
        }
 
        protected override void OnTick()
        {
            closeWhenTarget(CashTarget);
            ChartObjects.DrawText("CashTarget0", "Target: " + CashTarget + " " + Account.Currency + " | Dist: " + Math.Round((Account.Equity - Account.Balance - CashTarget), 0) + " | Equity: " + Math.Round((Account.Equity), 0), StaticPosition.TopLeft);
        }
 
        protected override void OnStop()
        {
            // Put your deinitialization logic here
            // will put a log here .. need to figure out how that works 
        }
 
 
        private void closeWhenTarget(double target)
        {
            double profit = 0;
 
            foreach (Position p in Positions)
                profit += p.NetProfit;
 
            // when profit is negative, we're done
            if (profit < target)
                return;
 
            // target is reached 
            foreach (Position p in Positions)
                ClosePosition(p);
 
            //  close all pending orders
            foreach (PendingOrder o in PendingOrders)
                CancelPendingOrder(o);
 
 
            // go sleep
            Stop();
        }
    }
}

Hi Panagiotis, can you have a look at the code in this utility.... I use this to close/stop Bots I have running and it appears to no longer work since my broker upgraded me to Ctrader 3.5...  Thanks in advance...Cheers


@Symposium
Replies

PanagiotisCharalampous
30 Jul 2019, 10:02

Hi Symposium,

Can you please explain what do you mean it doesn;t work? What do you expect it to do, what does it do instead and how can we reproduce the behavior?

Best Regards,

Panagiotis


@PanagiotisCharalampous

Symposium
30 Jul 2019, 10:22

RE:

Panagiotis Charalampous said:

Hi Symposium,

Can you please explain what do you mean it doesn;t work? What do you expect it to do, what does it do instead and how can we reproduce the behavior?

Best Regards,

Panagiotis

Yes, The Utility tracks the profit (CashTarget) of a position and when that parameter is met ie: say $20.00 the Bot closes all positions and stops. The utility no longer stops the Bot when the Parameter is reached... it continues to trade.


@Symposium

PanagiotisCharalampous
30 Jul 2019, 10:44

Hi Symposium,

I just tried it and worked fine. 

Best Regards,

Panagiotis


@PanagiotisCharalampous

Symposium
30 Jul 2019, 11:18

RE:

Panagiotis Charalampous said:

Hi Symposium,

I just tried it and worked fine. 

Best Regards,

Panagiotis

Thanks Panagiotis.... it must be something I'm doing.... wasn't sure... Thanks for checking it... Cheers.


@Symposium

PanagiotisCharalampous
30 Jul 2019, 11:40

Hi Symposium,

Did you check the logs? Are the orders executed?

Best Regards,

Panagiotis


@PanagiotisCharalampous

Symposium
30 Jul 2019, 13:45

RE:

Panagiotis Charalampous said:

Hi Symposium,

Did you check the logs? Are the orders executed?

Best Regards,

Panagiotis

Yes, I backtest with the log tab open... It's mixed in with some other code, and I think maybe clashing is now the issue.... My coding ability is only mediocre so, I'll go back and take a look what is different in the last few algo's I have constructed.... appreciate your help... gratefull as always....

Hey, the new 3.5 version is so much better on memory and can be left running for days without issue... Cheers 


@Symposium