| Overall Statistics |
|
Total Trades 94635 Average Win 0.00% Average Loss 0.00% Compounding Annual Return -33.030% Drawdown 15.600% Expectancy 0.577 Net Profit -8.613% Sharpe Ratio -1.516 Loss Rate 32% Win Rate 68% Profit-Loss Ratio 1.32 Alpha -0.357 Beta -0.945 Annual Standard Deviation 0.198 Annual Variance 0.039 Information Ratio -0.998 Tracking Error 0.24 Treynor Ratio 0.317 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(7718.17);
# Start and end dates for the backtest.
# These are ignored in live trading.
self.SetStartDate(2016,7,1)
self.SetEndDate(2016,8,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", 50, Resolution.Daily)
self.SetWarmup(timedelta(50))
def OnData(self, slice):
if self.Portfolio["EURUSD"].Quantity > 1:
return
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
amount = (self.Portfolio.TotalPortfolioValue * decimal.Decimal(0.0003)) / price
if difference > decimal.Decimal(0.001):
# Buy shares of EURUSD
self.Buy("EURUSD", amount)
# Place a Take Profit Limit order for .000005% gain
self.LimitOrder("EURUSD", -amount, price * decimal.Decimal(1.000005))
# Place a Stop Loss (Stop Market) order for a .000000003% loss
self.StopMarketOrder("EURUSD", -amount, price * decimal.Decimal(0.999999997))
if difference < decimal.Decimal(-0.001):
# Sell 1000 shares of EURUSD
self.Sell("EURUSD", amount)
#Place a Take Profit Limit order for .0005% gain
self.LimitOrder("EURUSD", -amount, price * decimal.Decimal(1.000005))
# Place a Stop Loss (Stop Market) order for a .0000003% loss
self.StopMarketOrder("EURUSD", -amount, price * decimal.Decimal(0.999999997))
def OnOrderEvent(self, orderEvent):
if orderEvent.Status == OrderStatus.Submitted or orderEvent.Status == OrderStatus.Canceled:
return