| Overall Statistics |
|
Total Trades 1672 Average Win 1.35% Average Loss -1.17% Compounding Annual Return 30.280% Drawdown 25.200% Expectancy 0.093 Net Profit 102.654% Sharpe Ratio 0.807 Loss Rate 49% Win Rate 51% Profit-Loss Ratio 1.15 Alpha 0.264 Beta -1.596 Annual Standard Deviation 0.331 Annual Variance 0.11 Information Ratio 0.713 Tracking Error 0.377 Treynor Ratio -0.167 Total Fees $0.00 |
using System;
using System.Collections.Generic;
using System.Linq;
using NodaTime;
using QuantConnect.Brokerages;
namespace QuantConnect.Algorithm.CSharp.DateTimeEffectAlgo
{
public class DateTimeEffectAlgo : QCAlgorithm
{
/* +-------------------------------------------------+
* |Algorithm Control Panel |
* +-------------------------------------------------+*/
private readonly string[] _pairs = {"EURUSD", "USDJPY"};
private readonly decimal _leverage = 10m;
private readonly decimal _exposure = 0.8m;
/* +-------------------------------------------------+*/
private decimal _shareByPair;
private readonly List<Symbol> _symbols = new List<Symbol>();
public override void Initialize()
{
SetStartDate(year: 2015, month: 01, day: 01); //Set Start Date
SetEndDate(year: 2017, month: 09, day: 01); //Set End Date
SetCash(startingCash: 25000); //Set Strategy Cash
SetBrokerageModel(BrokerageName.OandaBrokerage);
_shareByPair = (_leverage *_exposure ) / _pairs.Length;
// Find more symbols here: http://quantconnect.com/data
foreach (var pair in _pairs)
{
_symbols.Add(AddForex(pair, Resolution.Minute, "OANDA", leverage: _leverage).Symbol);
if (pair == "EURUSD")
{
SetBenchmark(_symbols.Last());
}
}
// EURUSD: Short at GMT 09:15 am, do this on Wednesday, Thursday and Friday...
Schedule.On(DateRules.Every(DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday),
TimeRules.At(hour: 9, minute: 15, timeZone: DateTimeZone.Utc),
() =>
{
SetHoldings("EURUSD", -6);
});
// ... close after 5 hours
Schedule.On(DateRules.EveryDay(), TimeRules.At(14, 15, DateTimeZone.Utc), () =>
{
Liquidate("EURUSD");
});
// USDJPY: Short at GMT 00:15 am, do this all weekdays...
Schedule.On(DateRules.Every(DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday),
TimeRules.At(hour: 0, minute: 15, timeZone: DateTimeZone.Utc),
() =>
{
SetHoldings("USDJPY", -4);
});
// and close after 5 hours
Schedule.On(DateRules.EveryDay(), TimeRules.At(5, 15, DateTimeZone.Utc), () =>
{
Liquidate("UJPY");
});
}
}
}