| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np
from QuantConnect.Indicators import *
### <summary>
### Basic template algorithm simply initializes the date range and cash. This is a skeleton
### framework you can use for designing an algorithm.
### </summary>
class BasicTemplateAlgorithm(QCAlgorithm):
'''Basic template algorithm simply initializes the date range and cash'''
def __init__(self):
self.previous = None
self.sma_3 = None
self.sma_45 = None
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(2013,1,1) #Set Start Date
self.SetEndDate(2013,1,15) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.AddUniverse(self.CoarseSelectionFunction)
self.UniverseSettings.Resolution = Resolution.Daily
#self.Debug(str(len(fine_select)))
def CoarseSelectionFunction(self, coarse):
#self.Debug(str(LowerBound)+" "+str(UpperBound))
#Condition1 = coarse.filter(lambda x:x.price>3 and x.price<20)
base_filter = [x for x in coarse if (x.Price>3 and x.Price<20 and x.HasFundamentalData)]
sortedByDollarVolume = sorted(base_filter, \
key=lambda x: x.DollarVolume, reverse=True)
Total = len(sortedByDollarVolume)
LowerBound = int(Total*0.06)
UpperBound = int(Total*0.4)
select = []
for x in range(UpperBound):
if x>=LowerBound:
select.append(sortedByDollarVolume[x])
return [ x.Symbol for x in select ]
def OnData(self, data):
#for x in range(len(self.UniverseManager.Values.items())):
# self.Debug(self.UniverseManager.Values.items()[x].Members)
#for y in range(min(10,len(UniverseManager[1].Members.items()))):
# self.Debug(list(self.UniverseManager[1].Members)[y].Symbol)
#self.Debug(str(self.UniverseManager.Values[1].Members.Keys))
MaxCandidates = 100
for x in self.UniverseManager.Values[1].Members.Keys:
self.Debug(str(x))
self.sma_3 = self.SMA(x, 3, Resolution.Daily)
self.sma_45 = self.SMA(x, 45, Resolution.Daily)
if not self.sma_3.IsReady:
return
self.Debug(str(self.sma_3.Current.Value))
fine_select[x.Symbol] = (self.sma_3.Current.Value - self.sma_45.Current.Value) / self.sma_45.Current.Value
fine_select = sorted(fine_select, key=fine_select.__getitem__)
fine_select = fine_select[:MaxCandidates]
x=1
for key in fine_select:
#for key in fine_select:
#self.Debug(str(key))
if x%30==0 and not self.Portfolio[key].Invested:
self.MarketOrder(key,1)
x=x+1