Open a new trade when the first one is in profit

Created at 16 Feb 2018, 17:23
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!
LG

lg880optimus4

Joined 14.12.2017

Open a new trade when the first one is in profit
16 Feb 2018, 17:23


Hello

I am new to programming, and I have a few issues. I created a small bot that should open just one trade when another trade is in profit by a few pips. My bot does open but it doesn't stop at just one trade, and I don't know how to count just one trade.

Technically the bot should look for Buy and Sell trades from one pair and then just open a similar trade (just one) if the original trade is 5 pips in profit. If the new trade stops in profit/loss then it should start again.

I only want one simple boot that will work for one pair. I can modify and create new ones for every pair if I need later. I tried a lot of combinations, and the only issue I have is that it doesn't stop after it finds the trade with my label.

As you can see in the codes, I only have one type of trade, but it will be nice if it could search for Buy and Sell at the same time and open a similat trade to the one it finds.

 

This one works, but counts all the open positions and then it stops.

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 testAUDUSD : Robot
    {

        protected override void OnStart()
        {
        }
        protected override void OnBar()
        {
            if (Positions.Count < 2)
            {
                var positions = Positions.FindAll("AUDUSD_S", Symbol, TradeType.Sell);
                foreach (var position in positions)
                {
                    if (position.Pips > 5)
                    {
                        ExecuteMarketOrder(TradeType.Sell, Symbol, 2000, "AUDUSD_S", 20, 20);
                    }
                }
            }
        }
    }
}

 

This one finds the exact trade by label, but again, it doesn't stop after one trade.

        protected override void OnStart()
        {
        }

        protected override void OnTick()
        {
            var shortPosition = Positions.Find("AUDUSD_S", Symbol, TradeType.Sell);
            {
                if (shortPosition.Pips > 5)
                {
                    ExecuteMarketOrder(TradeType.Sell, Symbol, 2000, "AUDUSD_S", 20, 20);
                }

 


@lg880optimus4