Help with Parameter for $ Value

Created at 28 Jul 2017, 00: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!
TH

theonlinemick

Joined 23.07.2017

Help with Parameter for $ Value
28 Jul 2017, 00:39


I'm working on a trigger that stops the bot and closes all positions when equity hits a set target. I need to try work around the target being in % or multiplication of balance, but instead the actual profit value in $$ ($400).

[Parameter("Equity Profit Trigger (%)", DefaultValue = 0.25)]
        public double EquityPercent { get; set; }
        double _myEquity;

        protected override void OnTick()
        {
            if ((_myEquity / Account.Equity) >  EquityPercent)
            {
                Stop();

            }

        }

 

        protected override void OnStop()
        {
            foreach (var position in Positions)
            {
                ClosePosition(position);
            }
        }


@theonlinemick
Replies

BeardPower
28 Jul 2017, 01:30

RE:

theonlinemick said:

I'm working on a trigger that stops the bot and closes all positions when equity hits a set target. I need to try work around the target being in % or multiplication of balance, but instead the actual profit value in $$ ($400).

[Parameter("Equity Profit Trigger (%)", DefaultValue = 0.25)]
        public double EquityPercent { get; set; }
        double _myEquity;

        protected override void OnTick()
        {
            if ((_myEquity / Account.Equity) >  EquityPercent)
            {
                Stop();

            }

        }

 

        protected override void OnStop()
        {
            foreach (var position in Positions)
            {
                ClosePosition(position);
            }
        }

You want to stop the bot, once your profit reached a specific cash goal?

[Parameter("Equity Profit Trigger ($)", DefaultVale = 400)]
public double EquityCash { get; set; }

protected override void OnTick()
{
    if (Account.Equity - Account.Balance >= EquityCash)
    {
        Stop();
    }
}

 


@BeardPower

theonlinemick
28 Jul 2017, 07:51

Thanks, I got it working :)

 

This allows you to input your starting capital prior to launching the bot, your desired profit amount in $, and the bot stops when equity reaches that profit level - then closes all positions.

 

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

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class ShadowHedge : Robot
    {

        [Parameter("Starting Balance ($)", DefaultValue = 5000)]
        public int StartingBalance { get; set; }

        [Parameter("Profit Target ($)", DefaultValue = 500)]
        public int ProfitTarget { get; set; }

        double _myEquity;

        protected override void OnTick()
        {
            
            if (Account.Equity > (StartingBalance + ProfitTarget))
            {
                Stop();
            }

        }

        protected override void OnStart()
        {
            _myEquity = Account.Equity;
            
        }

        protected override void OnStop()
        {
            foreach (var position in Positions)
            {
                ClosePosition(position);
            }


        }
    }
}

 


@theonlinemick

theonlinemick
28 Jul 2017, 07:55

Using Account.Balance didnt get the desired results - as the balance gradually decreses while the equity steps up. Resulting in the set profit value not generally stopping at a profitable point. This allows you to fix the starting capital and trigger the take profits when equity reaches a set amound above the fixed capital amount, regardless of account balance drawdown.


@theonlinemick