| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
using System.Drawing;
namespace QuantConnect.Algorithm.CSharp
{
public class BasicTemplateAlgorithm : QCAlgorithm
{
public override void Initialize()
{
SetStartDate(2018, 9, 17); //Set Start Date
SetEndDate(DateTime.Now); //Set End Date
SetCash(100000); //Set Strategy Cash
AddForex("GBPAUD", Resolution.Minute);
var myConsolidator = new CustomConsolidator();
myConsolidator.DataConsolidated += OnDataConsolidated;
SubscriptionManager.AddConsolidator("GBPAUD", myConsolidator);
foreach (var data in History<QuoteBar>("GBPAUD", TimeSpan.FromDays(7)))
{
myConsolidator.Update(data);
}
var chart = new Chart("Plot");
var series = new Series("GBPAUD", SeriesType.Line, "Close", Color.Red);
chart.AddSeries(series);
}
public void OnDataConsolidated(object sender, QuoteBar consolidated)
{
if (consolidated != null)
Plot("Plot", "GBPAUD", consolidated.Value);
}
public override void OnData(Slice data)
{
}
}
public class CustomConsolidator : QuoteBarConsolidator
{
private QuoteBar _consolidatedBar;
private static Int32 integ;
private TimeSpan endOfDay;
public CustomConsolidator() : base(integ)
{
_consolidatedBar = new QuoteBar();
endOfDay = new TimeSpan(16, 59, 0);
}
public override Type OutputType
{
get { return typeof (QuoteBar); }
}
public override void Update(QuoteBar data)
{
if (data == null)
return;
if (data != null)
{
var now = data.Time.TimeOfDay;
if (now == endOfDay)
{
OnDataConsolidated(_consolidatedBar);
_consolidatedBar = new QuoteBar
{
Time = data.Time,
Symbol = data.Symbol
};
}
else
{
_consolidatedBar.Update(data.Close, data.Bid.Close, data.Ask.Close, 0, data.LastBidSize, data.LastAskSize);
}
}
}
}
}