MarketSeries.Close array analogy to MQL4 CopyClose
MarketSeries.Close array analogy to MQL4 CopyClose
24 Jul 2019, 15:14
Hi everyone!
I am new to this forum and cTrader for the matter! I come from using MQL4 but I-m now switching to cTrader for it's many features!
I'm sorry if this has been solved before. I've looked for it without any luck; I'm trying to build an array of close prices beginning from the last candle up until a term iCandle. When I call MarketSeries.Close[index] outside a for loop, the data is displayed nicely. Nonetheless, upon calling the method inside a for loop, I don't get any value back. I am also new to C# as I've been coding in Python for the last 2 years, so I'm guessing there must be something I'm doing wrong.
Any help will be much appreciated! Thank you!
Code:
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 Strategy5 : Robot { [Parameter("iCandle", DefaultValue = 7)] public int iCandle { get; set; } protected override void OnStart() { Print("initializing console"); } protected override void OnBar() { //lets print the last 7 candle closes Print("Printing the last 7 candles"); var lastIndex = MarketSeries.Close.Count - 1; string data = ""; for (int i = lastIndex; i <= lastIndex-iCandle; i--) { string strclose = MarketSeries.Close[i].ToString(); data += strclose + ", "; } Print("last prices are {0}", data); } protected override void OnStop() { // Put your deinitialization logic here } } }
firemyst
17 Aug 2019, 18:37
RE:
gutygs said:
Of course you won't get any values inside the for loop. Look at the conditions of your for loop.
for (int i = lastIndex; i <= lastIndex-iCandle; i--)
lastIndex is set to the last index.
i is set to this value.
So how is "i" going to be less than the "lastIndex - iCandle"?
Say lastIndex is 3000. So i starts off at 3000.
how is 3000 going to be <= (3000 - 5)?
It never will be.
So it never enters your for-loop.
And thus nothing is printed.
@firemyst