| 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 Probabilistic 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.403 Tracking Error 0.162 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ApiResponseModels
{
public sealed class BarsResponse
{
[JsonProperty("results")]
public List<BarResults>? Results { get; set; }
[JsonProperty("error")]
private String? error = null;
public string? Error { get => error; set => error = value; }
}
}using Newtonsoft.Json;
using System;
namespace ApiResponseModels
{
public sealed class BarResults
{
[JsonProperty("o")]
public readonly double Open;
[JsonProperty("c")]
public readonly double Close;
[JsonProperty("h")]
public readonly double High;
[JsonProperty("l")]
public readonly double Low;
[JsonProperty("t")]
public readonly long TimeUnix;
[JsonProperty("v")]
public readonly long Volume;
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
}
#region imports
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Globalization;
using System.Drawing;
using QuantConnect;
using QuantConnect.Algorithm.Framework;
using QuantConnect.Algorithm.Framework.Selection;
using QuantConnect.Algorithm.Framework.Alphas;
using QuantConnect.Algorithm.Framework.Portfolio;
using QuantConnect.Algorithm.Framework.Execution;
using QuantConnect.Algorithm.Framework.Risk;
using QuantConnect.Parameters;
using QuantConnect.Benchmarks;
using QuantConnect.Brokerages;
using QuantConnect.Util;
using QuantConnect.Interfaces;
using QuantConnect.Algorithm;
using QuantConnect.Indicators;
using QuantConnect.Data;
using QuantConnect.Data.Consolidators;
using QuantConnect.Data.Custom;
using QuantConnect.DataSource;
using QuantConnect.Data.Fundamental;
using QuantConnect.Data.Market;
using QuantConnect.Data.UniverseSelection;
using QuantConnect.Notifications;
using QuantConnect.Orders;
using QuantConnect.Orders.Fees;
using QuantConnect.Orders.Fills;
using QuantConnect.Orders.Slippage;
using QuantConnect.Scheduling;
using QuantConnect.Securities;
using QuantConnect.Securities.Equity;
using QuantConnect.Securities.Future;
using QuantConnect.Securities.Option;
using QuantConnect.Securities.Forex;
using QuantConnect.Securities.Crypto;
using QuantConnect.Securities.Interfaces;
using QuantConnect.Storage;
using QuantConnect.Data.Custom.AlphaStreams;
using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm;
using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm;
using Newtonsoft.Json;
using ApiResponseModels;
#endregion
namespace QuantConnect.Algorithm.CSharp
{
public class MuscularAsparagusSheep : QCAlgorithm
{
public override void Initialize()
{
var symbol = "TSLA";
var stockPrices = GetStockPrices(symbol, "2022-08-22", "2022-08-30");
foreach (var item in stockPrices.Results)
{
Debug($" {symbol} StarDate: {item.StartDate.Date} EndDate:{item.EndDate.Date} O:{item.Open} H:{item.High} L:{item.Low} C:{item.Close} ");
}
}
public BarsResponse GetStockPrices(string symbol,string startDate, string EndDate, bool splittAdjusted = false) //DT format : 2021-07-22
{
string APIKey = "wxGOlGP5bZW4I3MBgowKgqm5bGKdq4p6";//This API KEY no longer valid, Enter your own KEY.
try
{
string endPoint = $"https://api.polygon.io/v2/aggs/ticker/{symbol}/range/1/day/{startDate}/{EndDate}?adjusted={splittAdjusted}&sort=asc&limit=120&apiKey={APIKey}"; //get async and read asstring async
string responseString = Download(endPoint);
Debug(responseString);
var jsonResponse = JsonConvert.DeserializeObject<BarsResponse>(responseString);//deserialize into objects
//Deference JsonResponse null values
for (int i = 0; i < jsonResponse.Results.Count; i++)
{
if (jsonResponse.Results[i] != null)
{
jsonResponse.Results[i].StartDate = UnixTimeStampToDateTime(jsonResponse.Results[i].TimeUnix);
jsonResponse.Results[i].EndDate = jsonResponse.Results[i].StartDate.AddDays(1);
}
}
return jsonResponse;
}
catch (Exception e)
{
Debug(e.ToString());
return new BarsResponse()
{
Error = "Error catched"
};
}
}
public static DateTime UnixTimeStampToDateTime(long unixTimeStamp)
{
// Unix timestamp is seconds past epoch
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dateTime = dateTime.AddMilliseconds(unixTimeStamp).ToLocalTime();
return dateTime;
}
}
}