| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 4.869% Drawdown 6.800% Expectancy 0 Net Profit 4.869% Sharpe Ratio 0.57 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.214 Beta -10.695 Annual Standard Deviation 0.072 Annual Variance 0.005 Information Ratio 0.345 Tracking Error 0.072 Treynor Ratio -0.004 Total Fees $0.00 |
namespace QuantConnect
{
/*
* QuantConnect University: Full Basic Template:
*
* The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
* We have explained some of these here, but the full algorithm can be found at:
* https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
*/
public class BasicTemplateAlgorithm : QCAlgorithm
{
public ExponentialMovingAverage Fast;
public ExponentialMovingAverage Slow;
//Initialize the data and resolution you require for your strategy:
public override void Initialize()
{
SetStartDate(2013, 01, 01);
SetEndDate(2014, 01, 01);
//Cash allocation
SetCash(25000);
//Add as many securities as you like. All the data will be passed into the event handler:
AddSecurity(SecurityType.Forex, "EURUSD", Resolution.Minute);
Fast = EMA("EURUSD", 50);
Slow = EMA("EURUSD", 200);
// we can 'warm up' our indicators using the history function directly
var history = History<QuoteBar>("EURUSD", 250);
foreach (var tradeBar in history)
{
Fast.Update(tradeBar.EndTime, tradeBar.Close);
Slow.Update(tradeBar.EndTime, tradeBar.Close);
}
// we can also warm up these indicators using the SetWarmup function
// SetWarmup will pump data through the entire algorithm, including OnData
// whereas the History function is handled by user code
//SetWarmup(250); // ask for 250 bars of warmup at registered resolution
//SetWarmup(TimeSpan.FromDays(3)); // ask for 3 calendar days of warmup
// these are calendar days, so beware of weekends
}
//Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
public void OnData(TradeBars data)
{
if (IsWarmingUp) return;
if (!Portfolio.HoldStock)
{
if (Fast.IsReady && Slow.IsReady)
{
Debug("Indicators are ready!");
}
int quantity = (int)Math.Floor(Portfolio.Cash / data["EURUSD"].Close);
Order("EURUSD", quantity);
Debug("Purchased EURUSD on " + Time.ToShortDateString());
}
}
}
}