How to save and read from file multidimensional array

Created at 28 Oct 2019, 19:03
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!
RA

radoslawkupisek

Joined 05.08.2019

How to save and read from file multidimensional array
28 Oct 2019, 19:03


Hi, How can I save and then read from file multidimensional array e.g [100,4]? I need this to not loose data (in array) when restarting robot. Is there any other way to not loose data when rebooting? Should I use txt or other file to save data from array and then read it by robot and use for trading?


@radoslawkupisek
Replies

firemyst
17 Aug 2020, 12:43

Serialize it to JSON, save the JSON to a text file.

Then when you restart and restart your bot/indicator, in the OnStart or Initialize methods, you can read the json back in and convert it back to a 2-dimensional array.

Example code:

//In the OnStart method:

            // read saved file into a string and deserialize JSON to a type
            RobotInfoClass ric = null;
            if (System.IO.File.Exists(_savedFilePath))
            {
                ric = JsonConvert.DeserializeObject<RobotInfoClass>(System.IO.File.ReadAllText(_savedFilePath));
                System.IO.File.Delete(_savedFilePath);  //clean up since we no longer need it
            }

///////////////////////////////////////

//In the OnStop method:

using (System.IO.StreamWriter sw = new System.IO.StreamWriter(_savedFilePath))
                {
                    using (JsonWriter writer = new JsonTextWriter(sw))
                    {
                        RobotInfoClass ric = new RobotInfoClass();
                        ric._positionEntryPricePoints = _positionEntryPricePoints;
                        ric._positionEntryPriceTimes = _positionEntryPriceTimes;
                        ric._breakEvenPoints = _breakEvenPoints;
                        ric._increasePositionSizePoints = _increasePositionSizePoints;
                        //blah blah blah
                        ric._savedTime = DateTime.Now;

                        JsonSerializer serializer = new JsonSerializer();
                        serializer.Formatting = Formatting.Indented;
                        serializer.Serialize(writer, ric);
                    }
                }

 


@firemyst