Exemple #1
0
    def showMargin(self):

        tradeStatus = "Stat"
        for trade in self.trades:
            if (trade.status == "CLOSED"):
                tradeStatus = datetime.datetime.fromtimestamp(
                    trade.exitTime).strftime('%Y-%m-%d %H:%M:%S') + " " + str(
                        trade.status) + " Entry: " + str(
                            round(trade.entryPrice, 2)) + " Exit: " + str(
                                round(trade.exitPrice, 2))
                self.makeInvesment(
                    trade)  #considering the trade as an indicator
                tradeStatus = tradeStatus + " Profit: "
                if (trade.exitPrice > trade.entryPrice):
                    tradeStatus = tradeStatus + "\033[92m"
                else:
                    tradeStatus = tradeStatus + "\033[91m"
                tradeStatus = tradeStatus + str(
                    round(trade.exitPrice - trade.entryPrice,
                          2)) + "\033[0m" + " Inves: "

                if (self.investement > botVariables().initialInvestment):
                    tradeStatus = tradeStatus + "\033[92m"
                else:
                    tradeStatus = tradeStatus + "\033[91m"

                tradeStatus = tradeStatus + str(round(self.investement,
                                                      2)) + "\033[0m"
                self.output.log(tradeStatus)
Exemple #2
0
    def __init__(self):
        self.vars = botVariables()
        self.investement = self.vars.initialInvestment
        self.makeFee = self.vars.makeFee
        self.takeFee = self.vars.takeFee
        self.output = BotLog()
        self.prices = []
        self.closes = []  # Needed for Momentum Indicator
        self.trades = []
        self.numOfTrades = 0
        self.currentPrice = ""
        self.currentTime = ""
        self.currentClose = ""
        self.numSimulTrades = 1
        self.indicators = BotIndicators()
        self.absMargin = 0
        self.relMargin = 0

        #these are the values of the indicators qat each endTime
        self.SMA1 = 0
        self.SMA2 = 0
        self.EMA1 = 0
        self.EMA2 = 0
        self.RSI = 0
        self.BollUp = 0
        self.BollDown = 0
Exemple #3
0
 def __init__(self, time, currentPrice):
     self.output = BotLog()
     self.vars = botVariables()
     self.status = "OPEN"
     self.entryTime = time
     self.entryPrice = currentPrice
     self.exitTime = ''
     self.exitPrice = ""
     #self.output.log("Trade opened")
     if (self.vars.stopLoss > 0):
         self.stopLoss = currentPrice - self.vars.stopLoss
Exemple #4
0
 def __init__(self):
     self.vars = botVariables()
     pass
Exemple #5
0
    def __init__(self,
                 exchange,
                 pair,
                 period,
                 startTime,
                 endTime,
                 backtest=True):
        self.botHTML = BotHTML()
        self.vars = botVariables()
        self.api_key = self.vars.api_key_poloniex
        self.api_secret = self.vars.api_secret_poloniex
        self.avPeriod = self.vars.movingAvPeriod
        self.indicators = BotIndicators()
        self.pair = pair
        self.period = period
        self.startTime = startTime
        self.endTime = endTime
        self.data = []
        self.prices = []
        self.poloData = []
        self.trades = []
        if (exchange == "poloniex"):
            print('Ecxhange with Poloniex')
            self.conn = poloniex.Poloniex(self.api_key, self.api_secret)
            if backtest:
                print("Checking the data from " +
                      datetime.datetime.fromtimestamp(int(startTime)).strftime(
                          '%Y-%m-%d %H:%M:%S') + " to " +
                      datetime.datetime.fromtimestamp(int(endTime)).strftime(
                          '%Y-%m-%d %H:%M:%S'))

                self.poloData = self.conn.returnChartData(
                    self.pair, self.period, self.startTime, self.endTime)

                #A:poloData is an list (checked with the funtion type(), where each item of the list contains 6 values of the period
                for datum in self.poloData:
                    #datum is a dict = {key1:value1, key2:value2, ... }
                    if (datum['open'] and datum['close'] and datum['high']
                            and datum['low']):
                        #putting all this data to the BotCandlestick object
                        self.data.append(
                            BotCandlestick(self.period, datum['open'],
                                           datum['close'], datum['high'],
                                           datum['low'],
                                           datum['weightedAverage'],
                                           datum['date']))

        if (exchange == "binance"):
            # Remember to install binance python script with --> pip install python-binance
            print('Ecxhange with Binance')
            if backtest:
                # create the Binance client, no need for api key
                client = Client("", "")
                klines = client.get_historical_klines(
                    self.vars.pairBinance,
                    getattr(client, self.vars.periodBinance),
                    self.vars.startTimeBinance, self.vars.endTimeBinance)
                for kline in klines:
                    self.data.append(
                        BotCandlestick(
                            self.period, kline[1], kline[4], kline[2],
                            kline[3],
                            str((float(kline[1]) + float(kline[2]) +
                                 float(kline[4]) + float(kline[3])) / 4),
                            int(((kline[0]) + (kline[6])) /
                                2000)))  #because in miliseconds
                """