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
Probabilistic 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
-7.163
Tracking Error
0.195
Treynor Ratio
0
Total Fees
$0.00
from collections import deque
from datetime import datetime, timedelta
from numpy import sum

### Demonstrates how to create a custom indicator and register it for automatic updated
class CustomIndicatorAlgorithm(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2013,10,7)
        self.SetEndDate(2013,10,11)
        self.symbol = Symbol.Create("SPY", SecurityType.Equity, Market.USA)

        self.AddUniverse(self.CoarseSelectionFunction)

        # Create a QuantConnect indicator and a python custom indicator for comparison
        self.indicator = None
        
        
    def CoarseSelectionFunction(self, coarse):
        if self.indicator is None:
            self.indicator = CustomSimpleMovingAverage('custom', self)
            
            self.indicator.Update(TradeBar(self.Time, self.symbol, 1, 2, 0.8, 1, 100))

        self.Plot("Ready", "Val", int(self.indicator.IsReady))
        self.Log("Plotting")
        
        return [self.symbol]

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            self.RegisterIndicator(security.Symbol, self.indicator, Resolution.Daily)

# Python implementation of SimpleMovingAverage.
# Represents the traditional simple moving average indicator (SMA).
class CustomSimpleMovingAverage(PythonIndicator):
    def __init__(self, name, algorithm):
        self.Name = name
        self.Time = datetime.min
        self.Value = 0
        
        self.algorithm = algorithm


    # Update method is mandatory
    def Update(self, input):
        
        self.algorithm.Log("Called Update")
        self.Time = input.EndTime
        return True