| 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 |
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Data import *
from QuantConnect.Data.Market import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
from QuantConnect.Securities import *
from QuantConnect.Data.Consolidators import *
from datetime import timedelta
class TestFuturesAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2013, 10, 7)
self.SetEndDate(2013, 10, 8)
self.SetCash(1000)
# spy_equity = self.AddSecurity(SecurityType.Equity, "SPY", Resolution.Tick).Symbol
# for futures, one needs to retrieve data from Contracts rather than Symbol.
# This is different from Equity.
self.es_future = self.AddFuture(Futures.Indices.SP500EMini, Resolution.Tick)
self.es_future.SetFilter(timedelta(0), timedelta(182))
## Dictionary to store the consolidators by contract symbol -- allows us to access them in other methods
self.renkoConsolidators = {}
def OnData(self,data):
pass
def HandleRenkoClose(self, sender, data):
'''This function is called by our renkoClose consolidator defined in Initialize()
Args:
data: The new renko bar produced by the consolidator'''
#if not self.Portfolio.Invested:
# self.SetHoldings(data.Symbol, 1)
self.Log(f"CLOSE - {data.Time} - {data.Open} {data.Close}")
def OnSecuritiesChanged(self, changes):
for security in changes.AddedSecurities:
consolidator = RenkoConsolidator(0.5, RenkoType.Wicked) ## Create Renko consolidator
consolidator.DataConsolidated += self.HandleRenkoClose ## Define the handler function
self.SubscriptionManager.AddConsolidator(security.Symbol, consolidator) ## Add the consolidator to our main data handler
self.renkoConsolidators[security.Symbol] = consolidator ## Add consolidator to the dictionary, indexed by symbol
for security in changes.RemovedSecurities:
consolidator = self.renkoConsolidators.pop(security.Symbol) ## Remove/assign consolidator
self.SubscriptionManager.RemoveConsolidator(security.Symbol, consolidator) ## Remove the consolidator from our data handler to keep memory usage low
consolidator.DataConsolidated -= self.HandleRenkoClose ## Remove handler function