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 NodaTime; namespace QuantConnect { /// <summary> /// Daily Fx demonstration to call on and use the FXCM Calendar API /// </summary> public class FxDaily : QCAlgorithm { Dictionary<Symbol, StandardDeviation> Vol= new Dictionary<Symbol, StandardDeviation>() ; string[] _tickers = { "EURUSD", "USDJPY", "USDCHF", "GBPUSD", "USDCAD", "AUDUSD"}; List<Symbol> _symbols = new List<Symbol>(); public int signal = 0; /// <summary> /// Add the Daily FX type to our algorithm and use its events. /// </summary> public override void Initialize() { SetStartDate(2016, 1, 1); //Set Start Date SetEndDate(2017, 3, 30); //Set End Date SetCash(100000); //Set Strategy Cash AddData<DailyFx>("DFX", Resolution.Minute, DateTimeZone.Utc); foreach (var ticker in _tickers) { _symbols.Add(AddForex(ticker, market: Market.Oanda).Symbol); var symbol = _symbols.Last(); Vol[symbol]= STD(symbol, 24, Resolution.Hour); } SetBrokerageModel(BrokerageName.OandaBrokerage); } public override void OnData(Slice slice) { // RiskManager.UpdateTrailingStopOrders(); } /// <summary> /// Trigger an event on a complete calendar event which has an actual value. /// </summary> public void OnData(DailyFx calendar) { // We only want to trade the news of all others currencies against USD. if (calendar.Currency.ToUpper() == "USD") return; // The algorithm only uses meaningful and important news/announcements. if (calendar.Importance == FxDailyImportance.High && calendar.Meaning != FxDailyMeaning.None) { foreach (var symbol in _symbols) { var fxPair = (Forex)Securities[symbol]; // Check if the new/announcement affects the Base or the Quote of the actual pair. var isBaseCurrency = fxPair.BaseCurrencySymbol == calendar.Currency.ToUpper(); var isQuoteCurrency = fxPair.QuoteCurrency.Symbol == calendar.Currency.ToUpper(); if (calendar.Meaning == FxDailyMeaning.Better && isBaseCurrency || calendar.Meaning == FxDailyMeaning.Worse && isQuoteCurrency) { var date = Time ; signal += 1; Log(signal.ToString()+ "\n" + date.ToString() + "\n" + symbol.ToString() + "\n" + calendar.Meaning.ToString()); Log(Vol[symbol].ToString()); } if (calendar.Meaning == FxDailyMeaning.Worse && isBaseCurrency || calendar.Meaning == FxDailyMeaning.Better && isQuoteCurrency) { var date = Time ; signal += 1; Log(signal.ToString()+ "\n" + date.ToString() + "\n" + symbol.ToString() + "\n" + calendar.Meaning.ToString()); Log(Vol[symbol].ToString()); } } } } } }