Overall Statistics
Total Trades
2
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
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$17.30
import pandas as pd
import csv
from io import StringIO

class ParticleResistanceCoreWave(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 8, 12)  # Set Start Date
        self.SetEndDate(2020, 8, 12) # Set End Date
        self.SetCash(10000)  # Set Strategy Cash
        csv081220 = self.Download("https://www.dropbox.com/s/4m6xfc34qnhr2x2/updowntriggers081220.csv?dl=1")
        self.df = pd.read_csv(StringIO(csv081220),header=None) #copy the csv that you want to use in the parentheses after StringIO
        self.Symbols = self.df.iloc[0].values.tolist()
        self._macd = dict()
        for symbol in self.Symbols:
            self.AddEquity(symbol, Resolution.Minute)
            self._macd[symbol] = self.MACD(symbol, 12, 26, 9, MovingAverageType.Exponential, Resolution.Minute)    
        self.SetWarmUp(26)
        
        self.tradedsymbols = [] #Put symbols in this list to prevent trading twice in a day
        
    def OnData(self, data):
#--------------------------------Define data from csv for trading---------------------------------
        
        new_header = self.df.iloc[0]
        df = self.df[1:]
        df.columns = new_header

        for symbol in self.Symbols:
            symboldf = df[symbol]
            singlesymboldf = symboldf
            updownlist = singlesymboldf.tolist()

            uptrigger = float(updownlist[0])
            downtrigger = float(updownlist[1])

#-------------------------Open Long Position if Price Crosses Up Trigger-----------------
            
            if self.Securities[symbol].Price > uptrigger and symbol not in self.tradedsymbols:
                self.SetHoldings(symbol, .25)
                self.tradedsymbols.append(symbol)
            
#-----------------------Open Short Position if Price Crosses Down Trigger--------------
            
            if self.Securities[symbol].Price < downtrigger and symbol not in self.tradedsymbols:
                self.SetHoldings(symbol, -.25)
                self.tradedsymbols.append(symbol)
            
            if not all([_macd.IsReady for symbol, _macd in self._macd.items()]):
                return
            
#----------------------------Close Positions Based On MACD Value----------------------------
            
            if self.Portfolio[symbol].HoldingsValue > 0:
                for symbol, _macd in self._macd.items():
                    if _macd.Current.Value < 0:
                        self.Liquidate(symbol)
                if self.Securities[symbol].Price < uptrigger*.95:
                    self.Liquidate(symbol)
                        
            if self.Portfolio[symbol].HoldingsValue < 0:
                for symbol, _macd in self._macd.items():
                    if _macd.Current.Value > 0:
                        self.Liquidate(symbol)
                if self.Securities[symbol].Price > downtrigger*1.05:
                    self.Liquidate(symbol)