Example #1
0
 def findopenPrice(self, candlesUpToCurrent, currentCandle, position):
     if position == 'long':
         saveIndex = -1
         h = -1
         for i in range(-25, 0):
             if h < candlesUpToCurrent[i].high:
                 h = candlesUpToCurrent[i].high
                 saveIndex = i
         backTest.addHorizontalLine(self.backtest,
                                    candlesUpToCurrent[saveIndex].datetime,
                                    "Simple Horizontal Above",
                                    pipOffset=3)
         return h + 0.0003
     if position == 'short':
         saveIndex = -1
         l = 100000000
         for i in range(-25, 0):
             if l > candlesUpToCurrent[i].low:
                 l = candlesUpToCurrent[i].low
                 saveIndex = i
         backTest.addHorizontalLine(self.backtest,
                                    candlesUpToCurrent[saveIndex].datetime,
                                    "Simple Horizontal Below",
                                    pipOffset=3)
         return l - 0.0003
Example #2
0
 def findopenPrice(self, candlesUpToCurrent, currentCandle, position):
     if position == 'long':
         op = currentCandle.close + currentCandle.indicators['ATR(14)'] * 1.5
         backTest.addHorizontalLine(self.backtest,
                                    currentCandle.datetime,
                                    "Horizontal At Price",
                                    price=op)
         return op
     if position == 'short':
         op = currentCandle.close - currentCandle.indicators['ATR(14)'] * 1.5
         backTest.addHorizontalLine(self.backtest,
                                    currentCandle.datetime,
                                    "Horizontal At Price",
                                    price=op)
         return op
Example #3
0
    def setup(self, currentCandle, candlesUpToCurrent,  position):
        print('================================================================================')
        self.risk = (currentCandle.indicators['ATR(14)'] * 1.5)
        if position == 'long':
            self.sl = currentCandle.close - self.risk
            backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.sl)
            self.breakEven = currentCandle.close + self.risk
            self.openPrice = currentCandle.close
            backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.breakEven)
            backTest.addMarker(self.backtest, currentCandle.datetime, "Simple Mark Above", "magenta", text=f"BE{round(self.breakEven,6)}\nSl{round(self.sl,6)}")



        elif position == 'short':
            self.sl = currentCandle.close + self.risk
            backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.sl)
            self.breakEven = currentCandle.close - self.risk
            self.openPrice = currentCandle.close
            backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.breakEven)
            backTest.addMarker(self.backtest, currentCandle.datetime, "Simple Mark Above", "magenta", text=f"BE{round(self.breakEven, 6)}\nSl{round(self.sl, 6)}")
Example #4
0
    def run(self, currentCandle, candlesUpToCurrent):
        from HistoryAnalysis import backTest
        time = currentCandle.datetime.split(':')
        hour = int(time[0][-2:])
        min = int(time[1])

        if hour == 8 and min >= 0 and self.flag:
            self.flag = False
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="Yellow")
            backTest.addHorizontalLine(self.backtest,
                                       currentCandle.datetime,
                                       "Horizontal At Price",
                                       price=self.hi)
            backTest.addHorizontalLine(self.backtest,
                                       currentCandle.datetime,
                                       "Horizontal At Price",
                                       price=self.lo)
            self.wasRanging = self.calculateTrendingIndex(self.rangingCandles)
            self.reset = True

        # Sleeping
        if 0 <= hour < 3:
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="White")
            self.updateHiLo(currentCandle)
            self.rangingCandles.append(currentCandle)

        # London
        elif 3 <= hour < 8:
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="Green")
            #return self.openPos(currentCandle)
            self.updateHiLo(currentCandle)
            self.rangingCandles.append(currentCandle)

        # Overlap
        elif 8 <= hour < 12:
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="Brown")
            return self.openPos(currentCandle)

        # United States
        elif 12 <= hour < 17:
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="Red")
            #return self.openPos(currentCandle)
            #self.updateHiLo(currentCandle)

        # Sleeping
        elif 17 <= hour:
            backTest.addMarker(self.backtest,
                               currentCandle.datetime,
                               "Simple Mark Above",
                               color="White")
            self.updateHiLo(currentCandle)
            self.rangingCandles.append(currentCandle)
        else:
            print("INVALID CANDLE")

        # Reset Flag
        if hour >= 17:
            self.flag = True
Example #5
0
    def run(self, currentCandle, candlesUpToCurrent, position):
        # STATE 1
        if position == 'long' and self.state == 'Part1':
            if currentCandle.high >= self.breakEven:
                self.moneyInTrade = self.getMoneyToRisk()
                self.updateMoney(self.breakEven, position, self.moneyInTrade, self.openPrice, self.state, currentCandle)
                self.state = 'Part1'
                self.sl = self.openPrice + 0.0001
                self.openPrice = self.breakEven
                self.tp = self.openPrice + (2*self.risk)
                backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.tp)
                backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.sl)
                return True

            elif currentCandle.low <= self.sl:
                self.moneyInTrade = self.getMoneyToRisk()
                self.updateMoney(self.sl, position, self.moneyInTrade, self.openPrice, self.state, currentCandle)
                return True

        elif position == 'short' and self.state == 'Part1':
            if currentCandle.low <= self.breakEven:
                self.moneyInTrade = self.getMoneyToRisk()
                self.updateMoney(self.breakEven, position, self.moneyInTrade, self.openPrice, self.state, currentCandle)
                self.state = 'Part1'
                self.sl = self.openPrice - 0.0001
                self.openPrice = self.breakEven
                self.tp = self.openPrice - (2*self.risk)
                backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.tp)
                backTest.addHorizontalLine(self.backtest, currentCandle.datetime, "Horizontal At Price", price=self.sl)
                return True

            elif currentCandle.high >= self.sl:
                self.moneyInTrade = self.getMoneyToRisk()
                self.updateMoney(self.sl, position, self.moneyInTrade, self.openPrice, self.state, currentCandle)
                return True







        # STATE 2
        if position == 'long' and self.state == 'Part2':
            if currentCandle.high >= self.tp:
                self.updateMoney(self.tp, position, self.moneyInTrade/2, self.openPrice, self.state, currentCandle, fee=False)
                self.state = 'Part1'
                return True

            elif currentCandle.low <= self.sl:
                self.updateMoney(self.sl, position, self.moneyInTrade/2, self.openPrice, self.state, currentCandle, fee=False)
                self.state = 'Part1'
                return True

        elif position == 'short' and self.state == 'Part2':
            if currentCandle.low <= self.tp:
                self.updateMoney(self.tp, position, self.moneyInTrade/2, self.openPrice, self.state, currentCandle, fee=False)
                self.state = 'Part1'
                return True

            elif currentCandle.high >= self.sl:
                self.updateMoney(self.sl, position, self.moneyInTrade/2, self.openPrice, self.state, currentCandle, fee=False)
                self.state = 'Part1'
                return True