| 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 |
namespace QuantConnect.Algorithm.CSharp
{
public class ConsolidatorTest : QCAlgorithm
{
private Symbol _symbol = QuantConnect.Symbol.Create("EURUSD", SecurityType.Forex, Market.Oanda);
public override void Initialize()
{
SetStartDate(2019, 01, 01); //Set Start Date
SetEndDate(2019, 02, 03); //Set End Date
SetCash(100000); //Set Strategy Cash
AddForex(_symbol, Resolution.Minute);
// var nyCloseConsolidator = new QuoteBarConsolidator(TimeSpan.FromDays(1)); //this builds but isn't what I want
var nyCloseConsolidator = new QuoteBarConsolidator(TimeSpan.FromHours(1)); //this builds but isn't what I want
// var nyCloseConsolidator = new NYCloseQuoteBarConsolidator(); // doesn't build with the custom consolidator below
nyCloseConsolidator.DataConsolidated += OnNYClose;
SubscriptionManager.AddConsolidator(_symbol, nyCloseConsolidator);
}
public override void OnData(Slice data)
{
}
public void OnNYClose(object sender, QuoteBar bar)
{
Log(bar.Bid.Close.ToString("0.00000"));
}
}
class NYCloseQuoteBarConsolidator : DataConsolidator<QuoteBar>
{
private QuoteBar _consolidatedBar;
public override Type OutputType
{
get { return typeof (QuoteBar);}
}
public override IBaseData WorkingData
{
get { return (_consolidatedBar);} // ??? Is this right?
}
public override void Update(QuoteBar bar)
{
if (bar.Time.TimeOfDay.TotalHours == 17) // NY close
{
OnDataConsolidated(_consolidatedBar);
_consolidatedBar = new QuoteBar()
{
Time = bar.Time
};
}
else
{
_consolidatedBar.Update(bar.Close, bar.Bid.Close, bar.Ask.Close, 0.0m, bar.LastBidSize, bar.LastAskSize);
}
}
public override void Scan(DateTime time)
{
// ??? what should I do here?
}
}
}