Overall Statistics |
Total Trades 19 Average Win 0.00% Average Loss -0.01% Compounding Annual Return -0.153% Drawdown 0.100% Expectancy -0.567 Net Profit -0.050% Sharpe Ratio -3.327 Loss Rate 67% Win Rate 33% Profit-Loss Ratio 0.30 Alpha -0.002 Beta 0.002 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -3.334 Tracking Error 0.107 Treynor Ratio -0.735 Total Fees $19.00 |
namespace QuantConnect { public partial class QCUMartingalePositionSizing : QCAlgorithm { int iPeriod = 15; //decimal iTP = 0.02m; //decimal iSL = 0.02m; decimal iLeverage = 4m; decimal iVolume = 1m; string iSymbol = "MSFT"; RelativeStrengthIndex iRsi = null; Dictionary<int, Order> iOrders = new Dictionary<int, Order>(); public override void Initialize() { var resolution = Resolution.Minute; SetCash(25000); SetStartDate(2017, 1, 1); SetEndDate(2017, 5, 1); SetBenchmark(iSymbol); SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage); AddSecurity(SecurityType.Equity, iSymbol, resolution, true, iLeverage, false); iRsi = RSI(iSymbol, iPeriod, MovingAverageType.Simple, resolution); } public void OnData(TradeBars data) { var price = data[iSymbol].Close; if (Portfolio.Invested == false) { MarketOrder(iSymbol, iVolume); LimitOrder(iSymbol, -iVolume, price + 3); StopMarketOrder(iSymbol, -iVolume, price - 1); return; } /* if (Portfolio.TotalUnrealisedProfit) { ScanForExit(SPY); return; } */ } public override void OnOrderEvent(OrderEvent orderEvent) { iOrders[orderEvent.OrderId] = Transactions.GetOrderById(orderEvent.OrderId); } /* public void ScanForEntry(TradeBar SPY) { //Once we have enough data, start the Entry detection. if (rsi.Ready) { if (rsi.RSI > 70) { magnitudeDirection = -0.2m; SetHoldings(symbol, -magnitudeDirection); //Over bought Log("Entry-Short: " + magnitudeDirection + " Holdings: " + Portfolio[symbol].Quantity); } else if (rsi.RSI < 30) { magnitudeDirection = 0.2m; SetHoldings(symbol, magnitudeDirection); //Over sold Log("Entry-Long: " + magnitudeDirection + " Holdings: " + Portfolio[symbol].Quantity); } } } public void ScanForExit(TradeBar SPY) { Log("Exit: " + magnitudeDirection + " Realized Profit/Loss: " + UnrealizedTradeStringProfit.ToString("C")); Liquidate(); tradeStringProfit = 0; magnitudeDirection = 0.2m; exitDate = Time.Date; return; } */ } }