| 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
{
string pair = "GBPUSD";
TimeZoneInfo USlocalZone = TimeZoneInfo.FindSystemTimeZoneById("US/Eastern");
TimeZoneInfo UKlocalZone = TimeZoneInfo.FindSystemTimeZoneById("Europe/London");
Dictionary<string, CustomHourlyConsolidator> hourly_consolidator_dict = new Dictionary<string, CustomHourlyConsolidator>();
public override void Initialize()
{
SetStartDate(2018, 3, 4);
SetEndDate(2018, 3, 30);
SetCash(100000);
AddForex(pair, Resolution.Second, Market.FXCM);
var hourlyConsolidator = new CustomHourlyConsolidator();
hourly_consolidator_dict[pair] = hourlyConsolidator;
hourly_consolidator_dict[pair].DataConsolidated += HourlyBarHandler;
SubscriptionManager.AddConsolidator(pair, hourly_consolidator_dict[pair]);
Chart chart = new Chart("chart");
chart.AddSeries(new Series("no DST", SeriesType.Scatter, "", Color.Blue));
chart.AddSeries(new Series("NY DST", SeriesType.Scatter, "", Color.Green));
chart.AddSeries(new Series("both DST", SeriesType.Scatter, "", Color.Red));
AddChart(chart);
}
public override void OnData(Slice data)
{
}
public void HourlyBarHandler(object sender, QuoteBar consolidated)
{
DateTime f = consolidated.Time;
DateTime f2 = TimeZoneInfo.ConvertTime(f, USlocalZone);
DateTime f3 = TimeZoneInfo.ConvertTime(f, UKlocalZone);
if (consolidated.Time.Hour == 1)
{
Log("3 am");
if (!USlocalZone.IsDaylightSavingTime(f2)
&& !UKlocalZone.IsDaylightSavingTime(f3))
Plot("chart", "no DST", consolidated.Value);
if (USlocalZone.IsDaylightSavingTime(f2)
&& !UKlocalZone.IsDaylightSavingTime(f3))
Plot("chart", "NY DST", consolidated.Value);
if (USlocalZone.IsDaylightSavingTime(f2)
&& UKlocalZone.IsDaylightSavingTime(f3))
Plot("chart", "both DST", consolidated.Value);
}
}
}
public class CustomHourlyConsolidator : QuoteBarConsolidator
{
private QuoteBar _consolidatedBar;
private static Int32 integ;
public CustomHourlyConsolidator() : base(integ)
{
_consolidatedBar = new QuoteBar();
}
public override Type OutputType
{
get { return typeof (QuoteBar); }
}
public override void Update(QuoteBar data)
{
if (data == null)
return;
if (data.Time.Minute == 59 && data.Time.Second == 59)
{
_consolidatedBar.Update(data.Close, data.Bid.Close, data.Ask.Close, 0, data.LastBidSize, data.LastAskSize);
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);
}
}
}