Overall Statistics |
Total Trades 447 Average Win 0.00% Average Loss 0.00% Compounding Annual Return 0.000% Drawdown 0.000% Expectancy 0.000 Net Profit 0.000% Sharpe Ratio -0.069 Loss Rate 45% Win Rate 55% Profit-Loss Ratio 0.81 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -49.182 Tracking Error 0 Treynor Ratio 0.007 Total Fees $0.00 |
namespace QuantConnect { public class BasicTemplateAlgorithm : QCAlgorithm { private Symbol _symbol; private RelativeStrengthIndex _rsi; private const decimal limitDiff = 0.0046m; private const decimal stoptDiff = 0.0050m; public override void Initialize() { SetStartDate(2017,1,1); SetEndDate(2018,12,20); SetCash(100000); SetBrokerageModel(BrokerageName.OandaBrokerage); _symbol = AddForex("EURUSD", Resolution.Hour, Market.Oanda).Symbol; _rsi = RSI(_symbol, 14, MovingAverageType.Wilders, Resolution.Hour); var properties = Securities[_symbol].SymbolProperties; var lotSize = properties.LotSize; var order = properties.ContractMultiplier; var orderQuantity = 20180.12m; Debug($"the order size is {Math.Round(orderQuantity/lotSize)*lotSize} for lot size of {lotSize}"); } public override void OnData(Slice data) { if (Portfolio.Invested || !_rsi.IsReady) { return; } var price = data[_symbol].Close; //Log($"{Time} :: RSI: {_rsi}. Price: {price}"); if (_rsi <= 30 && _rsi >= 25) { var marketOrder = MarketOrder(_symbol, 1, false); Log($"{marketOrder}"); LimitOrder(_symbol, -1, price + limitDiff); StopMarketOrder(_symbol, -1, price - stoptDiff); } if (_rsi >= 70 && _rsi <= 75) { var marketOrder = MarketOrder(_symbol, -1, false); Log($"{marketOrder}"); LimitOrder(_symbol, 1, price - limitDiff); StopMarketOrder(_symbol, 1, price + stoptDiff); } } public override void OnOrderEvent(OrderEvent orderEvent) { if (orderEvent.Status != OrderStatus.Filled) { return; } var order = Transactions.GetOrderById(orderEvent.OrderId); if (order.Type == OrderType.Market) { Log($"{order}"); return; } Transactions.CancelOpenOrders(_symbol); } } }