Overall Statistics |
Total Trades 4942 Average Win 0.05% Average Loss -0.32% Compounding Annual Return 4050.671% Drawdown 66.600% Expectancy 0.042 Net Profit 33.654% Sharpe Ratio 2.225 Loss Rate 9% Win Rate 91% Profit-Loss Ratio 0.14 Alpha 6.697 Beta -25.208 Annual Standard Deviation 3.444 Annual Variance 11.859 Information Ratio 2.173 Tracking Error 3.543 Treynor Ratio -0.304 Total Fees $0.00 |
# # Trading Orders Algorithm # # Ref: https://www.quantconnect.com/docs#Trading-and-Orders # https://www.quantconnect.com/docs#Charting # import decimal from datetime import timedelta class TradingOrdersAlgorithm(QCAlgorithm): def Initialize(self): # Set cash allocation for backtest # In live trading this is ignored and your real account is used. # cash = 7000 * 50 leverage = 350,000 self.SetCash(350000); # Start and end dates for the backtest. # These are ignored in live trading. self.SetStartDate(2016,6,1) self.SetEndDate(2017,6,1) # Specify the OANDA Brokerage: This lets us know the fee models & data. self.SetBrokerageModel(BrokerageName.OandaBrokerage) # Add assets you'd like to see self.AddForex("EURUSD", Resolution.Minute) self.SetBenchmark("EURUSD") #5 day mean #*****************THIS IS THE MEAN YOU CAN CHANGE THE 5 ****************** self.sma = self.SMA("EURUSD", 5, Resolution.Daily) self.SetWarmup(timedelta(5)) def OnData(self, slice): price = slice["EURUSD"].Value difference = self.sma.Current.Value - price # order amount = 3% cash / current price # need to figure out how to get the current cash #***************THIS IS THE AMOUNT OF THE PORTFOLIO PUT INTO EACH TRADE YOU CAN CHANGE THE 0.03******************* amount = (self.Portfolio.TotalPortfolioValue * decimal.Decimal(0.03)) / price if difference > decimal.Decimal(0.01): # Buy shares of EURUSD self.Buy("EURUSD", amount) #************************THIS IS THE TAKE PROFIT YOU CAN CHANGE THE 1.005************ # Place a Take Profit Limit order for .005% gain self.LimitOrder("EURUSD", -amount, price * decimal.Decimal(1.00005)) #************************THIS IS THE STOP LOSS YOU CAN CHANGE THE 0.997****************** # Place a Stop Loss (Stop Market) order for a .003% loss self.StopMarketOrder("EURUSD", -amount, price * decimal.Decimal(0.99997)) if difference < decimal.Decimal(-0.01): # Sell 1000 shares of EURUSD self.Sell("EURUSD", amount) #************************THIS IS THE TAKE PROFIT YOU CAN CHANGE THE 1.005************ #Place a Take Profit Limit order for .005% gain self.LimitOrder("EURUSD", -amount, price * decimal.Decimal(1.00005)) #************************THIS IS THE STOP LOSS YOU CAN CHANGE THE 0.99997****************** # Place a Stop Loss (Stop Market) order for a .003% loss self.StopMarketOrder("EURUSD", -amount, price * decimal.Decimal(0.997)) def OnOrderEvent(self, orderEvent): if orderEvent.Status == OrderStatus.Submitted or orderEvent.Status == OrderStatus.Canceled: return # if orderEvent.FillQuantity < 0: # self.Transactions.CancelOpenOrders("EURUSD") else: self.Log("Buy EURUSD at {0}. SMA30d: {1}".format(orderEvent.FillPrice, self.sma.Current.Value))