| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return -0.639% Drawdown 12.500% Expectancy 0 Net Profit -2.044% Sharpe Ratio -0.113 Probabilistic Sharpe Ratio 0.816% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.009 Beta 0.009 Annual Standard Deviation 0.034 Annual Variance 0.001 Information Ratio -1.025 Tracking Error 0.597 Treynor Ratio -0.438 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from AlgorithmImports import *
### <summary>
### The demonstration algorithm shows some of the most common order methods when working with Crypto assets.
### </summary>
### <meta name="tag" content="using data" />
### <meta name="tag" content="using quantconnect" />
### <meta name="tag" content="trading and orders" />
class BasicTemplateCryptoAlgorithm(QCAlgorithm):
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.last_not_empty_history = pd.DataFrame()
self.empty_volume_counter = 0
self.empty_history_counter = 0
self.SetStartDate(2020, 1, 1) #Set Start Date
self.SetEndDate(2023, 3, 21) #Set End Date
# Although typically real brokerages as GDAX only support a single account currency,
# here we add both USD and EUR to demonstrate how to handle non-USD account currencies.
# Set Strategy Cash (USD)
self.SetCash(100000000)
# Set Strategy Cash (EUR)
# EUR/USD conversion rate will be updated dynamically
self.SetCash("EUR", 100000000)
# Add some coins as initial holdings
# When connected to a real brokerage, the amount specified in SetCash
# will be replaced with the amount in your actual account.
self.SetBrokerageModel(BrokerageName.Bitfinex, AccountType.Margin)
# Find more symbols here: http://quantconnect.com/data
self.AddCrypto("BTCUSD", Resolution.Hour)
self.symbol = self.AddCrypto("BTCUSD", Resolution.Hour).Symbol
# create two moving averages
self.fast = self.EMA(self.symbol, 20, Resolution.Daily)
self.slow = self.EMA(self.symbol, 50, Resolution.Daily)
def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
'''
self.his = self.History(["BTCUSD"],1)
if(self.his.empty):
self.empty_history_counter = self.empty_history_counter + 1
else:
self.last_not_empty_history = self.his
if('volume' not in self.his):
self.empty_volume_counter = self.empty_volume_counter + 1
def OnOrderEvent(self, orderEvent):
self.Debug("{} {}".format(self.Time, orderEvent.ToString()))
def OnEndOfAlgorithm(self):
self.Debug("Empty Volume Counter at end of algorithm:")
self.Debug(self.empty_volume_counter)
self.Debug("Empty History Counter at end of algorithm:")
self.Debug(self.empty_history_counter)
self.Debug("Last history:")
self.Debug(self.last_not_empty_history)
self.Log("Empty Volume Counter at end of algorithm:")
self.Log(self.empty_volume_counter)
self.Log("Empty History Counter at end of algorithm:")
self.Log(self.empty_history_counter)
self.Log("Last history:")
self.Log(self.last_not_empty_history)
pass