def isABuyPoint(macd, modifiedSignalLine, upPoint, t): iup = macd.index.get_loc(upPoint) i = macd.index.get_loc(t) if i <= iup and isAnUpCrossingPoint(macd, modifiedSignalLine, t): return True else: return False
def getModifiedSignalLine(macd, signalLine, K): periods = getTradingPeriods(macd, signalLine) modifiedSignalLine = pd.Series(float('nan'), index=signalLine.index) for period in periods: avmin = getAvailablyMinimumPointsInAPeriod(macd, signalLine, period) avmax = getAvailablyMaximumPointsInAPeriod(macd, signalLine, period) dmin = getMinimumCertainties(macd, signalLine, period) dmax = getMaximumCertainties(macd, signalLine, period) upCrossingPoint = None for t in period: if upCrossingPoint is None and isAnUpCrossingPoint( macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is None: hMinimum = macd[avmin[t]] - signalLine[avmin[t]] modifiedSignalLine[t] = signalLine[t] + hMinimum * (dmin[t]**K) elif t == period[-1]: modifiedSignalLine[t] = signalLine[t] else: hMaximum = macd[avmax[t]] - signalLine[avmax[t]] modifiedSignalLine[t] = signalLine[t] + hMaximum * (dmax[t]**K) return modifiedSignalLine
def isABuyPoint(macd, signalLine, t): i = macd.index.get_loc(t) if (i >=2 and macd.ix[i] > signalLine.ix[i] and macd.ix[i-1] > signalLine.ix[i-1] and isAnUpCrossingPoint(macd, signalLine, macd.index[i-2])): return True else: return False
def isABuyPoint(pricesData, macd, signalLine, t): i = macd.index.get_loc(t) if (i >= 2 and macd.ix[i] > signalLine.ix[i] and macd.ix[i - 1] > signalLine.ix[i - 1] and isAnUpCrossingPoint(macd, signalLine, macd.index[i - 2]) and (macd.ix[i] - signalLine.ix[i]) / float(pricesData.ix[i]) >= 0.005): return True else: return False
def isABuyPoint(macd,modifiedSignalLineWithK , t): i = macd.index.get_loc(t) if (i >=2 and macd.ix[i] > modifiedSignalLineWithK.ix[i] and macd.ix[i-1] > modifiedSignalLineWithK.ix[i-1] and isAnUpCrossingPoint(macd, modifiedSignalLineWithK, macd.index[i-2])): return True else: return False
def isABuyPoint(macd, modifiedSignalLineWithK, t): i = macd.index.get_loc(t) if (i >= 2 and macd.ix[i] > modifiedSignalLineWithK.ix[i] and macd.ix[i - 1] > modifiedSignalLineWithK.ix[i - 1] and isAnUpCrossingPoint(macd, modifiedSignalLineWithK, macd.index[i - 2])): return True else: return False
def getAvailablyMinimumPointsInAPeriod(macd, signalLine, period): avialablyMinimumPoints = pd.Series('', index=period) for t in period: if isAnUpCrossingPoint(macd, signalLine, t): avialablyMinimumPoints[t] = macd[period[0]:t].idxmin() break avialablyMinimumPoints[t] = macd[period[0]:t].idxmin() return avialablyMinimumPoints
def isABuyPoint(pricesData, macd, modifiedSignalLineWithK, t): i = macd.index.get_loc(t) if (i >=2 and macd.ix[i] > modifiedSignalLineWithK.ix[i] and macd.ix[i-1] > modifiedSignalLineWithK.ix[i-1] and isAnUpCrossingPoint(macd, modifiedSignalLineWithK, macd.index[i-2]) and (macd.ix[i] - modifiedSignalLineWithK.ix[i])/float(pricesData.ix[i]) >= 0.005): return True else: return False
def getAvailablyMaximumPointsInAPeriod(macd, signalLine, period): avialablyMaximumPoints = pd.Series('', index=period) upCrossingPoint = None for t in period: if upCrossingPoint is None and isAnUpCrossingPoint(macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is not None: avialablyMaximumPoints[t] = macd[upCrossingPoint:t].idxmax() return avialablyMaximumPoints
def getAvailablyMaximumPointsInAPeriod(macd, signalLine, period): avialablyMaximumPoints = pd.Series('', index=period) upCrossingPoint = None for t in period: if upCrossingPoint is None and isAnUpCrossingPoint( macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is not None: avialablyMaximumPoints[t] = macd[upCrossingPoint:t].idxmax() return avialablyMaximumPoints
def getMinimumCertainties(macd, signalLine, period): avmin = getAvailablyMinimumPointsInAPeriod(macd, signalLine, period) minimumCertainties = pd.Series('', index=period) for t in period: if isAnUpCrossingPoint(macd, signalLine, t): minimumCertainties[t] = 1 break hCurrent = macd[t] - signalLine[t] hMinimum = macd[avmin[t]] - signalLine[avmin[t]] minimumCertainties[t] = 1 - (hCurrent/float(hMinimum)) if hMinimum != 0 else 1 return minimumCertainties
def getMinimumCertainties(macd, signalLine, period): avmin = getAvailablyMinimumPointsInAPeriod(macd, signalLine, period) minimumCertainties = pd.Series('', index=period) for t in period: if isAnUpCrossingPoint(macd, signalLine, t): minimumCertainties[t] = 1 break hCurrent = macd[t] - signalLine[t] hMinimum = macd[avmin[t]] - signalLine[avmin[t]] minimumCertainties[t] = 1 - (hCurrent / float(hMinimum)) if hMinimum != 0 else 1 return minimumCertainties
def getMaximumCertainties(macd, signalLine, period): avmax = getAvailablyMaximumPointsInAPeriod(macd, signalLine, period) maximumCertainties = pd.Series('', index=period) upCrossingPoint = None for t in period: if t == period[-1]: maximumCertainties[t] = 1 break if upCrossingPoint is None and isAnUpCrossingPoint(macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is not None: hCurrent = macd[t] - signalLine[t] hMaximum = macd[avmax[t]] - signalLine[avmax[t]] maximumCertainties[t] = 1 - (hCurrent/float(hMaximum)) if hMaximum != 0 else 1 return maximumCertainties
def getMaximumCertainties(macd, signalLine, period): avmax = getAvailablyMaximumPointsInAPeriod(macd, signalLine, period) maximumCertainties = pd.Series('', index=period) upCrossingPoint = None for t in period: if t == period[-1]: maximumCertainties[t] = 1 break if upCrossingPoint is None and isAnUpCrossingPoint( macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is not None: hCurrent = macd[t] - signalLine[t] hMaximum = macd[avmax[t]] - signalLine[avmax[t]] maximumCertainties[t] = 1 - ( hCurrent / float(hMaximum)) if hMaximum != 0 else 1 return maximumCertainties
def getModifiedSignalLine(macd, signalLine, K): periods = getTradingPeriods(macd, signalLine) modifiedSignalLine = pd.Series(float('nan'), index=signalLine.index) for period in periods: avmin = getAvailablyMinimumPointsInAPeriod(macd, signalLine, period) avmax = getAvailablyMaximumPointsInAPeriod(macd, signalLine, period) dmin = getMinimumCertainties(macd, signalLine, period) dmax = getMaximumCertainties(macd, signalLine, period) upCrossingPoint = None for t in period: if upCrossingPoint is None and isAnUpCrossingPoint(macd, signalLine, t): upCrossingPoint = t if upCrossingPoint is None: hMinimum = macd[avmin[t]] - signalLine[avmin[t]] modifiedSignalLine[t] = signalLine[t] + hMinimum*(dmin[t]**K) elif t == period[-1]: modifiedSignalLine[t] = signalLine[t] else: hMaximum = macd[avmax[t]] - signalLine[avmax[t]] modifiedSignalLine[t] = signalLine[t] + hMaximum*(dmax[t]**K) return modifiedSignalLine
def isABuyPoint(macd, signalLine, t): if isAnUpCrossingPoint(macd, signalLine, t): return True else: return False
def isABuyPoint(macd,modifiedSignalLineWithK, t): if isAnUpCrossingPoint(macd, modifiedSignalLineWithK, t): return True else: return False
def isABuyPoint(macd, modifiedSignalLineWithK, t): if isAnUpCrossingPoint(macd, modifiedSignalLineWithK, t): return True else: return False