| 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;
namespace QuantConnect.Algorithm.CSharp
{
/// <summary>
/// Basic template algorithm simply initializes the date range and cash. This is a skeleton
/// framework you can use for designing an algorithm.
/// </summary>
public class BasicTemplateAlgorithm : QCAlgorithm
{
private int barcount = 0;
private decimal barclose = 0;
private decimal barlow = 0;
private decimal barhigh = 0;
private decimal barlowest = (decimal)999999.0;
private decimal barhighest = (decimal)0.0;
private decimal HH1 = 0;
private decimal HH2 = 0;
private decimal LL1 = 0;
private decimal LL2 = 0;
private bool is_high = true;
private bool is_low = false;
private int HLbarcount = 0;
DateTime barlowestDateTime;
DateTime barhighestDateTime;
private RollingWindow<TradeBar> Bars ;
// TimeSeries HL;
TradeBars prices = new TradeBars();
private String symbol = "EURUSD";
public override void Initialize()
{
SetStartDate(2017, 10, 3);
SetEndDate(2017, 10, 5);
AddSecurity(SecurityType.Forex, "EURUSD", resolution: Resolution.Minute);
var chart = new Chart("Plotter");
chart.AddSeries(new Series("HH",SeriesType.Line));
chart.AddSeries(new Series(symbol+"H",SeriesType.Line));
chart.AddSeries(new Series(symbol+"L",SeriesType.Line));
AddChart(chart);
Bars = new RollingWindow<TradeBar>(4);
// PlotIndicator("EURUSD", spyClose, emaFast, emaSlow);
// HL = new TimeSeries("High-Low", Color.White);
// Draw(HL, 0);
}
public void OnData(TradeBars bar)
{
Bars.Add(bar[symbol]);
Plot("Plotter", symbol+"H", bar[symbol].High);
Plot("Plotter", symbol+"L", bar[symbol].Low);
if ((bar[symbol].Close > 0) && (bar[symbol].High > 0) && (bar[symbol].Low > 0) && (bar[symbol].Open > 0))
{
/*
if (Mode != StrategyMode.Simulation)
{
DataManager.Add(Instrument, bar);
}
*/
barcount++;
HLbarcount++;
barclose = bar[symbol].Close;
barhigh = bar[symbol].High;
barlow = bar[symbol].Low;
if (barcount > 1)
{
if ((barlow) < barlowest)
{
barlowest = barlow;
barlowestDateTime = bar[symbol].EndTime;
}
if ((barhigh) > barhighest)
{
barhighest = barhigh;
barhighestDateTime = bar[symbol].EndTime;
}
}
if (Bars.IsReady)
{
if ((HLbarcount > 3) && (is_low) && (Bars[0].High > Bars[3].High) && (Bars[0].Low > Bars[1].Low) && (Bars[0].Low > barlowest))
{
LL2 = LL1;
LL1 = barlowest;
if (LL1 != LL2)
{
is_high = true;
is_low = false;
//prices.Add(symbol, bar[symbol]);
//HL.Add(barlowestDateTime, barlowest);
Plot("Plotter", "HH", barlowest);
barhighest = Math.Max(Math.Max(Math.Max(Bars[0].High,Bars[1].High),Bars[2].High),Bars[3].High);
barhighestDateTime = bar[symbol].EndTime;
HLbarcount = 0;
HH1 = 0;
HH2 = 0;
// Log("{0} LL1 = {1} barhighest = {2}", barlowestDateTime, LL1, barhighest);
}
}
if ((HLbarcount > 3) && (is_high) && (Bars[0].Low < Bars[3].Low)&& (Bars[0].High < Bars[1].High) && (Bars[0].High < barhighest))
{
HH2 = HH1;
HH1 = barhighest;
if (HH1 != HH2)
{
is_low = true;
is_high = false;
// HL.Add(barhighestDateTime, barhighest);
Plot("Plotter", "HH", barhighest);
//barlowest = Bars.LowestLow(4);
barlowest = Math.Min(Math.Min(Math.Min(Bars[0].High,Bars[1].High),Bars[2].High),Bars[3].High);
barlowestDateTime = bar[symbol].EndTime;
HLbarcount = 0;
LL1 = 0;
LL2 = 0;
// Log("{0} HH1 = {1} barlowest = {2}", barhighestDateTime, HH1, barlowest);
}
}
}
}
else
{
// Log("Instrument: {0}, Date/Time: {1}", Instrument, bar.DateTime);
}
}
}
}