Overall Statistics |
Total Trades 6001 Average Win 0% Average Loss 0.00% Compounding Annual Return -99.863% Drawdown 12.000% Expectancy -1 Net Profit -12.002% Sharpe Ratio -21.272 Loss Rate 100% Win Rate 0% Profit-Loss Ratio 0 Alpha -3.415 Beta -0.494 Annual Standard Deviation 0.187 Annual Variance 0.035 Information Ratio -19.374 Tracking Error 0.264 Treynor Ratio 8.057 Total Fees $12002.00 |
namespace QuantConnect { public class BasicTemplateAlgorithm : QCAlgorithm { //parameters go here const decimal StopLossPercent = 0.02m; const decimal TakeProfitPercent = 0.04m; Decimal StopLoss = 0.04m; Decimal TakeProfit = 0.065m; private OrderTicket CurrentOrder; int quantity = 10000; decimal price = 0; decimal tolerance = 0m; //0.1% safety margin in prices to avoid bouncing. DateTime sampledToday = DateTime.Now; SimpleMovingAverage smaShort; SimpleMovingAverage smaLong; String symbol = "USDCAD" ; private Identity yesterdayClose; int holdings = 0; //int leverage = 50; Enable for borrowing abilities (max is 50x for fx, 2x? for equities) public override void Initialize() { //AddSecurity(SecurityType.Equity, Symbol, Resolution.Minute); Uncomment this for stocks AddSecurity(SecurityType.Forex, symbol , Resolution.Minute); //Set backtest dates here SetStartDate(2016, 3 , 1); SetEndDate(2016, 3, 18); //Set Backtest cash amount here SetCash(100000); //MA's go here smaShort = SMA(symbol, 5, Resolution.Minute); smaLong = SMA(symbol, 25, Resolution.Minute); // this will get us an indicator that represents our symbol's closing price yesterdayClose = Identity(symbol, Resolution.Minute, Field.Close); } public void OnData(TradeBars data) { // set price based on previous minute bar price = data[symbol].Close; //Algo buying logic below if (holdings <= 0 && smaShort > smaLong && price > smaShort) { CurrentOrder = Order(symbol, quantity); StopLoss = StopMarketOrder(symbol, quantity, price * (1m - StopLossPercent)); TakeProfit = LimitOrder(symbol, quantity, price * (1m + TakeProfitPercent)) ; SetHoldings(symbol, 1.0); } if (holdings > 0 && price <= StopLoss || price >= TakeProfit); { Log("Dumped >> " + Securities[symbol].Price); Liquidate(symbol) ; SetHoldings(symbol, 0.0); } //Debug sends messages to the user console: "Time" is the algorithm time keeper object Debug("Purchased USDCAD on " + Time.ToShortDateString()); //Log("This is a longer message send to log."); } } }