Creating other classes and Object reference exception
            
                 02 Aug 2016, 20:51
            
                    
HI All
I am using cAlgo and Visual Studio.
I want to incorporate logic and other objects in other classes.
I have a number of issues:
1) when i try to access MarketSeries.High[i] or .Low[i] i get a nullpointer exception as if the static method is not recognized. The compilation has no wornings or errors. In cAlgo i get object reference not set to an object.
It happens also for the method Print("");
Is there something i have to add in the other classes i use to make sure this doesnt happen?
2)From cAlgo, although doesnt give any error and compiles fine, i dont get the code complition help like for the rest of the API. So a method from my own class would not autocomplete. I dont midn too much as i work on the classes from Visual Studio. It is only annoying.
The class is like this:
I am going mad trying to understand what do i need to add to avoid MarketSeries to give me the nullpointerexception thanks
class Candy:Robot
    {
        private double High, Low, Open, Close, Size, Center, QuarterUp, QuarterDwn;
        List<CandyType> candyQualities;
        
        public Candy(int i) {
            candyQualities = new List<CandyType>();
            //
            try { 
                Print("candle index "+i+" initialized");
                AnalyzeCandle(i);
            }
            catch (Exception e)
            {
                Print("{0} ", e.StackTrace);
            }
        }
        public void AnalyzeCandle(int i){
            High = MarketSeries.High[i];
            Low = MarketSeries.Low[i];
            Open = MarketSeries.Open[i];
            Close = MarketSeries.Close[i];
            Size = Math.Abs(High - Low);
            Center = High - (High-Low)/2;
            QuarterUp = High - (High - Center) / 2;
            QuarterDwn = High - Size*3/4;
}
}
Replies
                     egi.messito
                     03 Aug 2016, 16:51
                                    
Solved by passing
StrategyTest st = new StrategyTest(MarketData.GetSeries(TimeFrame));
But i can still not Print(""); from another class
what do i need to initiate in the other class to be able to Print?
@egi.messito
                     egi.messito
                     03 Aug 2016, 17:08
                                    
Solved:
Need to pass (this) in the custome class to get the Printing function into the log.
this is the easier way other then using reflection...
public class CustomClass
{
    private MyRobot _robot;
  
    public CustomClass(MyRobot robot)
    {
        _robot = robot;
    }
  
    public void Print(string message)
    {
         _robot.PrintToLog(message)
    }
}
So in my code:
StrategyTest st = new StrategyTest(MarketData.GetSeries(TimeFrame), this);
            st.doSomething();
@egi.messito

egi.messito
02 Aug 2016, 21:24
RE:
At a more basic level
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class NewcBot : Robot { [Parameter(DefaultValue = 0.0)] public double Parameter { get; set; } public Testami t; protected override void OnStart() { // Put your initialization logic here t = new Testami(); } protected override void OnTick() { // Put your core logic here } protected override void OnStop() { // Put your deinitialization logic here } } public class Testami : Robot { public Testami() { var index = MarketSeries.Close.Count - 1; double high = MarketSeries.High[index - 3]; Print("test"); } } }this would crash - why i cannot use Print and MarketSeries in the custom class?
@egi.messito