| Overall Statistics |
|
Total Trades 2506 Average Win 0.29% Average Loss -0.32% Compounding Annual Return -10.580% Drawdown 43.600% Expectancy -0.138 Net Profit -42.863% Sharpe Ratio -1.398 Probabilistic Sharpe Ratio 0.000% Loss Rate 55% Win Rate 45% Profit-Loss Ratio 0.91 Alpha -0.088 Beta 0.19 Annual Standard Deviation 0.061 Annual Variance 0.004 Information Ratio -1.255 Tracking Error 0.08 Treynor Ratio -0.448 Total Fees $6128.00 Estimated Strategy Capacity $12000000.00 Lowest Capacity Asset EURUSD 5O |
namespace QuantConnect
{
public class BootCampTask : QCAlgorithm
{
Minimum lowBeforeOpen;
Maximum highBeforeOpen;
public override void Initialize()
{
SetStartDate(2016, 6, 1);
SetEndDate(2021, 6, 1);
SetCash(100000);
AddEquity("SPY", Resolution.Minute);
AddForex("EURUSD", Resolution.Minute, Market.FXCM);
Schedule.On(DateRules.EveryDay("SPY"), TimeRules.AfterMarketOpen("SPY", 0), MarketOpen);
Schedule.On(DateRules.EveryDay("SPY"), TimeRules.BeforeMarketClose("SPY", 5), ClosePosition);
SetTimeZone(TimeZones.NewYork);
SetBrokerageModel(BrokerageName.FxcmBrokerage);
}
public override void OnData(Slice data)
{
if (lowBeforeOpen == null || highBeforeOpen == null) return;
if (Time.Hour >= 10 || Time.Minute < 31) return;
if (data.ContainsKey("EURUSD") && !Portfolio.Invested)
{
decimal currentPrice = data["EURUSD"].Close;
if (currentPrice > highBeforeOpen)
{
SetHoldings("EURUSD", 1);
}
else if (currentPrice < lowBeforeOpen)
{
SetHoldings("EURUSD", -1);
}
}
}
public void MarketOpen()
{
lowBeforeOpen = new Minimum(15);
highBeforeOpen = new Maximum(15);
var history = History<QuoteBar>("EURUSD", 15, Resolution.Minute);
foreach (var quoteBar in history)
{
lowBeforeOpen.Update(quoteBar.Time, quoteBar.Low);
highBeforeOpen.Update(quoteBar.Time, quoteBar.High);
}
}
public void ClosePosition()
{
Liquidate("EURUSD");
}
}
}