| 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.Globalization;
namespace QuantConnect {
/*
* QuantConnect University: Generic data import for Quandl data
*/
public class QuandlReader : BaseData
{
public decimal Open = 0;
public decimal High = 0;
public decimal Low = 0;
public decimal Close = 0;
// public decimal AdjustedClose = 0;
// public decimal Volume = 0;
public QuandlReader()
{
this.Symbol = "";
}
/// <summary>
/// Return the URL external source for the data: QuantConnect will download it an read it line by line automatically:
/// </summary>
public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLive)
{
this.Symbol = config.Symbol;
var startDate = new DateTime(2000, 1, 1).ToString("yyyy-MM-dd");
var endDate = DateTime.Now.ToString("yyyy-MM-dd");
return new SubscriptionDataSource("https://www.quandl.com/api/v1/datasets/" + config.Symbol + ".csv?trim_start=" + startDate + "&trim_end=" + endDate + "&sort_order=asc&exclude_headers=true", SubscriptionTransportMedium.RemoteFile);
}
public override BaseData Clone()
{
QuandlReader coin = new QuandlReader();
coin.Close = this.Close;
coin.High = this.High;
coin.Low = this.Low;
coin.Open = this.Open;
coin.Symbol = this.Symbol;
coin.Value = this.Close;
coin.Time = this.Time;
return coin;
}
/// <summary>
/// Convert each line of the file above into an object.
/// </summary>
public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLive)
{
QuandlReader bar = new QuandlReader();
try
{
string[] data = line.Split(',');
//Required.
bar.Symbol = config.Symbol;
bar.Time = DateTime.ParseExact(data[0], "yyyy-MM-dd", CultureInfo.InvariantCulture);
//User configured / optional data on each bar:
bar.Open = Convert.ToDecimal(data[1]);
bar.High = Convert.ToDecimal(data[2]);
bar.Low = Convert.ToDecimal(data[3]);
bar.Close = Convert.ToDecimal(data[4]);
// bar.Volume = Convert.ToDecimal(data[5]); // We don't need volume
// bar.AdjustedClose = Convert.ToDecimal(data[6]); // We don't need adjusted close
//This is the value the engine uses for portfolio calculations
bar.Value = bar.Close;
// bar.Value = bar.AdjustedClose; // I want to the close, not adjusted close.
}
catch {
/* Do nothing, skip first title row */
}
return bar;
}
}
}using System;
using System.Collections;
using System.Collections.Generic;
using QuantConnect.Securities;
using QuantConnect.Models;
namespace QuantConnect
{
/*
* QuantConnect University: Importing Custom Yahoo / Google Data:
*
* Quandl.com is a library and API wrapper for many data sources which makes
* sorting and reading the data easier.
*/
public class CustomDataYahooQuandl : QCAlgorithm
{
public static string indicatorOne = "YAHOO/VIX";
public static string indicatorTwo = "GOOG/NYSE_TKC";
public bool first = true;
//Initialize the data and resolution you require for your strategy:
/// <summary>
/// Setup the algorithm data, cash, job start end date etc:
/// </summary>
public override void Initialize()
{
SetStartDate(2000, 1, 1);
SetEndDate(DateTime.Now);
SetCash(25000);
//Quandl Indexes
AddData<QuandlReader>(indicatorOne, Resolution.Daily);
AddData<QuandlReader>(indicatorTwo, Resolution.Daily);
}
public void OnData(QuandlReader data)
{
if (!Portfolio.Invested && data.Value > 0 && data.Symbol == indicatorOne)
{
var quantity = (int) (Portfolio.Cash / data.Value);
Order("INDEX_VIX", quantity);
}
}
/// <summary>
/// QC-TradeBars Data Event Handler: Not used in this strategy:
/// </summary>
public void OnData(TradeBars data)
{
}
}
}