| 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;
using RestSharp;
namespace QuantConnect.Algorithm.CSharp
{
public class HorizontalQuantumRegulators : QCAlgorithm
{
private int counter = 0;
private string symbol = "EURUSD";
public override void Initialize()
{
SetTimeZone("Europe/London");
//SetTimeZone(NodaTime.DateTimeZone.Utc);
SetStartDate(2019, 4, 7); //Set Start Date
SetStartDate(2019, 4, 8);
SetCash(100000); //Set Strategy Cash
AddSecurity(SecurityType.Forex, symbol, Resolution.Minute, Market.Oanda, true, 100, false);
}
private string _url = "https://api-fxtrade.oanda.com/v3/instruments/{0}/candles?price={1}&from={2}&count=1&granularity={3}";
public void OnData(QuoteBars data)
{
if(counter++>200)
{
return;
}
string r = "M1";
string filename = "";
string _price = "BA";
string s = symbol.Insert(symbol.Length - 3, "_");
DateTime todate = data[symbol].Time.ToUniversalTime().AddDays(1d);
DateTime fromdate = UtcTime; //.AddHours(-2l);
//var url = string.Format(_url, s, _price, ToUnixTimestamp(data[symbol].Time.ToUniversalTime()), r); //ToUnixTimestamp(todate), r);
var url = string.Format(_url, s, _price, ToUnixTimestamp(fromdate), r); //ToUnixTimestamp(todate), r);
string token = null;
if(token==null)
{
Log("you must set the oanda token");
return;
}
RestClient client = new RestClient();
var auth = "Bearer " + token;
client.Timeout = 120000;
client.BaseUrl = new Uri(url);
var request = new RestRequest();
request.AddHeader("content-type", "application/json");
request.AddHeader("Authorization", auth);
IRestResponse response = client.Execute(request);
//Instrument.FromJson(response.Content);
try
{
Instrument ins = Instrument.FromJson(response.Content);
foreach (Candle candle in ins.Candles)
{
// = candle.Time.ConvertFromUtc(config.ExchangeTimeZone);
// brokerVolume.Volume = candle.Volume;
Log(string.Format("oanda {0} UTC {1} Exchange {2}", candle.Ask.C, candle.Time, candle.Time.ConvertFromUtc(Portfolio.Securities[symbol].Exchange.TimeZone)));
}
}
catch(Exception)
{
Log(response.Content);
counter = 1000000;
}
Log(string.Format("leandata {0} UTC {1} Exchange {2}", data[symbol].Ask.Close, data[symbol].Time.ConvertToUtc(Portfolio.Securities[symbol].Exchange.TimeZone), data[symbol].Time));
Log(string.Format("time {0} Unix {1} FakeUTC {2} UTC {3}", Time, ToUnixTimestamp(Time), Time.ToUniversalTime(), UtcTime));
System.Threading.Thread.Sleep(200);
//Log(string.Format("data {0} {1}", data[symbol].Ask.Close, data[symbol].Time.ToUniversalTime()));
}
private int ToUnixTimestamp(DateTime dateTime)
{
return (int)(TimeZoneInfo.ConvertTimeToUtc(dateTime) -
new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc)).TotalSeconds;
}
}
}namespace QuantConnect.Algorithm.CSharp
{
using System;
using System.Net;
using System.Collections.Generic;
using Newtonsoft.Json;
public partial class Instrument
{
[JsonProperty("instrument")]
public string PurpleInstrument { get; set; }
[JsonProperty("granularity")]
public string Granularity { get; set; }
[JsonProperty("candles")]
public Candle[] Candles { get; set; }
}
public partial class Candle
{
[JsonProperty("complete")]
public bool Complete { get; set; }
[JsonProperty("volume")]
public long Volume { get; set; }
[JsonProperty("time")]
public DateTime Time { get; set; }
[JsonProperty("bid")]
public Ask Bid { get; set; }
[JsonProperty("ask")]
public Ask Ask { get; set; }
}
public partial class Ask
{
[JsonProperty("o")]
public string O { get; set; }
[JsonProperty("h")]
public string H { get; set; }
[JsonProperty("l")]
public string L { get; set; }
[JsonProperty("c")]
public string C { get; set; }
}
public partial class Instrument
{
public static Instrument FromJson(string json) => JsonConvert.DeserializeObject<Instrument>(json, Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Instrument self) => JsonConvert.SerializeObject(self, Converter.Settings);
}
public class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
};
}
}