Overall Statistics |
Total Trades 2 Average Win 0.79% Average Loss 0% Compounding Annual Return 25.273% Drawdown 2.500% Expectancy 0 Net Profit 0.785% Sharpe Ratio 1.501 Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 1.809 Beta -85.846 Annual Standard Deviation 0.153 Annual Variance 0.023 Information Ratio 1.376 Tracking Error 0.153 Treynor Ratio -0.003 Total Fees $2.00 |
using System; using QuantConnect.Algorithm; using QuantConnect.Brokerages; using QuantConnect.Data.Market; using QuantConnect.Orders; namespace QuantConnect { public class OrderSubmitHelp : QCAlgorithm { //One cancels the other private OrderTicket EntryOrder { get; set; } public override void Initialize() { SetStartDate(2013, 10, 04); SetEndDate(2013, 10, 16); SetCash(10000); SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Cash); //Default add SPY AddSecurity(SecurityType.Equity, "SPY", Resolution.Minute); AddSecurity(SecurityType.Equity, "NVEE", Resolution.Minute); } //One cancels the other public override void OnOrderEvent(OrderEvent orderEvent) { Order actualOrder = Transactions.GetOrderById(orderEvent.OrderId); switch (orderEvent.Status) { case OrderStatus.Submitted: Log(actualOrder.ToString()); break; case OrderStatus.Filled: Log("\t => " + orderEvent.ToString()); if (actualOrder.Type != OrderType.Market) { Liquidate(orderEvent.Symbol); } //Liquidate(orderEvent.Symbol); break; case OrderStatus.Canceled: Log("\t => " + orderEvent.ToString() + "\n"); break; default: break; } } public void OnData(TradeBars data) { if (data.Time.Date == new DateTime(2013,10,04) && Portfolio.Invested==false) { var orderQuantity = CalculateOrderQuantity("SPY", 0.98); //Easy position size Log("Equity Unused = " + Portfolio.Cash + "Margin Remaining = " + Portfolio.MarginRemaining); Log("Portfolio Holdings = " + Portfolio.TotalHoldingsValue + " Portfolio Invested = " + Portfolio.Invested); Log("Buying Power Short = " + Portfolio.GetBuyingPower("SPY", OrderDirection.Sell)); Log("Buying Power Long = " + Portfolio.GetBuyingPower("SPY", OrderDirection.Buy)); //One cancels the other order MarketOrder("SPY", orderQuantity, false, "Entry " + "SPY"); LimitOrder("SPY", orderQuantity, Securities["SPY"].Price * 1.5m, "Take Profit: " + "SPY"); StopMarketOrder("SPY", -orderQuantity, Securities["SPY"].Price * 0.5m, "Stop Loss: " + "SPY"); } if (data.Time.Date == new DateTime(2013, 10, 14) && data.Time.TimeOfDay == new TimeSpan(09, 31, 0)) { Liquidate(); var orderQuantity = CalculateOrderQuantity("NVEE", 0.98); //Easy position size Log("Equity Unused = " + Portfolio.Cash + "Margin Remaining = " + Portfolio.MarginRemaining); Log("Portfolio Holdings = " + Portfolio.TotalHoldingsValue + " Portfolio Invested = " + Portfolio.Invested); Log("Buying Power Short = " + Portfolio.GetBuyingPower("NVEE", OrderDirection.Sell)); Log("Buying Power Long = " + Portfolio.GetBuyingPower("NVEE", OrderDirection.Buy)); //One cancels the other order MarketOrder("NVEE", -orderQuantity, false, "Entry " + "NVEE"); LimitOrder("NVEE", orderQuantity, Securities["NVEE"].Price * 0.5m, "Take Profit: " + "NVEE"); StopMarketOrder("NVEE", orderQuantity, Securities["NVEE"].Price * 1.5m, "Stop Loss: " + "NVEE"); } } } }