Replies

courquinpasisa
29 Aug 2018, 16:50

I did not think about this possibility.
I think it's a very good idea. I will rethink my new class as a basic class.

Thank you for this solution and for your exelent work on the forum.

Best regards.


@courquinpasisa

courquinpasisa
29 Aug 2018, 16:07

I have several robots that I test, and I want to create a new class whose role is to manage the orders executed by these robots and possibly to place a new order (hedging).
This new class can be used easily in my different robots.

Best regards,


@courquinpasisa

courquinpasisa
29 Aug 2018, 15:36

Hi Panagiotis,

The explanations you gave me allowed me to move forward in my project. But I have a problem again, I wish a method of my class sends an order on the market. Here is an example :

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 NewTest : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double Parameter { get; set; }
        public string TextReturn;
        public Symbol eurUsd;

        protected override void OnStart()
        {
            eurUsd = MarketData.GetSymbol("EURUSD");
            MaClass3 GH = new MaClass3(2, 5, Symbol.Ask);
            GH.ordre(eurUsd);
        }

        protected override void OnTick()
        {
            // Put your core logic here
        }

        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }
    }

    public class MaClass3 : Robot
    {
        private int a { get; set; }
        private int b { get; set; }
        private int c { get; set; }
   
        private Symbol EurUsd;

        public MaClass3(int A, int B, double C)
        {
            a = A;
            b = B;
            c = C;
        }

        public void ordre(Symbol EU)
        {
            EurUsd = EU;
            ExecuteMarketOrder(TradeType.Buy, EurUsd, 1000);
        }
    }
}



I'm trying to pass the "MarketData.GetSymbol" parameter but I have the same error message: Crashed in OnStart with NullReferenceException: The object reference is not set to an instance of an object.

Is it possible to use ExecuteMarketOrder in a method of my new class.

Thank you in advance.


@courquinpasisa

courquinpasisa
24 Aug 2018, 12:27

Hi Panagiotis,

Thank you for this explanation, it is now much clearer to me.

Best regards.


@courquinpasisa

courquinpasisa
24 Aug 2018, 12:14

A big thank you for this quick response.
I tried, and it works.
Could you explain to me why I can not use the functions of cAlgo.API in my new class.
Here is another example that returns the same error message.

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 NewTest : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double Parameter { get; set; }


        protected override void OnStart()
        {
            MaClass GH = new MaClass(2, 5, Symbol.Ask);
            Print(GH.prix);
            Print(GH.test());
        }

        protected override void OnTick()
        {
            // Put your core logic here
        }

        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }
    }


    public class MaClass : Robot
    {

        public int a { get; set; }
        public int b { get; set; }
        public int c { get; set; }
        public int resultat { get; set; }
        public double prix { get; set; }
        public bool val;

        public MaClass(int A, int B, double C)
        {
            a = A;
            b = B;
            c = 12;
            resultat = 0;
            prix = C;

            foreach (var position in Positions)
            {
                if (position.TradeType == TradeType.Sell)
                    val = true;
                else
                    val = false;
            }
        }
        
        public int test()
        {
            resultat = a + b + c;
            return resultat;
        }

    }

}



Anything in parameter is a solution, but is there another way of doing things.
Maybe by declaring my new class in another way, in order to use the functions of cAlgo.API?


@courquinpasisa