| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000 End Equity 100000 Net Profit 0% Sharpe Ratio 0 Sortino 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 -0.407 Tracking Error 0.095 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports
from AlgorithmImports import *
from datetime import timedelta
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Data.UniverseSelection import CoarseFundamental
from QuantConnect.Data.Custom import *
from QuantConnect.Data.Fundamental import FineFundamental
from QuantConnect.Data.Market import *
from QuantConnect.Indicators import *
from QuantConnect import Symbol
# endregion
class CalmApricotDolphin(QCAlgorithm):
def Initialize(self):
self.SetStartDate(datetime.now() - timedelta(days=150)) # Set your start date here
self.SetEndDate(datetime.now() - timedelta(-1)) # Set your end date here
self.SetCash(100000) # Set your starting cash balance
self.SetWarmUp(timedelta(days=40)) # Warm up the algorithm with 40 days of data
# Subscribe to custom data for volume and price data
self.AddData[Fundamental]("CustomData", Resolution.Daily)
# Initialize RollingWindows
self._averagePriceWindow = RollingWindow[IndicatorDataPoint](90)
self._averageVolumeWindow = RollingWindow[IndicatorDataPoint](90)
self._existingUniverse = set()
# Schedule the function to run at a specific time each day
# self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(10, 0), self.SearchAndAddToUniverse)
def OnData(self, data):
if isinstance(data, FundamentalData):
# Update the RollingWindows with new data points
self._averagePriceWindow.Add(data.Price)
self._averageVolumeWindow.Add(data.Volume)
self.SearchAndAddToUniverse()
def SearchAndAddToUniverse(self):
for symbol in self.Securities.Keys:
if symbol not in self._existingUniverse:
currentPrice = self.Securities[symbol].Price
yesterdayVolume = self.Securities[symbol].Volume
conditionA = currentPrice > 0.001
conditionB = yesterdayVolume > 1
if conditionA and conditionB:
self.AddToUniverse(symbol)
def AddToUniverse(self, symbol):
# Add the symbol to your universe
if symbol not in self._existingUniverse:
self.AddEquity(symbol.Value)
self._existingUniverse.add(symbol)
self.Log(f"Added {symbol.Value} to the universe")