Adds support to python selectors in Renko Consolidators

This commit is contained in:
AlexCatarino
2018-04-16 14:39:25 +01:00
parent 35e8e0891e
commit b0265ba7f5
2 changed files with 44 additions and 1 deletions
+17 -1
View File
@@ -19,6 +19,7 @@ AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Data.Market import *
from QuantConnect.Data.Consolidators import *
from datetime import timedelta
@@ -47,6 +48,14 @@ class RenkoConsolidatorAlgorithm(QCAlgorithm):
renkoClose.DataConsolidated += self.HandleRenkoClose
self.SubscriptionManager.AddConsolidator("SPY", renkoClose)
# this is the full constructor that can accept a value selector and a volume selector
# this allows us to perform the renko logic on values other than Close, even computed values!
# break SPY into (2*o + h + l + 3*c)/7
renko7bar = RenkoConsolidator(2.5, lambda x: (2 * x.Open + x.High + x.Low + 3 * x.Close) / 7, lambda x: x.Volume)
renko7bar.DataConsolidated += self.HandleRenko7Bar
self.SubscriptionManager.AddConsolidator("SPY", renko7bar)
# We're doing our analysis in the OnRenkoBar method, but the framework verifies that this method exists, so we define it.
def OnData(self, data):
@@ -60,4 +69,11 @@ class RenkoConsolidatorAlgorithm(QCAlgorithm):
if not self.Portfolio.Invested:
self.SetHoldings(data.Symbol, 1)
self.Log("CLOSE - {0} - {1} {2}".format(data.Time, data.Open, data.Close))
self.Log("CLOSE - {0} - {1} {2}".format(data.Time, data.Open, data.Close))
def HandleRenko7Bar(self, sender, data):
'''This function is called by our renko7bar consolidator defined in Initialize()
Args:
data: The new renko bar produced by the consolidator'''
self.Log("7BAR - {0} - {1} {2}".format(data.Time, data.Open, data.Close))