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 datetime import timedelta

### <summary>
### The algorithm selects the crypto with a clear trend over the three resolutions of 1, 5 and 15 minutes, looks at the rate of return and returns the crypto with the highest rate of return
### The algo buys that crypto and follows the trend with a trailing stop loss untill the stop loss at twice the standard .
### </summary>
class BasicTemplateAlgorithm(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.'''
        
        # Set the market and brokerage model
        self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash)
        
     
        
        #initialize Dates etc
        self.SetStartDate(2017, 12, 10)  #Set Start Date
        self.SetEndDate(2017, 12, 12)    #Set End Date
        self.SetCash(5000)             #Set Strategy Cash
        
        #All Crypto Pairs
        #Add currencies
        Crypto = self.AddCrypto("BTCUSD", Resolution.Minute)
        self._Symbol=Crypto.Symbol
        consolidator5=TradeBarConsolidator(timedelta(minutes=5))
     
        
        self._low20 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
        
        #Add 5 Minute Consolidation
        self.SubscriptionManager.AddConsolidator(self._Symbol, consolidator5)
        consolidator5.DataConsolidated += self.FiveMinuteBarHandler
        
        
        
        
        
       
        #self.RegisterIndicator("BTCUSD", self.low, consolidator5)
        
        self._bb = self.BB(self._Symbol, 20, 2, MovingAverageType.Simple, Resolution.Minute);
        self._rsi = self.RSI(self._Symbol, 14,  MovingAverageType.Simple, Resolution.Minute);
        self.RegisterIndicator(self._Symbol, self._rsi, consolidator5)
        self._adx=self.ADX(self._Symbol, 14)
        
    
        
    
    
    
    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. '''
        
        #history = self.History(self._5MinuteBar, 20)
        #self.lowhistory = history.loc[self._5MinuteBar]
        
        
        
        
        
        
        # print the price of the three currencies
        if not self.Portfolio.Invested:
            self.Log("The price is  at time {0}".format(self.Time))
            #self.SetHoldings(format(self._Symbol[0]), 1.0)
            
            
    def FiveMinuteBarHandler(self, sender, bar):
        
        self._low20[0] = bar.Low
        for i in range(0,18):
            self._low20[i+1] = self._low20[i]
        
        #self.Debug(str(self.Time) + " > New Bar! and the low is ")