| Overall Statistics |
|
Total Trades 697 Average Win 0% Average Loss 0% Compounding Annual Return 1.140% Drawdown 25.700% Expectancy 0 Net Profit 17.444% Sharpe Ratio 0.17 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.009 Beta 0.004 Annual Standard Deviation 0.056 Annual Variance 0.003 Information Ratio -0.378 Tracking Error 0.163 Treynor Ratio 2.655 Total Fees $0.00 |
import numpy as np
from System import *
from NodaTime import DateTimeZone
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Data import *
from datetime import timedelta
### <summary>
### Day if week strategy for Oil and Gold
### </summary>
class ScheduledEventsAlgorithm(QCAlgorithm):
'''Basic template algorithm simply initializes the date range and cash'''
def Initialize(self):
'''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''
self.SetStartDate(2005,6, 1) #Set Start Date
self.SetEndDate(2019,8,1) #Set End Date
self.SetCash(1000000) #Set Strategy Cash
#Timezone Setting
self.SetTimeZone(DateTimeZone.Utc)
#
#use self.Allocate to assign portfolio weights
#self.Allocate = -2 # Percentage of holdings to risk
# Setup Oanda Broker simulation or Interactive Broker for Equities or Oanda for CFD
self.SetBrokerageModel(BrokerageName.OandaBrokerage)
#self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage)
#Adding Instruments
self.AddCfd("XAUUSD", Resolution.Minute)
self.AddEquity("GLD", Resolution.Minute)
#Logging / Debugs
self.Logging_On = True
self.Debug_On = False
# Set Schedule to buy and sell
#self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Tuesday,DayOfWeek.Wednesday,DayOfWeek.Thursday,DayOfWeek.Friday), self.TimeRules.At(8, 0), self.MorningBuy)
#self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Tuesday,DayOfWeek.Wednesday,DayOfWeek.Thursday,DayOfWeek.Friday), self.TimeRules.At(20, 0), self.AfternoonSell)
self.Schedule.On(self.DateRules.Every(DayOfWeek.Friday), self.TimeRules.At(0, 0), self.MorningBuy)
self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday), self.TimeRules.At(0, 0), self.AfternoonSell)
#self.Schedule.On(self.DateRules.WeekEnd(), self.TimeRules.At(9, 1), self.MorningBuy)
#self.Schedule.On(self.DateRules.WeekEnd(), self.TimeRules.At(17, 29), self.AfternoonSell)
def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
'''
pass
def MorningBuy(self):
if self.Debug_On:
self.Debug("MorningBuy: Fired at : {0}".format(self.Time))
#self.MarketOrder("GLD", 10)
#self.Liquidate
self.MarketOrder("XAUUSD", 1)
#self.SetHoldings("XAUUSD", -2)
def AfternoonSell(self):
if self.Debug_On:
self.Debug("AfternoonSell: Fired at : {0}".format(self.Time))
self.Liquidate
#self.SetHoldings("XAUUSD", 2)
#self.MarketOrder("XAUUSD", 1 )