Status
Open
Budget
1.00 USD
Payment Method
Direct Payment
Job Description
I need help with a simple C# issue. I want to get the average spread stored by Pair in an associated list.
This works exactly the way I want it to, but only for one symbol:
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using System.Collections.Generic;
namespace cAlgo.Robots
{
[Robot()]
public class Robot : Robot
{
List SpreadList = new List();
protected override void OnStart()
{
}
protected override void OnTick()
{
SpreadList.Add(Symbol.Spread);
if (SpreadList.Count() >= 5)
{
SpreadList.RemoveAt(0);
if (Symbol.Spread < SpreadList.Average())
Print("Current Spread: " + (Symbol.Spread / Symbol.PipSize) + " | Average Spread: " + (SpreadList.Average() / Symbol.PipSize) + " | Status: Better Than Average");
else
Print("Current Spread: " + (Symbol.Spread / Symbol.PipSize) + " | Average Spread: " + (SpreadList.Average() / Symbol.PipSize) + " | Status: Worse Than Average");
}
else
Print("More Data Needed...");
}
protected override void OnStop()
{
}
}
}
This does not work:
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Internals;
using System.Collections.Generic;
namespace cAlgo.Robots
{
[Robot()]
public class RobotExample : Robot
{
string[] pPairs = new string[]
{
"EURUSD",
"GBPUSD",
"USDJPY",
"AUDUSD",
"EURJPY"
};
List> SpreadList = new List>();
protected override void OnStart()
{
}
protected override void OnTick()
{
foreach (var p in pPairs)
{
Symbol sSymbol = MarketData.GetSymbol(p);
SpreadList.Insert(0, new KeyValuePair(p, sSymbol.Spread));
if ((SpreadList.Count() / pPairs.Count()) >= 5)
{
SpreadList.RemoveAt(0);
// Print(sSymbol.Code + " | Current Spread: " + (sSymbol.Spread / sSymbol.PipSize) + " | Average Spread: " + SpreadList.FindAll(sSymbol.Code).Average() / sSymbol.PipSize );
}
else Print("More Data Needed...");
}
}
protected override void OnStop()
{
}
}
}
The problem is with this:
SpreadList.FindAll(sSymbol.Code).Average()

let me implement it for you