def __init__(self, loopr, highSlice, initial, lowSlice, price="BA", complete_policy="high", mult=1.0): self.looper = loopr self.highSlice = highSlice self.lowSlice = lowSlice self.initial = round(initial * mult) self.price = price self.highSliceFreq = frequency(self.highSlice) self.lowSliceFreq = frequency(self.lowSlice) self.initialLow = self.highSliceFreq / self.lowSliceFreq self.highLC = None self.lowLC = None self.complete_policy = complete_policy if (not (complete_policy in ["high", "low", "both", "none"])): raise ValueError( "DualLiveCandles: complete_policy must be either high, low or both" )
def setTrailingSpecShrinker(self, factor=0.9, cfreq=None, shrinker=None): if (shrinker is not None): self.trailingSpecShrinker = shrinker else: from myt_support import frequency, TrailSpecShrinker if (cfreq is None): freq1 = frequency(self.lowSlice) * self.kijunSize freq2 = frequency(self.highSlice) * self.tenkanSize freq = round(0.5 (freq1 + freq2) if (freq1 > freq2 * 2 or freq2 > freq1 * 2) else (freq2 if (freq2 > freq1) else freq1)) + 60 self.trailingSpecShrinker = TrailSpecShrinker(freq, factor) else: freq = round(cfreq * frequency(self.highSlice)) self.trailingSpecShrinker = TrailSpecShrinker(freq, factor)
def __init__(self, loopr, slice, initial, price="BA", since=None, require_complete=False, waitMin=0.5, waitMax=60, duration=None, name='nameless'): self.slice = slice self.looper = loopr self.frequency = frequency(slice) self.initial = initial self.price = price self.backlog = [] self.lastGiven = None self.lastTimeGiven = None self.require_complete = require_complete self.waitMin = waitMin self.waitMax = waitMax self.timeLimit = None self.nextLimit = None self.expired = False self.since = since self.duration = duration self.name = name self.islive = False
def weightedFrequencies(self, fibseed=[10, 15]): frequencies = sorted(list( set(map(lambda s: (frequency(s), s), self.slices))), key=lambda f: -f[0]) # use some Fibonacci technic to help beef-up the amount of time we scan the past fib = list(filter(lambda f: f >= 10, fibseed)) if (len(fib) < 1): fib.append(10) if (len(fib) < 2): fib.append(int(1.5 * fib[-1])) while (len(fib) < len(frequencies)): fib.append(fib[-2] + fib[-1]) return list([(frequencies[i][0], frequencies[i][1], fib[i]) for i in range(len(fib))])
def pause(self, factor=1.05, tick=True): if(not self.simulation): from myt_support import frequency import time now = time.time() if(self.lastTick is None): if(not tick): raise RuntimeError("calling unticked pause on uninitialized heart beat") else: self.lastTick = now return freq = frequency(self.lowSlice) p = (now - lastTick) if(p>freq): time.sleep(p-freq) if(tick): self.lastTick = time.now()
askc = currentCandle.ask.c position = "(none)" currentProfit = "" if (pos1 is not None): position = "[BUY]" if (pos1.forBUY) else "[SELL]" currentProfit = pos1.quoteProfit(currentCandle) print "{} -- {} -- {} (recent close) - RSI:{} -{} ; {}".format(round(deltaTime,1), currentCandle.time[0:19], \ formatTwoNumberWith("base:{} -- bid:{} -- ask:{}",bidc,askc), rsiLowMaker.RSI, position, currentProfit) # print "{} -- {} -- base: {} -- bid: {} -- ask: {} (recent close) - RSI:{}".format(round(deltaTime,1), currentCandle.time[0:15], base, currentCandle.bid.c,currentCandle.ask.c, rsiLowMaker.RSI) PrintCurrentStats() loopFrequency = float(frequency(slicing[1])) flushFrequency = float(frequency(slicing[0])) lastPush = time.time() kwargsHigh['count'] = 2 kwargsLow['count'] = 4 loopStart = time.time() tradeErrorMax = 10 tradeErrorSleep = 600 tradeErrorCount = 0 lastBanner = 1 # v20.errors.V20Timeout while (True):