Overall Statistics |
Total Trades 14 Average Win 0% Average Loss -0.01% Compounding Annual Return -0.235% Drawdown 0.100% Expectancy -1 Net Profit -0.078% Sharpe Ratio -5.068 Loss Rate 100% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.002 Beta -0.001 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -3.331 Tracking Error 0.108 Treynor Ratio 2.154 Total Fees $14.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 (CanOpen() == 1) { MarketOrder(iSymbol, iVolume); LimitOrder(iSymbol, -iVolume, price + 1); StopMarketOrder(iSymbol, -iVolume, price - 1); return; } if (CanClose() == 1) { Liquidate(); return; } } public override void OnOrderEvent(OrderEvent orderEvent) { iOrders[orderEvent.OrderId] = Transactions.GetOrderById(orderEvent.OrderId); } public int CanOpen() { if (iRsi.IsReady && Portfolio.Invested == false) { if (iRsi < 70 && iRsi > 50) { return -1; } if (iRsi > 30 && iRsi < 50) { return 1; } } return 0; } public int CanClose() { return 0; } } }