Ejemplo n.º 1
0
def Candlesticks_Pattern(data):
    data["Upside/Downside Gap Three Methods"]= ta.CDLXSIDEGAP3METHODS(data["Open"],data["High"],data["Low"],data["Close"])
    data["Upside Gap Two Crows"]= ta.CDLUPSIDEGAP2CROWS(data["Open"],data["High"],data["Low"],data["Close"])
    data["Unique 3 River"]= ta.CDLUNIQUE3RIVER(data["Open"],data["High"],data["Low"],data["Close"])
    data["Tristar Pattern"] =ta.CDLTRISTAR (data["Open"],data["High"],data["Low"],data["Close"])
    data["Thrusting Pattern"]= ta.CDLTHRUSTING(data["Open"],data["High"],data["Low"],data["Close"])
    data["Tasuki Gap"]= ta.CDLTASUKIGAP(data["Open"],data["High"],data["Low"],data["Close"])
    data["Takuri (Dragonfly Doji with very long lower shadow)"]= ta.CDLTAKURI(data["Open"],data["High"],data["Low"],data["Close"])
    data["Stick Sandwich"]= ta.CDLSTICKSANDWICH(data["Open"],data["High"],data["Low"],data["Close"])
    data["Stalled Pattern"]= ta.CDLSTALLEDPATTERN(data["Open"],data["High"],data["Low"],data["Close"])
    data["Spinning Top"]= ta.CDLSPINNINGTOP(data["Open"],data["High"],data["Low"],data["Close"])
    data["Short Line Candle"]= ta.CDLSHORTLINE(data["Open"],data["High"],data["Low"],data["Close"])
    data["Shooting Star"]= ta.CDLSHOOTINGSTAR(data["Open"],data["High"],data["Low"],data["Close"])
    data["Separating Lines"]= ta.CDLSEPARATINGLINES(data["Open"],data["High"],data["Low"],data["Close"])
    data["Rising/Falling Three Methods"]= ta.CDLRISEFALL3METHODS(data["Open"],data["High"],data["Low"],data["Close"])
    data["Rickshaw Man"]= ta.CDLRICKSHAWMAN(data["Open"],data["High"],data["Low"],data["Close"])
    data["Piercing Pattern"]= ta.CDLPIERCING(data["Open"],data["High"],data["Low"],data["Close"])
    data["On-Neck Pattern"]= ta.CDLONNECK(data["Open"],data["High"],data["Low"],data["Close"])
    data["Morning Star"]= ta.CDLMORNINGSTAR(data["Open"],data["High"],data["Low"],data["Close"])
    data["Morning Doji Star"]= ta.CDLMORNINGDOJISTAR(data["Open"],data["High"],data["Low"],data["Close"])
    data["Mat Hold"]= ta.CDLMATHOLD(data["Open"],data["High"],data["Low"],data["Close"])
    data["Matching Low"]= ta.CDLMATCHINGLOW(data["Open"],data["High"],data["Low"],data["Close"])
    data["Marubozu"]= ta.CDLMARUBOZU(data["Open"],data["High"],data["Low"],data["Close"])
    data["Long Line Candle"]= ta.CDLLONGLINE(data["Open"],data["High"],data["Low"],data["Close"])
    data["Long Legged Doji"]= ta.CDLLONGLEGGEDDOJI(data["Open"],data["High"],data["Low"],data["Close"])
    data["Ladder Bottom"]= ta.CDLLADDERBOTTOM(data["Open"],data["High"],data["Low"],data["Close"])
    data["Kicking - bull/bear determined by the longer marubozu"]= ta.CDLKICKINGBYLENGTH(data["Open"],data["High"],data["Low"],data["Close"])
    data["Kicking"]= ta.CDLKICKING(data["Open"],data["High"],data["Low"],data["Close"])
    data["Inverted Hammer"]= ta.CDLINVERTEDHAMMER(data["Open"],data["High"],data["Low"],data["Close"])
    data["Identical Three Crows"]= ta.CDLIDENTICAL3CROWS(data["Open"],data["High"],data["Low"],data["Close"])
    data["Two Crows"]=ta.CDL2CROWS(data["Open"],data["High"],data["Low"],data["Close"])
    data["Three Black Crows"]=ta.CDL3BLACKCROWS(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Three Inside Up/Down"]=ta.CDL3INSIDE(data["Open"],data["High"],data["Low"],data["Close"])
    data["Three-Line Strike"]=ta.CDL3LINESTRIKE(data["Open"],data["High"],data["Low"],data["Close"])
    data["Three Outside Up/Down"]=ta.CDL3OUTSIDE(data["Open"],data["High"],data["Low"],data["Close"])
    data["Three Stars In The South"]=ta.CDL3STARSINSOUTH(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Three Advancing White Soldiers"]=ta.CDL3WHITESOLDIERS(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Abandoned Baby"]=ta.CDLABANDONEDBABY(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Advance Block"]=ta.CDLADVANCEBLOCK(data["Open"],data["High"],data["Low"],data["Close"]) 
    data["Belt-hold"]=ta.CDLBELTHOLD(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Breakaway"]=ta.CDLBREAKAWAY(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Closing Marubozu"]=ta.CDLCLOSINGMARUBOZU(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Concealing Baby Swallow"]=ta.CDLCONCEALBABYSWALL(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Counterattack"]=ta.CDLCOUNTERATTACK(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Dark Cloud Cover"]=ta.CDLDARKCLOUDCOVER(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Doji"]=ta.CDLDOJI(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Doji Star"]=ta.CDLDOJISTAR(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Dragonfly Doji"]=ta.CDLDRAGONFLYDOJI(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Engulfing Pattern"]=ta.CDLENGULFING(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Evening Doji Star"]=ta.CDLEVENINGDOJISTAR(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Evening Star"]=ta.CDLEVENINGSTAR(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Up/Down-gap side-by-side white lines"]=ta.CDLGAPSIDESIDEWHITE(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Gravestone Doji"]=ta.CDLGRAVESTONEDOJI(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Hammer"]=ta.CDLHAMMER(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Hanging Man"]=ta.CDLHANGINGMAN(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Harami Pattern"]=ta.CDLHARAMI(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Harami Cross Pattern"]=ta.CDLHARAMICROSS(data["Open"],data["High"],data["Low"],data["Close"])  
    data["High-Wave Candle"]=ta.CDLHIGHWAVE(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Hikkake Pattern"]=ta.CDLHIKKAKE(data["Open"],data["High"],data["Low"],data["Close"]) 
    data["Modified Hikkake Pattern"]=ta.CDLHIKKAKEMOD(data["Open"],data["High"],data["Low"],data["Close"])  
    data["Homing Pigeon"]=ta.CDLHOMINGPIGEON(data["Open"],data["High"],data["Low"],data["Close"])  
    
    return(data)
Ejemplo n.º 2
0
def CDLDOJISTAR(data, **kwargs):
    _check_talib_presence()
    popen, phigh, plow, pclose, pvolume = _extract_ohlc(data)
    return talib.CDLDOJISTAR(popen, phigh, plow, pclose, **kwargs)
Ejemplo n.º 3
0
 df['CDL3BLACKCROWS'] = talib.CDL3BLACKCROWS(op, hp, lp, cp)
 df['CDL3INSIDE'] = talib.CDL3INSIDE(op, hp, lp, cp)
 df['CDL3LINESTRIKE'] = talib.CDL3LINESTRIKE(op, hp, lp, cp)
 df['CDL3OUTSIDE'] = talib.CDL3OUTSIDE(op, hp, lp, cp)
 df['CDL3STARSINSOUTH'] = talib.CDL3STARSINSOUTH(op, hp, lp, cp)
 df['CDL3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(op, hp, lp, cp)
 df['CDLABANDONEDBABY'] = talib.CDLABANDONEDBABY(op, hp, lp, cp)
 df['CDLADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(op, hp, lp, cp)
 df['CDLBELTHOLD'] = talib.CDLBELTHOLD(op, hp, lp, cp)
 df['CDLBREAKAWAY'] = talib.CDLBREAKAWAY(op, hp, lp, cp)
 df['CDLCLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(op, hp, lp, cp)
 df['CDLCONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL(op, hp, lp, cp)
 df['CDLCOUNTERATTACK'] = talib.CDLCOUNTERATTACK(op, hp, lp, cp)
 df['CDLDARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(op, hp, lp, cp)
 df['CDLDOJI'] = talib.CDLDOJI(op, hp, lp, cp)
 df['CDLDOJISTAR'] = talib.CDLDOJISTAR(op, hp, lp, cp)
 df['CDLDRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(op, hp, lp, cp)
 df['CDLENGULFING'] = talib.CDLENGULFING(op, hp, lp, cp)
 df['CDLEVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(op, hp, lp, cp)
 df['CDLEVENINGSTAR'] = talib.CDLEVENINGSTAR(op, hp, lp, cp)
 df['CDLGAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE(op, hp, lp, cp)
 df['CDLGRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(op, hp, lp, cp)
 df['CDLHAMMER'] = talib.CDLHAMMER(op, hp, lp, cp)
 df['CDLHANGINGMAN'] = talib.CDLHANGINGMAN(op, hp, lp, cp)
 df['CDLHARAMI'] = talib.CDLHARAMI(op, hp, lp, cp)
 df['CDLHARAMICROSS'] = talib.CDLHARAMICROSS(op, hp, lp, cp)
 df['CDLHIGHWAVE'] = talib.CDLHIGHWAVE(op, hp, lp, cp)
 df['CDLHIKKAKE'] = talib.CDLHIKKAKE(op, hp, lp, cp)
 df['CDLHIKKAKEMOD'] = talib.CDLHIKKAKEMOD(op, hp, lp, cp)
 df['CDLHOMINGPIGEON'] = talib.CDLHOMINGPIGEON(op, hp, lp, cp)
 df['CDLIDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(op, hp, lp, cp)
Ejemplo n.º 4
0
def patern(dataframe):
	"""
	Pattern Recognition:
	CDL2CROWS            Two Crows
	CDL3BLACKCROWS       Three Black Crows
	CDL3INSIDE           Three Inside Up/Down
	CDL3LINESTRIKE       Three-Line Strike
	CDL3OUTSIDE          Three Outside Up/Down
	CDL3STARSINSOUTH     Three Stars In The South
	CDL3WHITESOLDIERS    Three Advancing White Soldiers
	CDLABANDONEDBABY     Abandoned Baby
	CDLADVANCEBLOCK      Advance Block
	CDLBELTHOLD          Belt-hold
	CDLBREAKAWAY         Breakaway
	CDLCLOSINGMARUBOZU   Closing Marubozu
	CDLCONCEALBABYSWALL  Concealing Baby SwalLow
	CDLCOUNTERATTACK     Counterattack
	CDLDARKCLOUDCOVER    Dark Cloud Cover
	CDLDOJI              Doji
	CDLDOJISTAR          Doji Star
	CDLDRAGONFLYDOJI     Dragonfly Doji
	CDLENGULFING         Engulfing Pattern
	CDLEVENINGDOJISTAR   Evening Doji Star
	CDLEVENINGSTAR       Evening Star
	CDLGAPSIDESIDEWHITE  Up/Down-gap side-by-side white lines
	CDLGRAVESTONEDOJI    Gravestone Doji
	CDLHAMMER            Hammer
	CDLHANGINGMAN        Hanging Man
	CDLHARAMI            Harami Pattern
	CDLHARAMICROSS       Harami Cross Pattern
	CDLHighWAVE          High-Wave Candle
	CDLHIKKAKE           Hikkake Pattern
	CDLHIKKAKEMOD        Modified Hikkake Pattern
	CDLHOMINGPIGEON      Homing Pigeon
	CDLIDENTICAL3CROWS   Identical Three Crows
	CDLINNECK            In-Neck Pattern
	CDLINVERTEDHAMMER    Inverted Hammer
	CDLKICKING           Kicking
	CDLKICKINGBYLENGTH   Kicking - bull/bear determined by the longer marubozu
	CDLLADDERBOTTOM      Ladder Bottom
	CDLLONGLEGGEDDOJI    Long Legged Doji
	CDLLONGLINE          Long Line Candle
	CDLMARUBOZU          Marubozu
	CDLMATCHINGLow       Matching Low
	CDLMATHOLD           Mat Hold
	CDLMORNINGDOJISTAR   Morning Doji Star
	CDLMORNINGSTAR       Morning Star
	CDLONNECK            On-Neck Pattern
	CDLPIERCING          Piercing Pattern
	CDLRICKSHAWMAN       Rickshaw Man
	CDLRISEFALL3METHODS  Rising/Falling Three Methods
	CDLSEPARATINGLINES   Separating Lines
	CDLSHOOTINGSTAR      Shooting Star
	CDLSHORTLINE         Short Line Candle
	CDLSPINNINGTOP       Spinning Top
	CDLSTALLEDPATTERN    Stalled Pattern
	CDLSTICKSANDWICH     Stick Sandwich
	CDLTAKURI            Takuri (Dragonfly Doji with very long Lower shadow)
	CDLTASUKIGAP         Tasuki Gap
	CDLTHRUSTING         Thrusting Pattern
	CDLTRISTAR           Tristar Pattern
	CDLUNIQUE3RIVER      Unique 3 River
	CDLUPSIDEGAP2CROWS   Upside Gap Two Crows
	CDLXSIDEGAP3METHODS  Upside/Downside Gap Three Methods

	"""

	#CDL2CROWS - Two Crows
	df[f'{ratio}_CDL2CROWS'] = talib.CDL2CROWS(Open,High, Low, Close)
	#CDL2CROWS - Three Black Crows
	df[f'{ratio}_CDL2CROWS'] = talib.CDL3BLACKCROWS(Open,High, Low, Close)
	#CDL3INSIDE - Three Inside Up/Down
	df[f'{ratio}_CDL3INSIDE'] = talib.CDL3INSIDE(Open,High, Low, Close)
	#CDL3LINESTRIKE - Three-Line Strike
	df[f'{ratio}_CDL3LINESTRIKE'] = talib.CDL3LINESTRIKE(Open,High, Low, Close)
	#CDL3OUTSIDE - Three Outside Up/Down
	df[f'{ratio}_CDL3OUTSIDE'] = talib.CDL3OUTSIDE(Open,High, Low, Close)
	#CDL3STARSINSOUTH - Three Stars In The South
	df[f'{ratio}_CDL3STARSINSOUTH'] = talib.CDL3STARSINSOUTH(Open,High, Low, Close)
	#CDL3WHITESOLDIERS - Three Advancing White Soldiers
	df[f'{ratio}_CDL3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(Open,High, Low, Close)
	#CDLABANDONEDBABY - Abandoned Baby
	df[f'{ratio}_CDLABANDONEDBABY'] = talib.CDLABANDONEDBABY(Open,High, Low, Close, penetration=0)
	#CDLADVANCEBLOCK - Advance Block
	df[f'{ratio}_CDLADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(Open,High, Low, Close)
	#CDLBELTHOLD - Belt-hold
	df[f'{ratio}_CDLBELTHOLD'] = talib.CDLBELTHOLD(Open,High, Low, Close)
	#CDLBREAKAWAY - Breakaway
	df[f'{ratio}_CDLBREAKAWAY'] = talib.CDLBREAKAWAY(Open,High, Low, Close)
	#CDLCLOSINGMARUBOZU - Closing Marubozu
	df[f'{ratio}_CDLCLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(Open,High, Low, Close)
	#CDLCONCEALBABYSWALL - Concealing Baby SwalLow
	df[f'{ratio}_CDLCLOSINGMARUBOZU'] = talib.CDLCONCEALBABYSWALL(Open,High, Low, Close)
	#CDLCOUNTERATTACK - Counterattack
	df[f'{ratio}_CDLCLOSINGMARUBOZU'] = talib.CDLCOUNTERATTACK(Open,High, Low, Close)
	#CDLDARKCLOUDCOVER - Dark Cloud Cover
	df[f'{ratio}_CDLCLOSINGMARUBOZU'] = talib.CDLDARKCLOUDCOVER(Open,High, Low, Close, penetration=0)
	#CDLDOJI - Doji
	df[f'{ratio}_CDLDOJI'] = talib.CDLDOJI(Open,High, Low, Close)
	#CDLDOJISTAR - Doji Star
	df[f'{ratio}_CDLDOJISTAR'] = talib.CDLDOJISTAR(Open,High, Low, Close)
	#CDLDRAGONFLYDOJI - Dragonfly Doji
	df[f'{ratio}_CDLDRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(Open,High, Low, Close)
	#CDLENGULFING - Engulfing Pattern
	df[f'{ratio}_CDLENGULFING'] = talib.CDLENGULFING(Open,High, Low, Close)
	#CDLEVENINGDOJISTAR - Evening Doji Star
	df[f'{ratio}_CDLEVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(Open,High, Low, Close, penetration=0)
	#CDLEVENINGSTAR - Evening Star
	df[f'{ratio}_CDLEVENINGSTAR'] = talib.CDLEVENINGSTAR(Open,High, Low, Close, penetration=0)
	#CDLGAPSIDESIDEWHITE - Up/Down-gap side-by-side white lines
	df[f'{ratio}_CDLEVENINGSTAR'] = talib.CDLGAPSIDESIDEWHITE(Open,High, Low, Close)
	#CDLGRAVESTONEDOJI - Gravestone Doji
	df[f'{ratio}_CDLGRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(Open,High, Low, Close)
	#CDLHAMMER - Hammer
	df[f'{ratio}_CDLGRAVESTONEDOJI'] = talib.CDLHAMMER(Open,High, Low, Close)
	#CDLHANGINGMAN - Hanging Man
	df[f'{ratio}_CDLGRAVESTONEDOJI'] = talib.CDLHANGINGMAN(Open,High, Low, Close)
	#CDLHARAMI - Harami Pattern
	df[f'{ratio}_CDLGRAVESTONEDOJI'] = talib.CDLHARAMI(Open,High, Low, Close)
	#CDLHARAMICROSS - Harami Cross Pattern
	df[f'{ratio}_CDLHARAMICROSS'] = talib.CDLHARAMICROSS(Open,High, Low, Close)
	#CDLHighWAVE -High-Wave Candle
	#df[f'{ratio}_CDLHighWAVE'] = talib.CDLHighWAVE(Open,High, Low, Close)
	#CDLHIKKAKE - Hikkake Pattern
	df[f'{ratio}_CDLHIKKAKE'] = talib.CDLHIKKAKE(Open,High, Low, Close)
	#CDLHIKKAKEMOD - Modified Hikkake Pattern
	df[f'{ratio}_CDLHIKKAKEMOD'] = talib.CDLHIKKAKEMOD(Open,High, Low, Close)
	#CDLHOMINGPIGEON - Homing Pigeon
	df[f'{ratio}_CDLHOMINGPIGEON'] = talib.CDLHOMINGPIGEON(Open,High, Low, Close)
	#CDLIDENTICAL3CROWS - Identical Three Crows
	df[f'{ratio}_CDLIDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(Open,High, Low, Close)
	#CDLINNECK - In-Neck Pattern
	df[f'{ratio}_CDLINNECK'] = talib.CDLINNECK(Open,High, Low, Close)
	#CDLINVERTEDHAMMER - Inverted Hammer
	df[f'{ratio}_CDLINVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(Open,High, Low, Close)
	#CDLKICKING - Kicking
	df[f'{ratio}_CDLKICKING'] = talib.CDLKICKING(Open,High, Low, Close)
	#CDLKICKINGBYLENGTH - Kicking - bull/bear determined by the longer marubozu
	df[f'{ratio}_CDLKICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH(Open,High, Low, Close)
	#CDLLADDERBOTTOM - Ladder Bottom
	df[f'{ratio}_CDLLADDERBOTTOM'] = talib.CDLLADDERBOTTOM(Open,High, Low, Close)
	#CDLLONGLEGGEDDOJI - Long Legged Doji
	df[f'{ratio}_CDLLONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(Open,High, Low, Close)
	#CDLLONGLINE - Long Line Candle
	df[f'{ratio}_CDLLONGLINE'] = talib.CDLLONGLINE(Open,High, Low, Close)
	#CDLMARUBOZU - Marubozu
	df[f'{ratio}_DLMARUBOZU'] = talib.CDLMARUBOZU(Open,High, Low, Close)
	#CDLMATCHINGLow - Matching Low
	#df[f'{ratio}_CDLMATCHINGLow'] = talib.CDLMATCHINGLow(Open,High, Low, Close)
	#CDLMATHOLD - Mat Hold
	df[f'{ratio}_CDLMATHOLD'] = talib.CDLMATHOLD(Open,High, Low, Close, penetration=0)
	#CDLMORNINGDOJISTAR - Morning Doji Star
	df[f'{ratio}_CDLMORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(Open,High, Low, Close, penetration=0)
	#CDLMORNINGSTAR - Morning Star
	df[f'{ratio}_CDLMORNINGSTAR'] = talib.CDLMORNINGSTAR(Open,High, Low, Close, penetration=0)
	#CDLONNECK - On-Neck Pattern
	df[f'{ratio}_CDLONNECK'] = talib.CDLONNECK(Open,High, Low, Close)
	#CDLPIERCING - Piercing Pattern
	df[f'{ratio}_CDLPIERCING'] = talib.CDLPIERCING(Open,High, Low, Close)
	#CDLRICKSHAWMAN - Rickshaw Man
	df[f'{ratio}_CDLRICKSHAWMAN'] = talib.CDLRICKSHAWMAN(Open,High, Low, Close)
	#CDLRISEFALL3METHODS - Rising/Falling Three Methods
	df[f'{ratio}_CDLRISEFALL3METHODS'] = talib.CDLRISEFALL3METHODS(Open,High, Low, Close)
	#CDLSEPARATINGLINES - Separating Lines
	df[f'{ratio}_CDLSEPARATINGLINES'] = talib.CDLSEPARATINGLINES(Open,High, Low, Close)
	#CDLSHOOTINGSTAR - Shooting Star
	df[f'{ratio}_CDLSHOOTINGSTAR'] = talib.CDLSHOOTINGSTAR(Open,High, Low, Close)
	#CDLSHORTLINE - Short Line Candle
	df[f'{ratio}_CDLSHORTLINE'] = talib.CDLSHORTLINE(Open,High, Low, Close)
	#CDLSPINNINGTOP - Spinning Top
	df[f'{ratio}_CDLSPINNINGTOP'] = talib.CDLSPINNINGTOP(Open,High, Low, Close)
	#CDLSTALLEDPATTERN - Stalled Pattern
	df[f'{ratio}_CDLSTALLEDPATTERN'] = talib.CDLSTALLEDPATTERN(Open,High, Low, Close)
	#CDLSTICKSANDWICH - Stick Sandwich
	df[f'{ratio}_CDLSTICKSANDWICH'] = talib.CDLSTICKSANDWICH(Open,High, Low, Close)
	#CDLTAKURI - Takuri (Dragonfly Doji with very long Lower shadow)
	df[f'{ratio}_CDLTAKURI'] = talib.CDLTAKURI(Open,High, Low, Close)
	#CDLTASUKIGAP - Tasuki Gap
	df[f'{ratio}_CDLTASUKIGAP'] = talib.CDLTASUKIGAP(Open,High, Low, Close)
	#CDLTHRUSTING - Thrusting Pattern
	df[f'{ratio}_CDLTHRUSTING'] = talib.CDLTHRUSTING(Open,High, Low, Close)
	#CDLTRISTAR - Tristar Pattern
	df[f'{ratio}_CDLTRISTAR'] = talib.CDLTRISTAR(Open,High, Low, Close)
	#CDLUNIQUE3RIVER - Unique 3 River
	df[f'{ratio}_CDLUNIQUE3RIVER'] = talib.CDLUNIQUE3RIVER(Open,High, Low, Close)
	#CDLUPSIDEGAP2CROWS - Upside Gap Two Crows
	df[f'{ratio}_CDLUPSIDEGAP2CROWS'] = talib.CDLUPSIDEGAP2CROWS(Open,High, Low, Close)
	#CDLXSIDEGAP3METHODS - Upside/Downside Gap Three Methods
	df[f'{ratio}_CDLXSIDEGAP3METHODS'] = talib.CDLXSIDEGAP3METHODS(Open,High, Low, Close)

	return patern
Ejemplo n.º 5
0
 ohlc_df['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLDOJI'] = ta.CDLDOJI(ohlc_df['open'], ohlc_df['high'],
                                 ohlc_df['low'], ohlc_df['close'])
 ohlc_df['CDLDOJISTAR'] = ta.CDLDOJISTAR(ohlc_df['open'],
                                         ohlc_df['high'],
                                         ohlc_df['low'],
                                         ohlc_df['close'])
 ohlc_df['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLENGULFING'] = ta.CDLENGULFING(ohlc_df['open'],
                                           ohlc_df['high'],
                                           ohlc_df['low'],
                                           ohlc_df['close'])
 ohlc_df['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(
     ohlc_df['open'], ohlc_df['high'], ohlc_df['low'],
     ohlc_df['close'])
 ohlc_df['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(
Ejemplo n.º 6
0
def technical(df):
    open = df['open'].values
    close = df['close'].values
    high = df['high'].values
    low = df['low'].values
    volume = df['volume'].values
    # define the technical analysis matrix
    retn = np.array([
        tb.MA(close, timeperiod=60),  # 1
        tb.MA(close, timeperiod=120),  # 2
        tb.ADX(high, low, close, timeperiod=14),  # 3
        tb.ADXR(high, low, close, timeperiod=14),  # 4
        tb.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)[0],  # 5
        tb.RSI(close, timeperiod=14),  # 6
        tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[0],  # 7
        tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[1],  # 8
        tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[2],  # 9
        tb.AD(high, low, close, volume),  # 10
        tb.ATR(high, low, close, timeperiod=14),  # 11
        tb.HT_DCPERIOD(close),  # 12
        tb.CDL2CROWS(open, high, low, close),  # 13
        tb.CDL3BLACKCROWS(open, high, low, close),  # 14
        tb.CDL3INSIDE(open, high, low, close),  # 15
        tb.CDL3LINESTRIKE(open, high, low, close),  # 16
        tb.CDL3OUTSIDE(open, high, low, close),  # 17
        tb.CDL3STARSINSOUTH(open, high, low, close),  # 18
        tb.CDL3WHITESOLDIERS(open, high, low, close),  # 19
        tb.CDLABANDONEDBABY(open, high, low, close, penetration=0),  # 20
        tb.CDLADVANCEBLOCK(open, high, low, close),  # 21
        tb.CDLBELTHOLD(open, high, low, close),  # 22
        tb.CDLBREAKAWAY(open, high, low, close),  # 23
        tb.CDLCLOSINGMARUBOZU(open, high, low, close),  # 24
        tb.CDLCONCEALBABYSWALL(open, high, low, close),  # 25
        tb.CDLCOUNTERATTACK(open, high, low, close),  # 26
        tb.CDLDARKCLOUDCOVER(open, high, low, close, penetration=0),  # 27
        tb.CDLDOJI(open, high, low, close),  # 28
        tb.CDLDOJISTAR(open, high, low, close),  # 29
        tb.CDLDRAGONFLYDOJI(open, high, low, close),  # 30
        tb.CDLENGULFING(open, high, low, close),  # 31
        tb.CDLEVENINGDOJISTAR(open, high, low, close, penetration=0),  # 32
        tb.CDLEVENINGSTAR(open, high, low, close, penetration=0),  # 33
        tb.CDLGAPSIDESIDEWHITE(open, high, low, close),  # 34
        tb.CDLGRAVESTONEDOJI(open, high, low, close),  # 35
        tb.CDLHAMMER(open, high, low, close),  # 36
        tb.CDLHANGINGMAN(open, high, low, close),  # 37
        tb.CDLHARAMI(open, high, low, close),  # 38
        tb.CDLHARAMICROSS(open, high, low, close),  # 39
        tb.CDLHIGHWAVE(open, high, low, close),  # 40
        tb.CDLHIKKAKE(open, high, low, close),  # 41
        tb.CDLHIKKAKEMOD(open, high, low, close),  # 42
        tb.CDLHOMINGPIGEON(open, high, low, close),  # 43
        tb.CDLIDENTICAL3CROWS(open, high, low, close),  # 44
        tb.CDLINNECK(open, high, low, close),  # 45
        tb.CDLINVERTEDHAMMER(open, high, low, close),  # 46
        tb.CDLKICKING(open, high, low, close),  # 47
        tb.CDLKICKINGBYLENGTH(open, high, low, close),  # 48
        tb.CDLLADDERBOTTOM(open, high, low, close),  # 49
        tb.CDLLONGLEGGEDDOJI(open, high, low, close),  # 50
        tb.CDLLONGLINE(open, high, low, close),  # 51
        tb.CDLMARUBOZU(open, high, low, close),  # 52
        tb.CDLMATCHINGLOW(open, high, low, close),  # 53
        tb.CDLMATHOLD(open, high, low, close, penetration=0),  # 54
        tb.CDLMORNINGDOJISTAR(open, high, low, close, penetration=0),  # 55
        tb.CDLMORNINGSTAR(open, high, low, close, penetration=0),  # 56
        tb.CDLONNECK(open, high, low, close),  # 57
        tb.CDLPIERCING(open, high, low, close),  # 58
        tb.CDLRICKSHAWMAN(open, high, low, close),  # 59
        tb.CDLRISEFALL3METHODS(open, high, low, close),  # 60
        tb.CDLSEPARATINGLINES(open, high, low, close),  # 61
        tb.CDLSHOOTINGSTAR(open, high, low, close),  # 62
        tb.CDLSHORTLINE(open, high, low, close),  # 63
        tb.CDLSPINNINGTOP(open, high, low, close),  # 64
        tb.CDLSTALLEDPATTERN(open, high, low, close),  # 65
        tb.CDLSTICKSANDWICH(open, high, low, close),  # 66
        tb.CDLTAKURI(open, high, low, close),  # 67
        tb.CDLTASUKIGAP(open, high, low, close),  # 68
        tb.CDLTHRUSTING(open, high, low, close),  # 69
        tb.CDLTRISTAR(open, high, low, close),  # 70
        tb.CDLUNIQUE3RIVER(open, high, low, close),  # 71
        tb.CDLUPSIDEGAP2CROWS(open, high, low, close),  # 72
        tb.CDLXSIDEGAP3METHODS(open, high, low, close)  # 73
    ]).T
    return retn
Ejemplo n.º 7
0
def pattern_recognition(candles: np.ndarray, pattern_type: str, penetration: int = 0, sequential: bool = False) -> \
        Union[int, np.ndarray]:
    """
    Pattern Recognition

    :param candles: np.ndarray
    :param penetration: int - default = 0
    :param pattern_type: str
    :param sequential: bool - default: False

    :return: int | np.ndarray
    """
    candles = slice_candles(candles, sequential)

    if pattern_type == "CDL2CROWS":
        res = talib.CDL2CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3BLACKCROWS":
        res = talib.CDL3BLACKCROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3INSIDE":
        res = talib.CDL3INSIDE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3LINESTRIKE":
        res = talib.CDL3LINESTRIKE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3OUTSIDE":
        res = talib.CDL3OUTSIDE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3STARSINSOUTH":
        res = talib.CDL3STARSINSOUTH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDL3WHITESOLDIERS":
        res = talib.CDL3WHITESOLDIERS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLABANDONEDBABY":
        res = talib.CDLABANDONEDBABY(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2],
                                     penetration=penetration)
    elif pattern_type == "CDLADVANCEBLOCK":
        res = talib.CDLADVANCEBLOCK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLBELTHOLD":
        res = talib.CDLBELTHOLD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLBREAKAWAY":
        res = talib.CDLBREAKAWAY(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLCLOSINGMARUBOZU":
        res = talib.CDLCLOSINGMARUBOZU(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLCONCEALBABYSWALL":
        res = talib.CDLCONCEALBABYSWALL(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLCOUNTERATTACK":
        res = talib.CDLCOUNTERATTACK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLDARKCLOUDCOVER":
        res = talib.CDLDARKCLOUDCOVER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2],
                                      penetration=penetration)
    elif pattern_type == "CDLDOJI":
        res = talib.CDLDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLDOJISTAR":
        res = talib.CDLDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLDRAGONFLYDOJI":
        res = talib.CDLDRAGONFLYDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLENGULFING":
        res = talib.CDLENGULFING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLEVENINGDOJISTAR":
        res = talib.CDLEVENINGDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2],
                                       penetration=penetration)
    elif pattern_type == "CDLEVENINGSTAR":
        res = talib.CDLEVENINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration)
    elif pattern_type == "CDLGAPSIDESIDEWHITE":
        res = talib.CDLGAPSIDESIDEWHITE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLGRAVESTONEDOJI":
        res = talib.CDLGRAVESTONEDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHAMMER":
        res = talib.CDLHAMMER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHANGINGMAN":
        res = talib.CDLHANGINGMAN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHARAMI":
        res = talib.CDLHARAMI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHARAMICROSS":
        res = talib.CDLHARAMICROSS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHIGHWAVE":
        res = talib.CDLHIGHWAVE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHIKKAKE":
        res = talib.CDLHIKKAKE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHIKKAKEMOD":
        res = talib.CDLHIKKAKEMOD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLHOMINGPIGEON":
        res = talib.CDLHOMINGPIGEON(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLIDENTICAL3CROWS":
        res = talib.CDLIDENTICAL3CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLINNECK":
        res = talib.CDLINNECK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLINVERTEDHAMMER":
        res = talib.CDLINVERTEDHAMMER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLKICKING":
        res = talib.CDLKICKING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLKICKINGBYLENGTH":
        res = talib.CDLKICKINGBYLENGTH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLLADDERBOTTOM":
        res = talib.CDLLADDERBOTTOM(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLLONGLEGGEDDOJI":
        res = talib.CDLLONGLEGGEDDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLLONGLINE":
        res = talib.CDLLONGLINE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLMARUBOZU":
        res = talib.CDLMARUBOZU(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLMATCHINGLOW":
        res = talib.CDLMATCHINGLOW(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLMATHOLD":
        res = talib.CDLMATHOLD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration)
    elif pattern_type == "CDLMORNINGDOJISTAR":
        res = talib.CDLMORNINGDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2],
                                       penetration=penetration)
    elif pattern_type == "CDLMORNINGSTAR":
        res = talib.CDLMORNINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration)
    elif pattern_type == "CDLONNECK":
        res = talib.CDLONNECK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLPIERCING":
        res = talib.CDLPIERCING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLRICKSHAWMAN":
        res = talib.CDLRICKSHAWMAN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLRISEFALL3METHODS":
        res = talib.CDLRISEFALL3METHODS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSEPARATINGLINES":
        res = talib.CDLSEPARATINGLINES(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSHOOTINGSTAR":
        res = talib.CDLSHOOTINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSHORTLINE":
        res = talib.CDLSHORTLINE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSPINNINGTOP":
        res = talib.CDLSPINNINGTOP(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSTALLEDPATTERN":
        res = talib.CDLSTALLEDPATTERN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLSTICKSANDWICH":
        res = talib.CDLSTICKSANDWICH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLTAKURI":
        res = talib.CDLTAKURI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLTASUKIGAP":
        res = talib.CDLTASUKIGAP(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLTHRUSTING":
        res = talib.CDLTHRUSTING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLTRISTAR":
        res = talib.CDLTRISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLUNIQUE3RIVER":
        res = talib.CDLUNIQUE3RIVER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLUPSIDEGAP2CROWS":
        res = talib.CDLUPSIDEGAP2CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    elif pattern_type == "CDLXSIDEGAP3METHODS":
        res = talib.CDLXSIDEGAP3METHODS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2])
    else:
        raise ValueError('pattern type string not recognised')

    return res / 100 if sequential else res[-1] / 100
        #CDLCOUNTERATTACK - Counterattack
        cdlcounterattack = ta.CDLCOUNTERATTACK(openp, high, low, close)

        #CDLDARKCLOUDCOVER - Dark Cloud Cover
        cdldarkcloudcover = ta.CDLDARKCLOUDCOVER(openp,
                                                 high,
                                                 low,
                                                 close,
                                                 penetration=0)

        #CDLDOJI - Doji
        cdldoji = ta.CDLDOJI(openp, high, low, close)

        #CDLDOJISTAR - Doji Star
        cdldojistar = ta.CDLDOJISTAR(openp, high, low, close)

        #CDLDRAGONFLYDOJI - Dragonfly Doji
        cdldragonflydoji = ta.CDLDRAGONFLYDOJI(openp, high, low, close)

        #CDLENGULFING - Engulfing Pattern
        cdlengulfing = ta.CDLENGULFING(openp, high, low, close)

        #CDLEVENINGDOJISTAR - Evening Doji Star
        cdeveningdojistar = ta.CDLEVENINGDOJISTAR(openp,
                                                  high,
                                                  low,
                                                  close,
                                                  penetration=0)

        #CDLEVENINGSTAR - Evening Star
Ejemplo n.º 9
0
def data_construct(DataFrame, lookUp, predictionWindow, pairName):
    '''function to construct the features from the inspection window and to create the supervised x,y pairs for training.

    Parameters
    ----------
    DataFrame : dataFrame
    LookUp : int
    predictionWindow : int
    pairName : str

    Returns
    -------
    output : dict
        a dict containing inputs matrix, targets matrix, raw inputs and mapping dict for features

    '''
    # fetch data for indicators calculations
    openPrice = DataFrame.o.values.astype("double")
    closePrice = DataFrame.c.values.astype("double")
    highPrice = DataFrame.h.values.astype("double")
    lowPrice = DataFrame.l.values.astype("double")
    volume = DataFrame.volume.values.astype("double")

    # calculate technical indicators values
    simple_ma_slow = ta.SMA(closePrice, 30)  # slow moving average
    simple_ma_fast = ta.SMA(closePrice, 15)  # fast moving average
    exp_ma_slow = ta.EMA(closePrice, 20)  # slow exp moving average
    exp_ma_fast = ta.EMA(closePrice, 10)  # fast exp moving average
    bbands = ta.BBANDS(closePrice, timeperiod=15)  # calculate bollinger bands
    deltaBands = (bbands[0] - bbands[2]
                  ) / bbands[2]  # deltas between bands vector (bollinger)
    macd_s1, macd_s2, macd_hist = ta.MACD(
        closePrice)  # MACD values calculation
    sar = ta.SAR(highPrice, lowPrice)  # prabolic SAR
    stochK, stochD = ta.STOCH(highPrice, lowPrice,
                              closePrice)  # stochastic calculations
    rsi = ta.RSI(closePrice, timeperiod=15)  # RSI indicator
    adx = ta.ADX(highPrice, lowPrice, closePrice,
                 timeperiod=15)  # ADX indicator
    mfi = ta.MFI(highPrice, lowPrice, closePrice, volume,
                 timeperiod=15)  # money flow index

    # calculate statistical indicators values
    beta = ta.BETA(highPrice, lowPrice, timeperiod=5)  # beta from CAPM model
    slope = ta.LINEARREG_ANGLE(
        closePrice,
        timeperiod=5)  # slope for fitting linera reg. to the last x points

    # calculate candle indicators values
    spinTop = ta.CDLSPINNINGTOP(openPrice, highPrice, lowPrice, closePrice)
    doji = ta.CDLDOJI(openPrice, highPrice, lowPrice, closePrice)
    dojiStar = ta.CDLDOJISTAR(openPrice, highPrice, lowPrice, closePrice)
    marubozu = ta.CDLMARUBOZU(openPrice, highPrice, lowPrice, closePrice)
    hammer = ta.CDLHAMMER(openPrice, highPrice, lowPrice, closePrice)
    invHammer = ta.CDLINVERTEDHAMMER(openPrice, highPrice, lowPrice,
                                     closePrice)
    hangingMan = ta.CDLHANGINGMAN(openPrice, highPrice, lowPrice, closePrice)
    shootingStar = ta.CDLSHOOTINGSTAR(openPrice, highPrice, lowPrice,
                                      closePrice)
    engulfing = ta.CDLENGULFING(openPrice, highPrice, lowPrice, closePrice)
    morningStar = ta.CDLMORNINGSTAR(openPrice, highPrice, lowPrice, closePrice)
    eveningStar = ta.CDLEVENINGSTAR(openPrice, highPrice, lowPrice, closePrice)
    whiteSoldier = ta.CDL3WHITESOLDIERS(openPrice, highPrice, lowPrice,
                                        closePrice)
    blackCrow = ta.CDL3BLACKCROWS(openPrice, highPrice, lowPrice, closePrice)
    insideThree = ta.CDL3INSIDE(openPrice, highPrice, lowPrice, closePrice)

    # prepare the final matrix
    '''
    matrix configurations ::> [o,c,h,l,ma_slow,ma_fast,exp_slow,exp_fast,
                           deltaBands,macd_s1,macd_s2,sar,stochK,
                           stochD,rsi,adx,mfi,beta,slope,spinTop,doji,dojiStar,
                           marubozu,hammer,invHammer,hangingMan,shootingStar,engulfing,
                           morningStar,eveningStar,whiteSoldier,blackCrow,insideThree]
    a 33 features matrix in total
    '''
    DataMatrix = np.column_stack(
        (openPrice, closePrice, highPrice, lowPrice, simple_ma_slow,
         simple_ma_fast, exp_ma_slow, exp_ma_fast, deltaBands, macd_s1,
         macd_s2, sar, stochK, stochD, rsi, adx, mfi, beta, slope, spinTop,
         doji, dojiStar, marubozu, hammer, invHammer, hangingMan, shootingStar,
         engulfing, morningStar, eveningStar, whiteSoldier, blackCrow,
         insideThree))

    # remove undifined values
    DataMatrix = DataMatrix[~np.isnan(DataMatrix).any(
        axis=1)]  # remove all raws containing nan values

    # define number of windows to analyze
    framesCount = DataMatrix.shape[0] - (
        lookUp +
        predictionWindow) + 1  # 1D convolution outputsize = ceil[((n-f)/s)+1]

    # define input/output arrays container
    rawInputs = {}
    inputsOpen = np.zeros((framesCount, lookUp))
    inputsClose = np.zeros((framesCount, lookUp))
    inputsHigh = np.zeros((framesCount, lookUp))
    inputsLow = np.zeros((framesCount, lookUp))
    inputs = np.zeros((framesCount, 62))
    outputs = np.zeros((framesCount, 1))

    # main loop and data
    for i in range(framesCount):
        mainFrame = DataMatrix[i:i + lookUp + predictionWindow, :]
        window = np.array_split(mainFrame, [lookUp])[0]
        windowForecast = np.array_split(mainFrame, [lookUp])[1]
        '''
        window configurations ::>
        [0:o,1:c,2:h,3:l,4:ma_slow,5:ma_fast,6:exp_slow,7:exp_fast,
         8:deltaBands,9:macd_slow,10:macd_fast,11:sar,12:stochK,
         13:stochD,14:rsi,15:adx,16:mfi,17:beta,18:slope,19:spinTop,20:doji,21:dojiStar,
         22:marubozu,23:hammer,24:invHammer,25:hangingMan,26:shootingStar,27:engulfing,
         28:morningStar,29:eveningStar,30:whiteSoldier,31:blackCrow,32:insideThree]
        '''

        #sma features detection
        ma_slow = window[:, 4]
        ma_fast = window[:, 5]
        uptrend_cross = ma_fast > ma_slow
        uptrend_cross = np.concatenate(
            (np.array([False]),
             (uptrend_cross[:-1] <
              uptrend_cross[1:])))  # check the false->true transition
        try:
            uptrend_cross_location = np.where(uptrend_cross == True)[0][
                -1]  # latest uptrend cross_over location
        except:
            uptrend_cross_location = -1
        downtrend_cross = ma_slow > ma_fast
        downtrend_cross = np.concatenate(
            (np.array([False]),
             (downtrend_cross[:-1] <
              downtrend_cross[1:])))  # check the false->true transition
        try:
            downtrend_cross_location = np.where(downtrend_cross == True)[0][
                -1]  # latest downtrend cross_over location
        except:
            downtrend_cross_location = -1
        if (uptrend_cross_location >
                downtrend_cross_location):  # latest cross is an uptrend
            sma_latest_crossover = 1  # uptrend sign
            sma_location_of_latest_crossover = uptrend_cross_location
            alpha_1 = (math.atan(ma_slow[uptrend_cross_location] -
                                 ma_slow[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(ma_fast[uptrend_cross_location] -
                                 ma_fast[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            sma_latest_crossover_angle = alpha_1 + alpha_2
        elif (downtrend_cross_location >
              uptrend_cross_location):  # latest cross is a downtrend
            sma_latest_crossover = -1  # downtrend sign
            sma_location_of_latest_crossover = downtrend_cross_location
            alpha_1 = (math.atan(ma_slow[downtrend_cross_location] -
                                 ma_slow[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(ma_fast[downtrend_cross_location] -
                                 ma_fast[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            sma_latest_crossover_angle = alpha_1 + alpha_2
        else:  # no cross in the given window
            sma_latest_crossover = 0  # no sign
            sma_location_of_latest_crossover = -1
            sma_latest_crossover_angle = 0
        up_count = np.sum(ma_fast > ma_slow)
        down_count = np.sum(ma_slow > ma_fast)
        if (up_count > down_count):
            sma_dominant_type_fast_slow = 1
        elif (down_count > up_count):
            sma_dominant_type_fast_slow = -1
        else:
            sma_dominant_type_fast_slow = 0

        #ema features detection
        exp_slow = window[:, 6]
        exp_fast = window[:, 7]
        uptrend_cross = exp_fast > exp_slow
        uptrend_cross = np.concatenate(
            (np.array([False]),
             (uptrend_cross[:-1] <
              uptrend_cross[1:])))  # check the false->true transition
        try:
            uptrend_cross_location = np.where(uptrend_cross == True)[0][
                -1]  # latest uptrend cross_over location
        except:
            uptrend_cross_location = -1
        downtrend_cross = exp_slow > exp_fast
        downtrend_cross = np.concatenate(
            (np.array([False]),
             (downtrend_cross[:-1] <
              downtrend_cross[1:])))  # check the false->true transition
        try:
            downtrend_cross_location = np.where(downtrend_cross == True)[0][
                -1]  # latest downtrend cross_over location
        except:
            downtrend_cross_location = -1
        if (uptrend_cross_location >
                downtrend_cross_location):  # latest cross is an uptrend
            ema_latest_crossover = 1  # uptrend sign
            ema_location_of_latest_crossover = uptrend_cross_location
            alpha_1 = (math.atan(exp_slow[uptrend_cross_location] -
                                 exp_slow[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(exp_fast[uptrend_cross_location] -
                                 exp_fast[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            ema_latest_crossover_angle = alpha_1 + alpha_2
        elif (downtrend_cross_location >
              uptrend_cross_location):  # latest cross is a downtrend
            ema_latest_crossover = -1  # downtrend sign
            ema_location_of_latest_crossover = downtrend_cross_location
            alpha_1 = (math.atan(exp_slow[downtrend_cross_location] -
                                 exp_slow[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(exp_fast[downtrend_cross_location] -
                                 exp_fast[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            ema_latest_crossover_angle = alpha_1 + alpha_2
        else:  # no cross in the given window
            ema_latest_crossover = 0  # no sign
            ema_location_of_latest_crossover = -1
            ema_latest_crossover_angle = 0
        up_count = np.sum(exp_fast > exp_slow)
        down_count = np.sum(exp_slow > exp_fast)
        if (up_count > down_count):
            ema_dominant_type_fast_slow = 1
        elif (down_count > up_count):
            ema_dominant_type_fast_slow = -1
        else:
            ema_dominant_type_fast_slow = 0

        # B.Bands features detection
        deltaBands = window[:, 8]
        deltaBands_mean = np.mean(deltaBands)
        deltaBands_std = np.std(deltaBands)
        deltaBands_maximum_mean = np.amax(deltaBands) / deltaBands_mean
        deltaBands_maximum_location = np.where(
            deltaBands == np.amax(deltaBands))[0][-1]  # location of maximum
        deltaBands_minimum_mean = np.amin(deltaBands) / deltaBands_mean
        deltaBands_minimum_location = np.where(
            deltaBands == np.amin(deltaBands))[0][-1]  # location of maximum

        # macd features detection
        macd_slow = window[:, 9]
        macd_fast = window[:, 10]
        uptrend_cross = macd_fast > macd_slow
        uptrend_cross = np.concatenate(
            (np.array([False]),
             (uptrend_cross[:-1] <
              uptrend_cross[1:])))  # check the false->true transition
        try:
            uptrend_cross_location = np.where(uptrend_cross == True)[0][
                -1]  # latest uptrend cross_over location
        except:
            uptrend_cross_location = -1
        downtrend_cross = macd_slow > macd_fast
        downtrend_cross = np.concatenate(
            (np.array([False]),
             (downtrend_cross[:-1] <
              downtrend_cross[1:])))  # check the false->true transition
        try:
            downtrend_cross_location = np.where(downtrend_cross == True)[0][
                -1]  # latest downtrend cross_over location
        except:
            downtrend_cross_location = -1
        if (uptrend_cross_location >
                downtrend_cross_location):  # latest cross is an uptrend
            macd_latest_crossover = 1  # uptrend sign
            macd_location_of_latest_crossover = uptrend_cross_location
            alpha_1 = (math.atan(macd_slow[uptrend_cross_location] -
                                 macd_slow[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(macd_fast[uptrend_cross_location] -
                                 macd_fast[uptrend_cross_location - 1])) * (
                                     180 / math.pi)
            macd_latest_crossover_angle = alpha_1 + alpha_2
        elif (downtrend_cross_location >
              uptrend_cross_location):  # latest cross is a downtrend
            macd_latest_crossover = -1  # downtrend sign
            macd_location_of_latest_crossover = downtrend_cross_location
            alpha_1 = (math.atan(macd_slow[downtrend_cross_location] -
                                 macd_slow[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            alpha_2 = (math.atan(macd_fast[downtrend_cross_location] -
                                 macd_fast[downtrend_cross_location - 1])) * (
                                     180 / math.pi)
            macd_latest_crossover_angle = alpha_1 + alpha_2
        else:  # no cross in the given window
            macd_latest_crossover = 0  # no sign
            macd_location_of_latest_crossover = -1
            macd_latest_crossover_angle = 0
        up_count = np.sum(macd_fast > macd_slow)
        down_count = np.sum(macd_slow > macd_fast)
        if (up_count > down_count):
            macd_dominant_type_fast_slow = 1
        elif (down_count > up_count):
            macd_dominant_type_fast_slow = -1
        else:
            macd_dominant_type_fast_slow = 0

        # sar features detection
        average_price = (window[:, 0] + window[:, 1] + window[:, 2] +
                         window[:, 3]) / 4
        sar = window[:, 11]
        uptrend = sar < average_price
        uptrend = np.concatenate(
            (np.array([False]),
             (uptrend[:-1] < uptrend[1:])))  # check the false->true transition
        try:
            uptrend_location = np.where(
                uptrend == True)[0][-1]  # latest uptrend location
        except:
            uptrend_location = -1
        downtrend = sar > average_price
        downtrend = np.concatenate(
            (np.array([False]),
             (downtrend[:-1] <
              downtrend[1:])))  # check the false->true transition
        try:
            downtrend_location = np.where(
                downtrend == True)[0][-1]  # latest downtrend location
        except:
            downtrend_location = -1
        if (uptrend_location >
                downtrend_location):  # latest signal is an uptrend
            sar_latest_shiftPoint = 1
            sar_latest_shiftPoint_location = uptrend_location
        elif (downtrend_location >
              uptrend_location):  # latest signal is a downtrend
            sar_latest_shiftPoint = -1
            sar_latest_shiftPoint_location = downtrend_location
        else:  # same direction along the frame under question
            sar_latest_shiftPoint = 0  # no sign
            sar_latest_shiftPoint_location = -1
        sar_total_number_shifts = np.where(
            downtrend == True)[0].shape[0] + np.where(
                uptrend == True)[0].shape[0]

        # stochastic(K) features detection
        stochK = window[:, 12]
        stochK_mean = np.mean(stochK)
        stochK_std = np.std(stochK)
        uptrend = stochK <= 20
        uptrend = np.concatenate(
            (np.array([False]),
             (uptrend[:-1] < uptrend[1:])))  # check the false->true transition
        try:
            uptrend_location = np.where(
                uptrend == True)[0][-1]  # latest uptrend location
        except:
            uptrend_location = -1
        downtrend = stochK >= 80
        downtrend = np.concatenate(
            (np.array([False]),
             (downtrend[:-1] <
              downtrend[1:])))  # check the false->true transition
        try:
            downtrend_location = np.where(
                downtrend == True)[0][-1]  # latest downtrend location
        except:
            downtrend_location = -1
        if (uptrend_location >
                downtrend_location):  # latest signal is an uptrend
            stochK_latest_event = 1
            stochK_event_location = uptrend_location
        elif (downtrend_location >
              uptrend_location):  # latest signal is a downtrend
            stochK_latest_event = -1
            stochK_event_location = downtrend_location
        else:  # same direction along the frame under question
            stochK_latest_event = 0  # no sign
            stochK_event_location = -1

        # stochastic(D) features detection
        stochD = window[:, 13]
        stochD_mean = np.mean(stochD)
        stochD_std = np.std(stochD)
        uptrend = stochD <= 20
        uptrend = np.concatenate(
            (np.array([False]),
             (uptrend[:-1] < uptrend[1:])))  # check the false->true transition
        try:
            uptrend_location = np.where(
                uptrend == True)[0][-1]  # latest uptrend location
        except:
            uptrend_location = -1
        downtrend = stochD >= 80
        downtrend = np.concatenate(
            (np.array([False]),
             (downtrend[:-1] <
              downtrend[1:])))  # check the false->true transition
        try:
            downtrend_location = np.where(
                downtrend == True)[0][-1]  # latest downtrend location
        except:
            downtrend_location = -1
        if (uptrend_location >
                downtrend_location):  # latest signal is an uptrend
            stochD_latest_event = 1
            stochD_event_location = uptrend_location
        elif (downtrend_location >
              uptrend_location):  # latest signal is a downtrend
            stochD_latest_event = -1
            stochD_event_location = downtrend_location
        else:  # same direction along the frame under question
            stochD_latest_event = 0  # no sign
            stochD_event_location = -1

        # rsi features detection
        rsi = window[:, 14]
        rsi_mean = np.mean(rsi)
        rsi_std = np.std(rsi)
        uptrend = rsi <= 30
        uptrend = np.concatenate(
            (np.array([False]),
             (uptrend[:-1] < uptrend[1:])))  # check the false->true transition
        try:
            uptrend_location = np.where(
                uptrend == True)[0][-1]  # latest uptrend location
        except:
            uptrend_location = -1
        downtrend = rsi >= 70
        downtrend = np.concatenate(
            (np.array([False]),
             (downtrend[:-1] <
              downtrend[1:])))  # check the false->true transition
        try:
            downtrend_location = np.where(
                downtrend == True)[0][-1]  # latest downtrend location
        except:
            downtrend_location = -1
        if (uptrend_location >
                downtrend_location):  # latest signal is an uptrend
            rsi_latest_event = 1
            rsi_event_location = uptrend_location
        elif (downtrend_location >
              uptrend_location):  # latest signal is a downtrend
            rsi_latest_event = -1
            rsi_event_location = downtrend_location
        else:  # same direction along the frame under question
            rsi_latest_event = 0  # no sign
            rsi_event_location = -1

        # adx features detection
        adx = window[:, 15]
        adx_mean = np.mean(adx)
        adx_std = np.std(adx)
        splitted_array = np.array_split(adx, 2)
        m0 = np.mean(splitted_array[0])
        m1 = np.mean(splitted_array[1])
        adx_mean_delta_bet_first_second_half = (m1 - m0) / m0

        # mfi features detection
        mfi = window[:, 16]
        mfi_mean = np.mean(mfi)
        mfi_std = np.std(mfi)
        splitted_array = np.array_split(mfi, 2)
        m0 = np.mean(splitted_array[0])
        m1 = np.mean(splitted_array[1])
        mfi_mean_delta_bet_first_second_half = (m1 - m0) / m0

        # resistance levels features detection
        closePrice = window[:, 1]
        resLevels = argrelextrema(closePrice, np.greater, order=4)[0]
        if (resLevels.shape[0] == 0):
            relation_r1_close = 0
            relation_r2_close = 0
            relation_r3_close = 0
        elif (resLevels.shape[0] == 1):
            relation_r1_close = (closePrice[-1] -
                                 closePrice[resLevels[-1]]) / closePrice[-1]
            relation_r2_close = 0
            relation_r3_close = 0
        elif (resLevels.shape[0] == 2):
            relation_r1_close = (closePrice[-1] -
                                 closePrice[resLevels[-1]]) / closePrice[-1]
            relation_r2_close = (closePrice[-1] -
                                 closePrice[resLevels[-2]]) / closePrice[-1]
            relation_r3_close = 0
        else:
            relation_r1_close = (closePrice[-1] -
                                 closePrice[resLevels[-1]]) / closePrice[-1]
            relation_r2_close = (closePrice[-1] -
                                 closePrice[resLevels[-2]]) / closePrice[-1]
            relation_r3_close = (closePrice[-1] -
                                 closePrice[resLevels[-3]]) / closePrice[-1]

        # support levels features detection
        closePrice = window[:, 1]
        supLevels = argrelextrema(closePrice, np.less, order=4)[0]
        if (supLevels.shape[0] == 0):
            relation_s1_close = 0
            relation_s2_close = 0
            relation_s3_close = 0
        elif (supLevels.shape[0] == 1):
            relation_s1_close = (closePrice[-1] -
                                 closePrice[supLevels[-1]]) / closePrice[-1]
            relation_s2_close = 0
            relation_s3_close = 0
        elif (supLevels.shape[0] == 2):
            relation_s1_close = (closePrice[-1] -
                                 closePrice[supLevels[-1]]) / closePrice[-1]
            relation_s2_close = (closePrice[-1] -
                                 closePrice[supLevels[-2]]) / closePrice[-1]
            relation_s3_close = 0
        else:
            relation_s1_close = (closePrice[-1] -
                                 closePrice[supLevels[-1]]) / closePrice[-1]
            relation_s2_close = (closePrice[-1] -
                                 closePrice[supLevels[-2]]) / closePrice[-1]
            relation_s3_close = (closePrice[-1] -
                                 closePrice[supLevels[-3]]) / closePrice[-1]

        # slope features detection
        slope = window[:, 18]
        slope_mean = np.mean(slope)

        # beta features detection
        beta = window[:, 17]
        beta_mean = np.mean(beta)
        beta_std = np.std(beta)

        # spinTop features detection    np.sum(np.where(a==1)[0])
        count100plus = np.sum(np.where(window[:, 19] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 19] == -100)[0])) * -1
        spinTop_number_occurrence = count100plus + count100minus

        # doji features detection
        count100plus = np.sum(np.where(window[:, 20] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 20] == -100)[0])) * -1
        doji_number_occurrence = count100plus + count100minus

        # dojiStar features detection
        count100plus = np.sum(np.where(window[:, 21] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 21] == -100)[0])) * -1
        dojiStar_number_occurrence = count100plus + count100minus

        # marubozu features detection
        count100plus = np.sum(np.where(window[:, 22] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 22] == -100)[0])) * -1
        marubozu_number_occurrence = count100plus + count100minus

        # hammer features detection
        count100plus = np.sum(np.where(window[:, 23] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 23] == -100)[0])) * -1
        hammer_number_occurrence = count100plus + count100minus

        # invHammer features detection
        count100plus = np.sum(np.where(window[:, 24] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 24] == -100)[0])) * -1
        invHammer_number_occurrence = count100plus + count100minus

        # hangingMan features detection
        count100plus = np.sum(np.where(window[:, 25] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 25] == -100)[0])) * -1
        hangingMan_number_occurrence = count100plus + count100minus

        # shootingStar features detection
        count100plus = np.sum(np.where(window[:, 26] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 26] == -100)[0])) * -1
        shootingStar_number_occurrence = count100plus + count100minus

        # engulfing features detection
        count100plus = np.sum(np.where(window[:, 27] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 27] == -100)[0])) * -1
        engulfing_number_occurrence = count100plus + count100minus

        # morningStar features detection
        count100plus = np.sum(np.where(window[:, 28] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 28] == -100)[0])) * -1
        morningStar_number_occurrence = count100plus + count100minus

        # eveningStar features detection
        count100plus = np.sum(np.where(window[:, 29] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 29] == -100)[0])) * -1
        eveningStar_number_occurrence = count100plus + count100minus

        # whiteSoldier features detection
        count100plus = np.sum(np.where(window[:, 30] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 30] == -100)[0])) * -1
        whiteSoldier_number_occurrence = count100plus + count100minus

        # blackCrow features detection
        count100plus = np.sum(np.where(window[:, 31] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 31] == -100)[0])) * -1
        blackCrow_number_occurrence = count100plus + count100minus

        # insideThree features detection
        count100plus = np.sum(np.where(window[:, 32] == 100)[0])
        count100minus = (np.sum(np.where(window[:, 32] == -100)[0])) * -1
        insideThree_number_occurrence = count100plus + count100minus

        # fill the inputs matrix
        inputs[i, 0] = sma_latest_crossover
        inputs[i, 1] = sma_location_of_latest_crossover
        inputs[i, 2] = sma_latest_crossover_angle
        inputs[i, 3] = sma_dominant_type_fast_slow
        inputs[i, 4] = ema_latest_crossover
        inputs[i, 5] = ema_location_of_latest_crossover
        inputs[i, 6] = ema_latest_crossover_angle
        inputs[i, 7] = ema_dominant_type_fast_slow
        inputs[i, 8] = deltaBands_mean
        inputs[i, 9] = deltaBands_std
        inputs[i, 10] = deltaBands_maximum_mean
        inputs[i, 11] = deltaBands_maximum_location
        inputs[i, 12] = deltaBands_minimum_mean
        inputs[i, 13] = deltaBands_minimum_location
        inputs[i, 14] = macd_latest_crossover
        inputs[i, 15] = macd_location_of_latest_crossover
        inputs[i, 16] = macd_latest_crossover_angle
        inputs[i, 17] = macd_dominant_type_fast_slow
        inputs[i, 18] = sar_latest_shiftPoint
        inputs[i, 19] = sar_latest_shiftPoint_location
        inputs[i, 20] = sar_total_number_shifts
        inputs[i, 21] = stochK_mean
        inputs[i, 22] = stochK_std
        inputs[i, 23] = stochK_latest_event
        inputs[i, 24] = stochK_event_location
        inputs[i, 25] = stochD_mean
        inputs[i, 26] = stochD_std
        inputs[i, 27] = stochD_latest_event
        inputs[i, 28] = stochD_event_location
        inputs[i, 29] = rsi_mean
        inputs[i, 30] = rsi_std
        inputs[i, 31] = rsi_latest_event
        inputs[i, 32] = rsi_event_location
        inputs[i, 33] = adx_mean
        inputs[i, 34] = adx_std
        inputs[i, 35] = adx_mean_delta_bet_first_second_half
        inputs[i, 36] = mfi_mean
        inputs[i, 37] = mfi_std
        inputs[i, 38] = mfi_mean_delta_bet_first_second_half
        inputs[i, 39] = relation_r1_close
        inputs[i, 40] = relation_r2_close
        inputs[i, 41] = relation_r3_close
        inputs[i, 42] = relation_s1_close
        inputs[i, 43] = relation_s2_close
        inputs[i, 44] = relation_s3_close
        inputs[i, 45] = slope_mean
        inputs[i, 46] = beta_mean
        inputs[i, 47] = beta_std
        inputs[i, 48] = spinTop_number_occurrence
        inputs[i, 49] = doji_number_occurrence
        inputs[i, 50] = dojiStar_number_occurrence
        inputs[i, 51] = marubozu_number_occurrence
        inputs[i, 52] = hammer_number_occurrence
        inputs[i, 53] = invHammer_number_occurrence
        inputs[i, 54] = hangingMan_number_occurrence
        inputs[i, 55] = shootingStar_number_occurrence
        inputs[i, 56] = engulfing_number_occurrence
        inputs[i, 57] = morningStar_number_occurrence
        inputs[i, 58] = eveningStar_number_occurrence
        inputs[i, 59] = whiteSoldier_number_occurrence
        inputs[i, 60] = blackCrow_number_occurrence
        inputs[i, 61] = insideThree_number_occurrence

        # fill raw inputs matrices
        inputsOpen[i, :] = window[:, 0].reshape(1, lookUp)
        inputsClose[i, :] = window[:, 1].reshape(1, lookUp)
        inputsHigh[i, :] = window[:, 2].reshape(1, lookUp)
        inputsLow[i, :] = window[:, 3].reshape(1, lookUp)

        # fill the output matrix
        futureClose = windowForecast[:, 1]
        if (pairName == "USD_JPY"):
            outputs[
                i, 0] = (futureClose[-1] - futureClose[0]
                         ) / 0.01  # one pip = 0.01 for any pair containing JPY
        else:
            outputs[i, 0] = (futureClose[-1] - futureClose[0]
                             ) / 0.0001  # one pip = 0.0001 for this pairs

    # create mapping dict.
    mappingDict = {
        "sma_latest_crossover": 0,
        "sma_location_of_latest_crossover": 1,
        "sma_latest_crossover_angle": 2,
        "sma_dominant_type_fast_slow": 3,
        "ema_latest_crossover": 4,
        "ema_location_of_latest_crossover": 5,
        "ema_latest_crossover_angle": 6,
        "ema_dominant_type_fast_slow": 7,
        "deltaBands_mean": 8,
        "deltaBands_std": 9,
        "deltaBands_maximum_mean": 10,
        "deltaBands_maximum_location": 11,
        "deltaBands_minimum_mean": 12,
        "deltaBands_minimum_location": 13,
        "macd_latest_crossover": 14,
        "macd_location_of_latest_crossover": 15,
        "macd_latest_crossover_angle": 16,
        "macd_dominant_type_fast_slow": 17,
        "sar_latest_shiftPoint": 18,
        "sar_latest_shiftPoint_location": 19,
        "sar_total_number_shifts": 20,
        "stochK_mean": 21,
        "stochK_std": 22,
        "stochK_latest_event": 23,
        "stochK_event_location": 24,
        "stochD_mean": 25,
        "stochD_std": 26,
        "stochD_latest_event": 27,
        "stochD_event_location": 28,
        "rsi_mean": 29,
        "rsi_std": 30,
        "rsi_latest_event": 31,
        "rsi_event_location": 32,
        "adx_mean": 33,
        "adx_std": 34,
        "adx_mean_delta_bet_first_second_half": 35,
        "mfi_mean": 36,
        "mfi_std": 37,
        "mfi_mean_delta_bet_first_second_half": 38,
        "relation_r1_close": 39,
        "relation_r2_close": 40,
        "relation_r3_close": 41,
        "relation_s1_close": 42,
        "relation_s2_close": 43,
        "relation_s3_close": 44,
        "slope_mean": 45,
        "beta_mean": 46,
        "beta_std": 47,
        "spinTop_number_occurrence": 48,
        "doji_number_occurrence": 49,
        "dojiStar_number_occurrence": 50,
        "marubozu_number_occurrence": 51,
        "hammer_number_occurrence": 52,
        "invHammer_number_occurrence": 53,
        "hangingMan_number_occurrence": 54,
        "shootingStar_number_occurrence": 55,
        "engulfing_number_occurrence": 56,
        "morningStar_number_occurrence": 57,
        "eveningStar_number_occurrence": 58,
        "whiteSoldier_number_occurrence": 59,
        "blackCrow_number_occurrence": 60,
        "insideThree_number_occurrence": 61
    }

    # remove undifined values from the output
    refMatrix = inputs
    inputs = inputs[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values
    outputs = outputs[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values
    inputsOpen = inputsOpen[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values
    inputsClose = inputsClose[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values
    inputsHigh = inputsHigh[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values
    inputsLow = inputsLow[~np.isnan(refMatrix).any(
        axis=1)]  # remove all raws containing nan values

    # create raw inputs dict.
    rawInputs["open"] = inputsOpen
    rawInputs["close"] = inputsClose
    rawInputs["high"] = inputsHigh
    rawInputs["low"] = inputsLow

    # return the function output
    output = {
        "mappingDict": mappingDict,
        "rawInputs": rawInputs,
        "inputFeatures": inputs,
        "targets": outputs
    }
    return (output)
Ejemplo n.º 10
0
    def compute_candlestick_patterns(self):
        df = self.df
        open = df.open
        close = df.close
        high = df.high
        low = df.low

        candle_patterns = pd.DataFrame(deepcopy(close))
        candle_patterns['two_crows'] = talib.CDL2CROWS(open, high, low, close)
        candle_patterns['three_black_crows'] = talib.CDL3BLACKCROWS(open, high, low, close)
        candle_patterns['three_inside'] = talib.CDL3INSIDE(open, high, low, close)
        candle_patterns['three_line_strike'] = talib.CDL3LINESTRIKE(open, high, low, close)
        candle_patterns['three_outside'] = talib.CDL3OUTSIDE(open, high, low, close)
        candle_patterns['three_star_south'] = talib.CDL3STARSINSOUTH(open, high, low, close)
        candle_patterns['three_white_soldiers'] = talib.CDL3WHITESOLDIERS(open, high, low, close)
        candle_patterns['abandoned_baby'] = talib.CDLABANDONEDBABY(open, high, low, close)
        candle_patterns['advance_block'] = talib.CDLADVANCEBLOCK(open, high, low, close)
        candle_patterns['belt_hold'] = talib.CDLBELTHOLD(open, high, low, close)
        candle_patterns['breakaway'] = talib.CDLBREAKAWAY(open, high, low, close)
        candle_patterns['closing_marubozu'] = talib.CDLCLOSINGMARUBOZU(open, high, low, close)
        candle_patterns['concealing_baby_swallow'] = talib.CDLCONCEALBABYSWALL(open, high, low, close)
        candle_patterns['counterattack'] = talib.CDLCOUNTERATTACK(open, high, low, close)
        candle_patterns['dark_cloud_cover'] = talib.CDLDARKCLOUDCOVER(open, high, low, close)
        candle_patterns['doji'] = talib.CDLDOJI(open, high, low, close)
        candle_patterns['doji_star'] = talib.CDLDOJISTAR(open, high, low, close)
        candle_patterns['gravestone_doji'] = talib.CDLGRAVESTONEDOJI(open, high, low, close)
        candle_patterns['dragonfly_doji'] = talib.CDLDRAGONFLYDOJI(open, high, low, close)
        candle_patterns['engulfing'] = talib.CDLENGULFING(open, high, low, close)
        candle_patterns['eveningstar_doji'] = talib.CDLEVENINGDOJISTAR(open, high, low, close)
        candle_patterns['eveningstar'] = talib.CDLEVENINGSTAR(open, high, low, close)
        candle_patterns['gap_side_white'] = talib.CDLGAPSIDESIDEWHITE(open, high, low, close)
        candle_patterns['hammer'] = talib.CDLHAMMER(open, high, low, close)
        candle_patterns['doji'] = talib.CDLDOJI(open, high, low, close)
        candle_patterns['hanging_man'] = talib.CDLHANGINGMAN(open, high, low, close)
        candle_patterns['harami'] = talib.CDLHARAMI(open, high, low, close)
        candle_patterns['harami_cross'] = talib.CDLHARAMICROSS(open, high, low, close)
        candle_patterns['high_wave'] = talib.CDLHIGHWAVE(open, high, low, close)
        candle_patterns['hikkake'] = talib.CDLHIKKAKE(open, high, low, close)
        candle_patterns['hikkake_mod'] = talib.CDLHIKKAKEMOD(open, high, low, close)
        candle_patterns['homing_pigeon'] = talib.CDLHOMINGPIGEON(open, high, low, close)
        candle_patterns['identical_3crows'] = talib.CDLIDENTICAL3CROWS(open, high, low, close)
        candle_patterns['in_neck'] = talib.CDLINNECK(open, high, low, close)
        candle_patterns['inverted_hammer'] = talib.CDLINVERTEDHAMMER(open, high, low, close)
        candle_patterns['kicking'] = talib.CDLKICKING(open, high, low, close)
        candle_patterns['kicking_marubozu'] = talib.CDLKICKINGBYLENGTH(open, high, low, close)
        candle_patterns['ladder_bottom'] = talib.CDLLADDERBOTTOM(open, high, low, close)
        candle_patterns['long_leg_doji'] = talib.CDLLONGLEGGEDDOJI(open, high, low, close)
        candle_patterns['long_line'] = talib.CDLLONGLINE(open, high, low, close)
        candle_patterns['marubozu'] = talib.CDLMARUBOZU(open, high, low, close)
        candle_patterns['matching_low'] = talib.CDLMATCHINGLOW(open, high, low, close)
        candle_patterns['mat_hold'] = talib.CDLMATHOLD(open, high, low, close)
        candle_patterns['morningstar_doji'] = talib.CDLMORNINGDOJISTAR(open, high, low, close)
        candle_patterns['morningstar'] = talib.CDLMORNINGSTAR(open, high, low, close)
        candle_patterns['on_neck'] = talib.CDLONNECK(open, high, low, close)
        candle_patterns['piercing'] = talib.CDLPIERCING(open, high, low, close)
        candle_patterns['rickshaw_man'] = talib.CDLRICKSHAWMAN(open, high, low, close)
        candle_patterns['rising_fall_3methods'] = talib.CDLRISEFALL3METHODS(open, high, low, close)
        candle_patterns['separating_lines'] = talib.CDLSEPARATINGLINES(open, high, low, close)
        candle_patterns['shooting_star'] = talib.CDLSHOOTINGSTAR(open, high, low, close)
        candle_patterns['short_line'] = talib.CDLSHORTLINE(open, high, low, close)
        candle_patterns['spinning_top'] = talib.CDLSPINNINGTOP(open, high, low, close)
        candle_patterns['stalled'] = talib.CDLSTALLEDPATTERN(open, high, low, close)
        candle_patterns['stick_sandwich'] = talib.CDLSTICKSANDWICH(open, high, low, close)
        candle_patterns['takuri'] = talib.CDLTAKURI(open, high, low, close)
        candle_patterns['tasuki_gap'] = talib.CDLTASUKIGAP(open, high, low, close)
        candle_patterns['thrusting'] = talib.CDLTHRUSTING(open, high, low, close)
        candle_patterns['tristar'] = talib.CDLTRISTAR(open, high, low, close)
        candle_patterns['unique_3river'] = talib.CDLUNIQUE3RIVER(open, high, low, close)
        candle_patterns['upside_gap_2crows'] = talib.CDLUPSIDEGAP2CROWS(open, high, low, close)
        candle_patterns['upside_gap_3methods'] = talib.CDLXSIDEGAP3METHODS(open, high, low, close)

        self.candlestick_patterns = candle_patterns
Ejemplo n.º 11
0
                                         df['Close'])
df['Belt-hold'] = ta.CDLBELTHOLD(df['Open'], df['High'], df['Low'],
                                 df['Close'])
df['Breakaway'] = ta.CDLBREAKAWAY(df['Open'], df['High'], df['Low'],
                                  df['Close'])
df['Closing Marubozu'] = ta.CDLCLOSINGMARUBOZU(df['Open'], df['High'],
                                               df['Low'], df['Close'])
df['Concealing Baby Swallow'] = ta.CDLCONCEALBABYSWALL(df['Open'], df['High'],
                                                       df['Low'], df['Close'])
df['Counterattack'] = ta.CDLCOUNTERATTACK(df['Open'], df['High'], df['Low'],
                                          df['Close'])
df['Dark Cloud Cover'] = ta.CDLDARKCLOUDCOVER(df['Open'], df['High'],
                                              df['Low'], df['Close'])

df['Doji'] = ta.CDLDOJI(df['Open'], df['High'], df['Low'], df['Close'])
df['Doji Star'] = ta.CDLDOJISTAR(df['Open'], df['High'], df['Low'],
                                 df['Close'])
df['Dragonfly Doji'] = ta.CDLDRAGONFLYDOJI(df['Open'], df['High'], df['Low'],
                                           df['Close'])
df['Engulfing Pattern'] = ta.CDLENGULFING(df['Open'], df['High'], df['Low'],
                                          df['Close'])
df['Evening Doji Star'] = ta.CDLEVENINGDOJISTAR(df['Open'], df['High'],
                                                df['Low'], df['Close'])
df['Evening Star'] = ta.CDLEVENINGSTAR(df['Open'], df['High'], df['Low'],
                                       df['Close'])
df['Up/Down-gap side-by-side white lines'] = ta.CDLGAPSIDESIDEWHITE(
    df['Open'], df['High'], df['Low'], df['Close'])
df['Gravestone Doji'] = ta.CDLGRAVESTONEDOJI(df['Open'], df['High'], df['Low'],
                                             df['Close'])

df['Hammer'] = ta.CDLHAMMER(df['Open'], df['High'], df['Low'], df['Close'])
df['Hanging Man'] = ta.CDLHANGINGMAN(df['Open'], df['High'], df['Low'],
Ejemplo n.º 12
0
    def add_pattern(self, df):
        ret_parrern = []
        result = []
        result_add = []
        result_minus = []
        output = talib.CDL2CROWS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDL2CROWS', 63, ret_parrern)
        for i in range(len(output)):
            result.append(0)
            result_add.append(0)
            result_minus.append(0)
        result = self.get_pattern(result, result_add, result_minus, output, 1)

        # output = talib.CDL3BLACKCROWS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        # self.add_machine(df, output, 'CDL3BLACKCROWS', 2, ret_parrern)
        # result = self.get_pattern(result, result_add, result_minus, output, 2)
        output = talib.CDL3INSIDE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDL3INSIDE', 3, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 3)
        # output = talib.CDL3LINESTRIKE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        # self.add_machine(df, output, 'CDL3LINESTRIKE', 4, ret_parrern)
        # result = self.get_pattern(result, result_add, result_minus, output, 4)
        output = talib.CDL3OUTSIDE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDL3OUTSIDE', 5, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 5)
        output = talib.CDL3STARSINSOUTH(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDL3STARSINSOUTH', 6, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 6)
        output = talib.CDL3WHITESOLDIERS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDL3WHITESOLDIERS', 7, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 7)
        output = talib.CDLABANDONEDBABY(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLABANDONEDBABY', 8, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 8)
        output = talib.CDLADVANCEBLOCK(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLADVANCEBLOCK', 9, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 9)
        output = talib.CDLBELTHOLD(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLBELTHOLD', 10, ret_parrern)
        result = self.get_pattern(result,result_add, result_minus,  output, 10)
        output = talib.CDLBREAKAWAY(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLBREAKAWAY', 11, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 11)
        output = talib.CDLCLOSINGMARUBOZU(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLCLOSINGMARUBOZU', 12, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 12)
        output = talib.CDLCONCEALBABYSWALL(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLCONCEALBABYSWALL', 13, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 13)
        output = talib.CDLCOUNTERATTACK(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLCOUNTERATTACK', 14, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 14)
        output = talib.CDLDARKCLOUDCOVER(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLDARKCLOUDCOVER', 15, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 15)
        output = talib.CDLDOJISTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLDOJISTAR',17, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 17)
        output = talib.CDLDRAGONFLYDOJI(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLDRAGONFLYDOJI',18, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 18)
        output = talib.CDLENGULFING(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLENGULFING',19, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 19)
        output = talib.CDLEVENINGDOJISTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLEVENINGDOJISTAR',20, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 20)
        output = talib.CDLEVENINGSTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLEVENINGSTAR',21, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 21)
        #     output = talib.CDLGAPSIDESIDEWHITE(df['시가'].values, df['고가'].values, 7XXZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ29io
        # output = talib.CDLGRAVESTONEDOJI(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLGRAVESTONEDOJI',23, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 23)
        output = talib.CDLHAMMER(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHAMMER',24, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 24)
        output = talib.CDLHANGINGMAN(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHANGINGMAN',25, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 25)
        output = talib.CDLHARAMI(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHARAMI',26, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 26)
        output = talib.CDLHARAMICROSS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHARAMICROSS',27, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 27)
        output = talib.CDLHIGHWAVE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHIGHWAVE',28, ret_parrern)
        result = self.get_pattern(result,result_add, result_minus,  output, 28)
        output = talib.CDLHIKKAKE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHIKKAKE',29, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 29)
        output = talib.CDLHIKKAKEMOD(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHIKKAKEMOD',30, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 30)
        output = talib.CDLHOMINGPIGEON(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLHOMINGPIGEON',31, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 31)
        output = talib.CDLIDENTICAL3CROWS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLIDENTICAL3CROWS',32, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 32)
        output = talib.CDLINNECK(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLINNECK',33, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 33)
        output = talib.CDLINVERTEDHAMMER(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLINVERTEDHAMMER',34, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 34)
        output = talib.CDLKICKING(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLKICKING',35, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 35)
        output = talib.CDLKICKINGBYLENGTH(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLKICKINGBYLENGTH',36, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 36)
        output = talib.CDLLADDERBOTTOM(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLLADDERBOTTOM',37, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 37)
        output = talib.CDLLONGLEGGEDDOJI(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLLONGLEGGEDDOJI',38, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 38)
        output = talib.CDLLONGLINE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLLONGLINE',39, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 39)
        output = talib.CDLMARUBOZU(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLMARUBOZU',40, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 40)
        output = talib.CDLMATCHINGLOW(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLMATCHINGLOW',41, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 41)
        output = talib.CDLMATHOLD(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLMATHOLD',42, ret_parrern)
        result = self.get_pattern(result,result_add, result_minus,  output, 42)
        # output = talib.CDLMATCHINGLOW(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        # self.add_machine(df, output, 'CDLMATCHINGLOW',43, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 43)
        output = talib.CDLMORNINGDOJISTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLMORNINGDOJISTAR',44, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 44)
        output = talib.CDLMORNINGSTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLMORNINGSTAR',45, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 45)
        output = talib.CDLONNECK(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLONNECK',46, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 46)
        output = talib.CDLPIERCING(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLPIERCING',47, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 47)
        output = talib.CDLRICKSHAWMAN(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLRICKSHAWMAN',48, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 48)
        output = talib.CDLRISEFALL3METHODS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLRISEFALL3METHODS',49, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 49)
        output = talib.CDLSEPARATINGLINES(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSEPARATINGLINES',50, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 50)
        output = talib.CDLSHOOTINGSTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSHOOTINGSTAR',51, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 51)
        output = talib.CDLSHORTLINE(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSHORTLINE',52, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 52)
        output = talib.CDLSPINNINGTOP(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSPINNINGTOP',53, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 53)
        output = talib.CDLSTALLEDPATTERN(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSTALLEDPATTERN',54, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 54)
        output = talib.CDLSTICKSANDWICH(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLSTICKSANDWICH',55, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 55)
        output = talib.CDLTAKURI(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLTAKURI',56, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 56)
        output = talib.CDLTASUKIGAP(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLTASUKIGAP',57, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 57)
        output = talib.CDLTHRUSTING(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLTHRUSTING',58, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 58)
        output = talib.CDLTRISTAR(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLTRISTAR',59, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 59)
        output = talib.CDLUNIQUE3RIVER(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLUNIQUE3RIVER',60, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 60)
        output = talib.CDLUPSIDEGAP2CROWS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLUPSIDEGAP2CROWS',61, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 61)
        output = talib.CDLXSIDEGAP3METHODS(df['시가'].values, df['고가'].values, df['저가'].values, df['종가'].values)
        self.add_machine(df, output, 'CDLXSIDEGAP3METHODS',62, ret_parrern)
        result = self.get_pattern(result, result_add, result_minus, output, 62)

        df['PATTERN'] = result
        df['PLUS_PATTERN'] = result_add
        df['MINUS_PATTERN'] = result_minus

        # if 'PLUS_PATTERN' in services.get('configurator').get('input_column'):
        #     print('')
        # else:
        #     services.get('configurator').get('input_column').append('PLUS_PATTERN')
        # if 'MINUS_PATTERN' in services.get('configurator').get('input_column'):
        #     print('')
        # else:
        #     services.get('configurator').get('input_column').append('MINUS_PATTERN')

        # for i in range(len(result)):
        #     print('[%s]: [%s][%s][%s][%s]  plus[%s] minus[%s] %s' % (i, df.iloc[i].name, df['고가'].values[i],  df['종가'].values[i],  df['저가'].values[i], result_add[i], result_minus[i], result[i]))

        # i = len(result) -1
        # print('[%s]: [%s][%s][%s][%s]  plus[%s] minus[%s] %s' % (i, df.iloc[i].name, df['고가'].values[i], df['종가'].values[i], df['저가'].values[i], result_add[i], result_minus[i],result[i]))
        return ret_parrern
Ejemplo n.º 13
0
    def add_candle_patters(self):

        CDL2CROWS = talib.CDL2CROWS(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDL2CROWS'] = CDL2CROWS

        CDL3BLACKCROWS = talib.CDL3BLACKCROWS(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDL3BLACKCROWS'] = CDL3BLACKCROWS

        CDL3INSIDE = talib.CDL3INSIDE(self.data["askopen"],
                                      self.data["askhigh"],
                                      self.data["asklow"],
                                      self.data["askclose"])
        self.data['CDL3INSIDE'] = CDL3INSIDE

        CDL3LINESTRIKE = talib.CDL3LINESTRIKE(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDL3LINESTRIKE'] = CDL3LINESTRIKE

        CDL3OUTSIDE = talib.CDL3OUTSIDE(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDL3OUTSIDE'] = CDL3OUTSIDE

        CDL3STARSINSOUTH = talib.CDL3STARSINSOUTH(self.data["askopen"],
                                                  self.data["askhigh"],
                                                  self.data["asklow"],
                                                  self.data["askclose"])
        self.data['CDL3STARSINSOUTH'] = CDL3STARSINSOUTH

        CDL3WHITESOLDIERS = talib.CDL3WHITESOLDIERS(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDL3WHITESOLDIERS'] = CDL3WHITESOLDIERS

        CDLABANDONEDBABY = talib.CDLABANDONEDBABY(self.data["askopen"],
                                                  self.data["askhigh"],
                                                  self.data["asklow"],
                                                  self.data["askclose"])
        self.data['CDLABANDONEDBABY'] = CDLABANDONEDBABY

        CDLADVANCEBLOCK = talib.CDLADVANCEBLOCK(self.data["askopen"],
                                                self.data["askhigh"],
                                                self.data["asklow"],
                                                self.data["askclose"])
        self.data['CDLADVANCEBLOCK'] = CDLADVANCEBLOCK

        CDLBELTHOLD = talib.CDLBELTHOLD(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLBELTHOLD'] = CDLBELTHOLD

        CDLBREAKAWAY = talib.CDLBREAKAWAY(self.data["askopen"],
                                          self.data["askhigh"],
                                          self.data["asklow"],
                                          self.data["askclose"])
        self.data['CDLBREAKAWAY'] = CDLBREAKAWAY

        CDLCLOSINGMARUBOZU = talib.CDLCLOSINGMARUBOZU(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLCLOSINGMARUBOZU'] = CDLCLOSINGMARUBOZU

        CDLCONCEALBABYSWALL = talib.CDLCONCEALBABYSWALL(
            self.data["askopen"], self.data["askhigh"], self.data["asklow"],
            self.data["askclose"])
        self.data['CDLCONCEALBABYSWALL'] = CDLCONCEALBABYSWALL

        CDLCOUNTERATTACK = talib.CDLCOUNTERATTACK(self.data["askopen"],
                                                  self.data["askhigh"],
                                                  self.data["asklow"],
                                                  self.data["askclose"])
        self.data['CDLCOUNTERATTACK'] = CDLCOUNTERATTACK

        CDLDARKCLOUDCOVER = talib.CDLDARKCLOUDCOVER(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDLDARKCLOUDCOVER'] = CDLDARKCLOUDCOVER

        CDLDOJI = talib.CDLDOJI(self.data["askopen"], self.data["askhigh"],
                                self.data["asklow"], self.data["askclose"])
        self.data['CDLDOJI'] = CDLDOJI

        CDLDOJISTAR = talib.CDLDOJISTAR(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLDOJISTAR'] = CDLDOJISTAR

        CDLDRAGONFLYDOJI = talib.CDLDRAGONFLYDOJI(self.data["askopen"],
                                                  self.data["askhigh"],
                                                  self.data["asklow"],
                                                  self.data["askclose"])
        self.data['CDLDRAGONFLYDOJI'] = CDLDRAGONFLYDOJI

        CDLENGULFING = talib.CDLENGULFING(self.data["askopen"],
                                          self.data["askhigh"],
                                          self.data["asklow"],
                                          self.data["askclose"])
        self.data['CDLENGULFING'] = CDLENGULFING

        CDLEVENINGDOJISTAR = talib.CDLEVENINGDOJISTAR(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLEVENINGDOJISTAR'] = CDLEVENINGDOJISTAR

        CDLEVENINGSTAR = talib.CDLEVENINGSTAR(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLEVENINGSTAR'] = CDLEVENINGSTAR

        CDLGAPSIDESIDEWHITE = talib.CDLGAPSIDESIDEWHITE(
            self.data["askopen"], self.data["askhigh"], self.data["asklow"],
            self.data["askclose"])
        self.data['CDLGAPSIDESIDEWHITE'] = CDLGAPSIDESIDEWHITE

        CDLGRAVESTONEDOJI = talib.CDLGRAVESTONEDOJI(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDLGRAVESTONEDOJI'] = CDLGRAVESTONEDOJI

        CDLHAMMER = talib.CDLHAMMER(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDLHAMMER'] = CDLHAMMER

        CDLHANGINGMAN = talib.CDLHANGINGMAN(self.data["askopen"],
                                            self.data["askhigh"],
                                            self.data["asklow"],
                                            self.data["askclose"])
        self.data['CDLHANGINGMAN'] = CDLHANGINGMAN

        CDLHARAMI = talib.CDLHARAMI(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDLHARAMI'] = CDLHARAMI

        CDLHARAMICROSS = talib.CDLHARAMICROSS(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLHARAMICROSS'] = CDLHARAMICROSS

        CDLHIGHWAVE = talib.CDLHIGHWAVE(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLHIGHWAVE'] = CDLHIGHWAVE

        CDLHIKKAKE = talib.CDLHIKKAKE(self.data["askopen"],
                                      self.data["askhigh"],
                                      self.data["asklow"],
                                      self.data["askclose"])
        self.data['CDLHIKKAKE'] = CDLHIKKAKE

        CDLHIKKAKEMOD = talib.CDLHIKKAKEMOD(self.data["askopen"],
                                            self.data["askhigh"],
                                            self.data["asklow"],
                                            self.data["askclose"])
        self.data['CDLHIKKAKEMOD'] = CDLHIKKAKEMOD

        CDLHOMINGPIGEON = talib.CDLHOMINGPIGEON(self.data["askopen"],
                                                self.data["askhigh"],
                                                self.data["asklow"],
                                                self.data["askclose"])
        self.data['CDLHOMINGPIGEON'] = CDLHOMINGPIGEON

        CDLIDENTICAL3CROWS = talib.CDLIDENTICAL3CROWS(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLIDENTICAL3CROWS'] = CDLIDENTICAL3CROWS

        CDLINNECK = talib.CDLINNECK(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDLINNECK'] = CDLINNECK

        CDLINVERTEDHAMMER = talib.CDLINVERTEDHAMMER(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDLINVERTEDHAMMER'] = CDLINVERTEDHAMMER

        CDLKICKING = talib.CDLKICKING(self.data["askopen"],
                                      self.data["askhigh"],
                                      self.data["asklow"],
                                      self.data["askclose"])
        self.data['CDLKICKING'] = CDLKICKING

        CDLKICKINGBYLENGTH = talib.CDLKICKINGBYLENGTH(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLKICKINGBYLENGTH'] = CDLKICKINGBYLENGTH

        CDLLADDERBOTTOM = talib.CDLLADDERBOTTOM(self.data["askopen"],
                                                self.data["askhigh"],
                                                self.data["asklow"],
                                                self.data["askclose"])
        self.data['CDLLADDERBOTTOM'] = CDLLADDERBOTTOM

        CDLLONGLEGGEDDOJI = talib.CDLLONGLEGGEDDOJI(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDLLONGLEGGEDDOJI'] = CDLLONGLEGGEDDOJI

        CDLLONGLINE = talib.CDLLONGLINE(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLLONGLINE'] = CDLLONGLINE

        CDLMARUBOZU = talib.CDLMARUBOZU(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLMARUBOZU'] = CDLMARUBOZU

        CDLMATCHINGLOW = talib.CDLMATCHINGLOW(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLMATCHINGLOW'] = CDLMATCHINGLOW

        CDLMATHOLD = talib.CDLMATHOLD(self.data["askopen"],
                                      self.data["askhigh"],
                                      self.data["asklow"],
                                      self.data["askclose"])
        self.data['CDLMATHOLD'] = CDLMATHOLD

        CDLMORNINGDOJISTAR = talib.CDLMORNINGDOJISTAR(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLMORNINGDOJISTAR'] = CDLMORNINGDOJISTAR

        CDLMORNINGSTAR = talib.CDLMORNINGSTAR(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLMORNINGSTAR'] = CDLMORNINGSTAR

        CDLONNECK = talib.CDLONNECK(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDLONNECK'] = CDLONNECK

        CDLPIERCING = talib.CDLPIERCING(self.data["askopen"],
                                        self.data["askhigh"],
                                        self.data["asklow"],
                                        self.data["askclose"])
        self.data['CDLPIERCING'] = CDLPIERCING

        CDLRICKSHAWMAN = talib.CDLRICKSHAWMAN(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLRICKSHAWMAN'] = CDLRICKSHAWMAN

        CDLRISEFALL3METHODS = talib.CDLRISEFALL3METHODS(
            self.data["askopen"], self.data["askhigh"], self.data["asklow"],
            self.data["askclose"])
        self.data['CDLRISEFALL3METHODS'] = CDLRISEFALL3METHODS

        CDLSEPARATINGLINES = talib.CDLSEPARATINGLINES(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLSEPARATINGLINES'] = CDLSEPARATINGLINES

        CDLSHOOTINGSTAR = talib.CDLSHOOTINGSTAR(self.data["askopen"],
                                                self.data["askhigh"],
                                                self.data["asklow"],
                                                self.data["askclose"])
        self.data['CDLSHOOTINGSTAR'] = CDLSHOOTINGSTAR

        CDLSHORTLINE = talib.CDLSHORTLINE(self.data["askopen"],
                                          self.data["askhigh"],
                                          self.data["asklow"],
                                          self.data["askclose"])
        self.data['CDLSHORTLINE'] = CDLSHORTLINE

        CDLSPINNINGTOP = talib.CDLSPINNINGTOP(self.data["askopen"],
                                              self.data["askhigh"],
                                              self.data["asklow"],
                                              self.data["askclose"])
        self.data['CDLSPINNINGTOP'] = CDLSPINNINGTOP

        CDLSTALLEDPATTERN = talib.CDLSTALLEDPATTERN(self.data["askopen"],
                                                    self.data["askhigh"],
                                                    self.data["asklow"],
                                                    self.data["askclose"])
        self.data['CDLSTALLEDPATTERN'] = CDLSTALLEDPATTERN

        CDLSTICKSANDWICH = talib.CDLSTICKSANDWICH(self.data["askopen"],
                                                  self.data["askhigh"],
                                                  self.data["asklow"],
                                                  self.data["askclose"])
        self.data['CDLSTICKSANDWICH'] = CDLSTICKSANDWICH

        CDLTAKURI = talib.CDLTAKURI(self.data["askopen"], self.data["askhigh"],
                                    self.data["asklow"], self.data["askclose"])
        self.data['CDLTAKURI'] = CDLTAKURI

        CDLTASUKIGAP = talib.CDLTASUKIGAP(self.data["askopen"],
                                          self.data["askhigh"],
                                          self.data["asklow"],
                                          self.data["askclose"])
        self.data['CDLTASUKIGAP'] = CDLTASUKIGAP

        CDLTHRUSTING = talib.CDLTHRUSTING(self.data["askopen"],
                                          self.data["askhigh"],
                                          self.data["asklow"],
                                          self.data["askclose"])
        self.data['CDLTHRUSTING'] = CDLTHRUSTING

        CDLTRISTAR = talib.CDLTRISTAR(self.data["askopen"],
                                      self.data["askhigh"],
                                      self.data["asklow"],
                                      self.data["askclose"])
        self.data['CDLTRISTAR'] = CDLTRISTAR

        CDLUNIQUE3RIVER = talib.CDLUNIQUE3RIVER(self.data["askopen"],
                                                self.data["askhigh"],
                                                self.data["asklow"],
                                                self.data["askclose"])
        self.data['CDLUNIQUE3RIVER'] = CDLUNIQUE3RIVER

        CDLUPSIDEGAP2CROWS = talib.CDLUPSIDEGAP2CROWS(self.data["askopen"],
                                                      self.data["askhigh"],
                                                      self.data["asklow"],
                                                      self.data["askclose"])
        self.data['CDLUPSIDEGAP2CROWS'] = CDLUPSIDEGAP2CROWS

        CDLXSIDEGAP3METHODS = talib.CDLXSIDEGAP3METHODS(
            self.data["askopen"], self.data["askhigh"], self.data["asklow"],
            self.data["askclose"])
        self.data['CDLXSIDEGAP3METHODS'] = CDLXSIDEGAP3METHODS
Ejemplo n.º 14
0
    def match(open: np.ndarray, high: np.ndarray, low: np.ndarray,
              close: np.ndarray, volumn: np.ndarray) -> ['PattrnResult']:
        if (len(open) < 20):
            raise RuntimeError("len must >= 20")
        rets = []
        ##61个形态识别模式
        KPattern.__checkIfAdd(rets, talib.CDL2CROWS(open, high, low, close),
                              "CDL2CROWS")
        KPattern.__checkIfAdd(rets,
                              talib.CDL3BLACKCROWS(open, high, low,
                                                   close), "CDL3BLACKCROWS")
        KPattern.__checkIfAdd(rets, talib.CDL3INSIDE(open, high, low, close),
                              "CDL3INSIDE")
        KPattern.__checkIfAdd(rets,
                              talib.CDL3LINESTRIKE(open, high, low,
                                                   close), "CDL3LINESTRIKE")
        KPattern.__checkIfAdd(rets, talib.CDL3OUTSIDE(open, high, low, close),
                              "CDL3OUTSIDE")
        KPattern.__checkIfAdd(rets,
                              talib.CDL3STARSINSOUTH(open, high, low, close),
                              "CDL3STARSINSOUTH")
        KPattern.__checkIfAdd(rets,
                              talib.CDL3WHITESOLDIERS(open, high, low, close),
                              "CDL3WHITESOLDIERS")
        KPattern.__checkIfAdd(
            rets, talib.CDLABANDONEDBABY(open, high, low, close,
                                         penetration=0), "CDLABANDONEDBABY")
        KPattern.__checkIfAdd(rets,
                              talib.CDLADVANCEBLOCK(open, high, low, close),
                              "CDLADVANCEBLOCK")
        KPattern.__checkIfAdd(rets, talib.CDLBELTHOLD(open, high, low, close),
                              "CDLBELTHOLD")
        KPattern.__checkIfAdd(rets, talib.CDLBREAKAWAY(open, high, low, close),
                              "CDLBREAKAWAY")
        KPattern.__checkIfAdd(rets,
                              talib.CDLCLOSINGMARUBOZU(open, high, low, close),
                              "CDLCLOSINGMARUBOZU")
        KPattern.__checkIfAdd(
            rets, talib.CDLCONCEALBABYSWALL(open, high, low, close),
            "CDLCONCEALBABYSWALL")
        KPattern.__checkIfAdd(rets,
                              talib.CDLCOUNTERATTACK(open, high, low, close),
                              "CDLCOUNTERATTACK")
        KPattern.__checkIfAdd(
            rets, talib.CDLDARKCLOUDCOVER(open,
                                          high,
                                          low,
                                          close,
                                          penetration=0), "CDLDARKCLOUDCOVER")
        KPattern.__checkIfAdd(rets, talib.CDLDOJI(open, high, low, close),
                              "CDLDOJI")
        KPattern.__checkIfAdd(rets, talib.CDLDOJISTAR(open, high, low, close),
                              "CDLDOJISTAR")
        KPattern.__checkIfAdd(rets,
                              talib.CDLDRAGONFLYDOJI(open, high, low, close),
                              "CDLDRAGONFLYDOJI")
        KPattern.__checkIfAdd(rets, talib.CDLENGULFING(open, high, low, close),
                              "CDLENGULFING")
        KPattern.__checkIfAdd(rets,
                              talib.CDLEVENINGDOJISTAR(open, high, low, close),
                              "CDLEVENINGDOJISTAR")
        KPattern.__checkIfAdd(
            rets, talib.CDLEVENINGSTAR(open, high, low, close, penetration=0),
            "CDLEVENINGSTAR")
        KPattern.__checkIfAdd(
            rets, talib.CDLGAPSIDESIDEWHITE(open, high, low, close),
            "CDLGAPSIDESIDEWHITE")
        KPattern.__checkIfAdd(rets,
                              talib.CDLGRAVESTONEDOJI(open, high, low, close),
                              "CDLGRAVESTONEDOJI")
        KPattern.__checkIfAdd(rets, talib.CDLHAMMER(open, high, low, close),
                              "CDLHAMMER")
        KPattern.__checkIfAdd(rets,
                              talib.CDLHANGINGMAN(open, high, low,
                                                  close), "CDLHANGINGMAN")
        KPattern.__checkIfAdd(rets, talib.CDLHARAMI(open, high, low, close),
                              "CDLHARAMI")
        KPattern.__checkIfAdd(rets,
                              talib.CDLHARAMICROSS(open, high, low,
                                                   close), "CDLHARAMICROSS")
        KPattern.__checkIfAdd(rets, talib.CDLHIGHWAVE(open, high, low, close),
                              "CDLHIGHWAVE")
        KPattern.__checkIfAdd(rets, talib.CDLHIKKAKE(open, high, low, close),
                              "CDLHIKKAKE")
        KPattern.__checkIfAdd(rets,
                              talib.CDLHIKKAKEMOD(open, high, low,
                                                  close), "CDLHIKKAKEMOD")
        KPattern.__checkIfAdd(rets,
                              talib.CDLHOMINGPIGEON(open, high, low, close),
                              "CDLHOMINGPIGEON")
        KPattern.__checkIfAdd(rets,
                              talib.CDLIDENTICAL3CROWS(open, high, low, close),
                              "CDLIDENTICAL3CROWS")
        KPattern.__checkIfAdd(rets, talib.CDLINNECK(open, high, low, close),
                              "CDLINNECK")
        KPattern.__checkIfAdd(rets,
                              talib.CDLINVERTEDHAMMER(open, high, low, close),
                              "CDLINVERTEDHAMMER")
        KPattern.__checkIfAdd(rets, talib.CDLKICKING(open, high, low, close),
                              "CDLKICKING")
        KPattern.__checkIfAdd(rets,
                              talib.CDLKICKINGBYLENGTH(open, high, low, close),
                              "CDLKICKINGBYLENGTH")
        KPattern.__checkIfAdd(rets,
                              talib.CDLLADDERBOTTOM(open, high, low, close),
                              "CDLLADDERBOTTOM")
        KPattern.__checkIfAdd(rets,
                              talib.CDLLONGLEGGEDDOJI(open, high, low, close),
                              "CDLLONGLEGGEDDOJI")
        KPattern.__checkIfAdd(rets, talib.CDLLONGLINE(open, high, low, close),
                              "CDLLONGLINE")
        KPattern.__checkIfAdd(rets, talib.CDLMARUBOZU(open, high, low, close),
                              "CDLMARUBOZU")
        KPattern.__checkIfAdd(rets,
                              talib.CDLMATCHINGLOW(open, high, low,
                                                   close), "CDLMATCHINGLOW")
        KPattern.__checkIfAdd(rets, talib.CDLMATHOLD(open, high, low, close),
                              "CDLMATHOLD")
        KPattern.__checkIfAdd(rets,
                              talib.CDLMORNINGDOJISTAR(open, high, low, close),
                              "CDLMORNINGDOJISTAR")
        KPattern.__checkIfAdd(rets,
                              talib.CDLMORNINGSTAR(open, high, low,
                                                   close), "CDLMORNINGSTAR")
        KPattern.__checkIfAdd(rets, talib.CDLONNECK(open, high, low, close),
                              "CDLONNECK")
        KPattern.__checkIfAdd(rets, talib.CDLPIERCING(open, high, low, close),
                              "CDLPIERCING")
        KPattern.__checkIfAdd(rets,
                              talib.CDLRICKSHAWMAN(open, high, low,
                                                   close), "CDLRICKSHAWMAN")
        KPattern.__checkIfAdd(
            rets, talib.CDLRISEFALL3METHODS(open, high, low, close),
            "CDLRISEFALL3METHODS")
        KPattern.__checkIfAdd(rets,
                              talib.CDLSEPARATINGLINES(open, high, low, close),
                              "CDLSEPARATINGLINES")
        KPattern.__checkIfAdd(rets,
                              talib.CDLSHOOTINGSTAR(open, high, low, close),
                              "CDLSHOOTINGSTAR")
        KPattern.__checkIfAdd(rets, talib.CDLSHORTLINE(open, high, low, close),
                              "CDLSHORTLINE")
        KPattern.__checkIfAdd(rets,
                              talib.CDLSPINNINGTOP(open, high, low,
                                                   close), "CDLSPINNINGTOP")
        KPattern.__checkIfAdd(rets,
                              talib.CDLSTALLEDPATTERN(open, high, low, close),
                              "CDLSTALLEDPATTERN")
        KPattern.__checkIfAdd(rets,
                              talib.CDLSTICKSANDWICH(open, high, low, close),
                              "CDLSTICKSANDWICH")
        KPattern.__checkIfAdd(rets, talib.CDLTAKURI(open, high, low, close),
                              "CDLTAKURI")
        KPattern.__checkIfAdd(rets, talib.CDLTASUKIGAP(open, high, low, close),
                              "CDLTASUKIGAP")
        KPattern.__checkIfAdd(rets, talib.CDLTHRUSTING(open, high, low, close),
                              "CDLTHRUSTING")
        KPattern.__checkIfAdd(rets, talib.CDLTRISTAR(open, high, low, close),
                              "CDLTRISTAR")
        KPattern.__checkIfAdd(rets,
                              talib.CDLUNIQUE3RIVER(open, high, low, close),
                              "CDLUNIQUE3RIVER")
        KPattern.__checkIfAdd(rets,
                              talib.CDLUPSIDEGAP2CROWS(open, high, low, close),
                              "CDLUPSIDEGAP2CROWS")
        KPattern.__checkIfAdd(
            rets, talib.CDLXSIDEGAP3METHODS(open, high, low, close),
            "CDLXSIDEGAP3METHODS")

        return rets
Ejemplo n.º 15
0
def all_candels(df):
    df['two_crow'] = talib.CDL2CROWS(df.open,df.high,df.low,df.close)
    df['three_black_crows'] = talib.CDL3BLACKCROWS(df.open,df.high,df.low,df.close)
    df['threeinside updown'] = talib.CDL3INSIDE(df.open,df.high,df.low,df.close)
    df['threelinestrike'] = talib.CDL3LINESTRIKE(df.open,df.high,df.low,df.close)
    df['3outside'] = talib.CDL3OUTSIDE(df.open,df.high,df.low,df.close)
    df['3starsinsouth'] = talib.CDL3STARSINSOUTH(df.open,df.high,df.low,df.close)
    df['3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(df.open,df.high,df.low,df.close)
    df['ABANDONEDBABY'] = talib.CDLABANDONEDBABY(df.open,df.high,df.low,df.close)
    df['ADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(df.open,df.high,df.low,df.close)
    df['BELTHOLD'] = talib.CDLBELTHOLD(df.open,df.high,df.low,df.close)
    df['BREAKAWAY'] = talib.CDLBREAKAWAY(df.open,df.high,df.low,df.close)
    df['CLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(df.open,df.high,df.low,df.close)
    df['CONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL(df.open,df.high,df.low,df.close)
    df['COUNTERATTACK'] = talib.CDLCOUNTERATTACK(df.open,df.high,df.low,df.close)

    df['DARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(df.open,df.high,df.low,df.close)
    df['DOJI'] = talib.CDLDOJI(df.open,df.high,df.low,df.close)
    df['DOJISTAR'] = talib.CDLDOJISTAR(df.open,df.high,df.low,df.close)
    df['DRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(df.open,df.high,df.low,df.close)
    df['ENGULFING'] = talib.CDLENGULFING(df.open,df.high,df.low,df.close)
    df['EVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(df.open,df.high,df.low,df.close)
    df['EVENINGSTAR'] = talib.CDLEVENINGSTAR(df.open,df.high,df.low,df.close)
    df['GAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE(df.open,df.high,df.low,df.close)
    df['GRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(df.open,df.high,df.low,df.close)
    df['HAMMER'] = talib.CDLHAMMER(df.open,df.high,df.low,df.close)
    df['HANGINGMAN'] = talib.CDLHANGINGMAN(df.open,df.high,df.low,df.close)
    df['HARAMI'] = talib.CDLHARAMI(df.open,df.high,df.low,df.close)
    df['HARAMICROSS'] = talib.CDLHARAMICROSS(df.open,df.high,df.low,df.close)
    df['HIGHWAVE'] = talib.CDLHIGHWAVE(df.open,df.high,df.low,df.close)

    df['HIKKAKE'] = talib.CDLHIKKAKE(df.open,df.high,df.low,df.close)
    df['HIKKAKEMOD'] = talib.CDLHIKKAKEMOD(df.open,df.high,df.low,df.close)
    df['HOMINGPIGEON'] = talib.CDLHOMINGPIGEON(df.open,df.high,df.low,df.close)
    df['IDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(df.open,df.high,df.low,df.close)
    df['INNECK'] = talib.CDLINNECK(df.open,df.high,df.low,df.close)
    df['INVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(df.open,df.high,df.low,df.close)
    df['KICKING'] = talib.CDLKICKING(df.open,df.high,df.low,df.close)
    df['KICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH(df.open,df.high,df.low,df.close)
    df['LADDERBOTTOM'] = talib.CDLLADDERBOTTOM(df.open,df.high,df.low,df.close)
    df['LONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(df.open,df.high,df.low,df.close)
    df['LONGLINE'] = talib.CDLLONGLINE(df.open,df.high,df.low,df.close)
    df['MARUBOZU'] = talib.CDLMARUBOZU(df.open,df.high,df.low,df.close)
    df['MATCHINGLOW'] = talib.CDLMATCHINGLOW(df.open,df.high,df.low,df.close)
    df['MATHOLD'] = talib.CDLMATHOLD(df.open,df.high,df.low,df.close)
    df['MORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(df.open,df.high,df.low,df.close)
    df['MORNINGSTAR'] = talib.CDLMORNINGSTAR(df.open,df.high,df.low,df.close)

    df['ONNECK'] = talib.CDLONNECK(df.open,df.high,df.low,df.close)
    df['PIERCING'] = talib.CDLPIERCING(df.open,df.high,df.low,df.close)
    df['RICKSHAWMAN'] = talib.CDLRICKSHAWMAN(df.open,df.high,df.low,df.close)
    df['RISEFALL3METHODS'] = talib.CDLRISEFALL3METHODS(df.open,df.high,df.low,df.close)
    df['SEPARATINGLINES'] = talib.CDLSEPARATINGLINES(df.open,df.high,df.low,df.close)
    df['SHOOTINGSTAR'] = talib.CDLSHOOTINGSTAR(df.open,df.high,df.low,df.close)
    df['SHORTLINE'] = talib.CDLSHORTLINE(df.open,df.high,df.low,df.close)
    df['SPINNINGTOP'] = talib.CDLSPINNINGTOP(df.open,df.high,df.low,df.close)
    df['STALLEDPATTERN'] = talib.CDLSTALLEDPATTERN(df.open,df.high,df.low,df.close)
    df['STICKSANDWICH'] = talib.CDLSTICKSANDWICH(df.open,df.high,df.low,df.close)
    df['TAKURI'] = talib.CDLTAKURI(df.open,df.high,df.low,df.close)
    df['TASUKIGAP'] = talib.CDLTASUKIGAP(df.open,df.high,df.low,df.close)
    df['THRUSTING'] = talib.CDLTHRUSTING(df.open,df.high,df.low,df.close)
    df['TRISTAR'] = talib.CDLTRISTAR(df.open,df.high,df.low,df.close)
    df['UNIQUE3RIVER'] = talib.CDLUNIQUE3RIVER(df.open,df.high,df.low,df.close)
    df['UPSIDEGAP2CROWS'] = talib.CDLUPSIDEGAP2CROWS(df.open,df.high,df.low,df.close)

    df['XSIDEGAP3METHODS'] = talib.CDLXSIDEGAP3METHODS(df.open,df.high,df.low,df.close)
    return df
Ejemplo n.º 16
0
 def CDLDOJISTAR(self):
     integer = talib.CDLDOJISTAR(self.open, self.high, self.low, self.close)
     return integer
def built_in_scanners(ticker="SPY"):
    data = yf.download(ticker,
                       start="2020-01-01",
                       end=datetime.today().strftime('%Y-%m-%d'))
    open = data['Open']
    high = data['High']
    low = data['Low']
    close = data['Close']

    # The library's functions runs on yesterday's date, so subtract 1 from today's date.

    current_date = datetime.today() - timedelta(days=1)
    current_date_formatted = current_date.strftime('%Y-%m-%d')

    two_crows = talib.CDL2CROWS(open, high, low, close)[current_date_formatted]
    three_black_crows = talib.CDL3BLACKCROWS(open, high, low,
                                             close)[current_date_formatted]
    three_inside = talib.CDL3INSIDE(open, high, low,
                                    close)[current_date_formatted]
    three_line_strike = talib.CDL3LINESTRIKE(open, high, low,
                                             close)[current_date_formatted]
    three_outside = talib.CDL3OUTSIDE(open, high, low,
                                      close)[current_date_formatted]
    three_stars_in_south = talib.CDL3STARSINSOUTH(
        open, high, low, close)[current_date_formatted]
    three_white_soldiers = talib.CDL3WHITESOLDIERS(
        open, high, low, close)[current_date_formatted]
    abandoned_baby = talib.CDLABANDONEDBABY(open, high, low,
                                            close)[current_date_formatted]
    advance_block = talib.CDLADVANCEBLOCK(open, high, low,
                                          close)[current_date_formatted]
    belt_hold = talib.CDLBELTHOLD(open, high, low,
                                  close)[current_date_formatted]
    breakaway = talib.CDLBREAKAWAY(open, high, low,
                                   close)[current_date_formatted]
    closing_marubozu = talib.CDLCLOSINGMARUBOZU(open, high, low,
                                                close)[current_date_formatted]
    concealing_baby_swallow = talib.CDLCONCEALBABYSWALL(
        open, high, low, close)[current_date_formatted]
    talib.CDLCOUNTERATTACK(open, high, low, close)[current_date_formatted]
    dark_cloud_cover = talib.CDLDARKCLOUDCOVER(
        open, high, low, close, penetration=0)[current_date_formatted]
    doji = talib.CDLDOJI(open, high, low, close)[current_date_formatted]
    doji_star = talib.CDLDOJISTAR(open, high, low,
                                  close)[current_date_formatted]
    dragonfly_doji = talib.CDLDRAGONFLYDOJI(open, high, low,
                                            close)[current_date_formatted]
    engulfing_candle = talib.CDLENGULFING(open, high, low,
                                          close)[current_date_formatted]
    evening_doji_star = talib.CDLEVENINGDOJISTAR(
        open, high, low, close, penetration=0)[current_date_formatted]
    evening_star = talib.CDLEVENINGSTAR(open, high, low, close,
                                        penetration=0)[current_date_formatted]
    gaps = talib.CDLGAPSIDESIDEWHITE(open, high, low,
                                     close)[current_date_formatted]
    gravestone_doji = talib.CDLGRAVESTONEDOJI(open, high, low,
                                              close)[current_date_formatted]
    hammer = talib.CDLHAMMER(open, high, low, close)[current_date_formatted]
    hanging_man = talib.CDLHANGINGMAN(open, high, low,
                                      close)[current_date_formatted]
    harami = talib.CDLHARAMI(open, high, low, close)[current_date_formatted]
    harami_cross = talib.CDLHARAMICROSS(open, high, low,
                                        close)[current_date_formatted]
    high_wave = talib.CDLHIGHWAVE(
        open, high, low, close)[current_date_formatted][talib.CDLHIGHWAVE != 0]
    hikkake = talib.CDLHIKKAKE(open, high, low, close)[current_date_formatted]
    hikkakemod = talib.CDLHIKKAKEMOD(open, high, low,
                                     close)[current_date_formatted]
    homing_pigeon = talib.CDLHOMINGPIGEON(open, high, low,
                                          close)[current_date_formatted]
    identical_three_crows = talib.CDLIDENTICAL3CROWS(
        open, high, low, close)[current_date_formatted]
    in_neck = talib.CDLINNECK(open, high, low, close)[current_date_formatted]
    inverted_hammer = talib.CDLINVERTEDHAMMER(open, high, low,
                                              close)[current_date_formatted]
    kicking = talib.CDLKICKING(open, high, low, close)[current_date_formatted]
    kicking_by_length = talib.CDLKICKINGBYLENGTH(open, high, low,
                                                 close)[current_date_formatted]
    ladder_bottom = talib.CDLLADDERBOTTOM(open, high, low,
                                          close)[current_date_formatted]
    long_legged_doji = talib.CDLLONGLEGGEDDOJI(open, high, low,
                                               close)[current_date_formatted]
    long_line = talib.CDLLONGLINE(open, high, low,
                                  close)[current_date_formatted]
    marubozu = talib.CDLMARUBOZU(open, high, low,
                                 close)[current_date_formatted]
    matching_low = talib.CDLMATCHINGLOW(open, high, low,
                                        close)[current_date_formatted]
    mat_hold = talib.CDLMATHOLD(open, high, low, close,
                                penetration=0)[current_date_formatted]
    morning_doji_star = talib.CDLMORNINGDOJISTAR(
        open, high, low, close, penetration=0)[current_date_formatted]
    morning_star = talib.CDLMORNINGSTAR(open, high, low, close,
                                        penetration=0)[current_date_formatted]
    on_neck = talib.CDLONNECK(open, high, low, close)[current_date_formatted]
    piercing = talib.CDLPIERCING(open, high, low,
                                 close)[current_date_formatted]
    rickshawman = talib.CDLRICKSHAWMAN(open, high, low,
                                       close)[current_date_formatted]
    rise_fall_3_methods = talib.CDLRISEFALL3METHODS(
        open, high, low, close)[current_date_formatted]
    separating_lines = talib.CDLSEPARATINGLINES(open, high, low,
                                                close)[current_date_formatted]
    shooting_star = talib.CDLSHOOTINGSTAR(open, high, low,
                                          close)[current_date_formatted]
    shortline = talib.CDLSHORTLINE(open, high, low,
                                   close)[current_date_formatted]
    spinning_top = talib.CDLSPINNINGTOP(open, high, low,
                                        close)[current_date_formatted]
    stalled_pattern = talib.CDLSTALLEDPATTERN(open, high, low,
                                              close)[current_date_formatted]
    stick_sandwich = talib.CDLSTICKSANDWICH(open, high, low,
                                            close)[current_date_formatted]
    takuri = talib.CDLTAKURI(open, high, low, close)[current_date_formatted]
    tasuki_gap = talib.CDLTASUKIGAP(open, high, low,
                                    close)[current_date_formatted]
    thrusting = talib.CDLTHRUSTING(open, high, low,
                                   close)[current_date_formatted]
    tristar = talib.CDLTRISTAR(open, high, low, close)[current_date_formatted]
    unique_three_river = talib.CDLUNIQUE3RIVER(open, high, low,
                                               close)[current_date_formatted]
    upside_gap_two_crows = talib.CDLUPSIDEGAP2CROWS(
        open, high, low, close)[current_date_formatted]
    upside_downside_gap_three_methods = talib.CDLXSIDEGAP3METHODS(
        open, high, low, close)[current_date_formatted]

    patterns = list(vars().keys())[7:]
    values = list(vars().values())[7:]

    for index in range(0, len(patterns)):
        if (values[index] != 0):
            print(patterns[index])
            print(values[index])
Ejemplo n.º 18
0
def add_indicator(data):
    open = data.Open
    high = data.High
    low = data.Low
    close = data.Close
    volume = data.Volume

    data['CDL2CROWS'] = talib.CDL2CROWS(open, high, low, close)
    data['CDL3BLACKCROWS'] = talib.CDL3BLACKCROWS(open, high, low, close)
    data['CDL3INSIDE'] = talib.CDL3INSIDE(open, high, low, close)
    data['CDL3LINESTRIKE'] = talib.CDL3LINESTRIKE(open, high, low, close)
    data['CDL3OUTSIDE'] = talib.CDL3OUTSIDE(open, high, low, close)
    data['CDL3STARSINSOUTH'] = talib.CDL3STARSINSOUTH(open, high, low, close)
    data['CDL3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(open, high, low, close)
    data['CDLABANDONEDBABY'] = talib.CDLABANDONEDBABY(open,
                                                      high,
                                                      low,
                                                      close,
                                                      penetration=0)

    data['CDLADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(open, high, low, close)
    data['CDLBELTHOLD'] = talib.CDLBELTHOLD(open, high, low, close)
    data['CDLBREAKAWAY'] = talib.CDLBREAKAWAY(open, high, low, close)
    data['CDLCLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(
        open, high, low, close)
    data['CDLCONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL(
        open, high, low, close)
    data['CDLCOUNTERATTACK'] = talib.CDLCOUNTERATTACK(open, high, low, close)
    data['CDLDARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(open,
                                                        high,
                                                        low,
                                                        close,
                                                        penetration=0)

    data['CDLDOJI'] = talib.CDLDOJI(open, high, low, close)
    data['CDLDOJISTAR'] = talib.CDLDOJISTAR(open, high, low, close)
    data['CDLDRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(open, high, low, close)
    data['CDLENGULFING'] = talib.CDLENGULFING(open, high, low, close)
    data['CDLEVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(open,
                                                          high,
                                                          low,
                                                          close,
                                                          penetration=0)

    data['CDLEVENINGSTAR'] = talib.CDLEVENINGSTAR(open,
                                                  high,
                                                  low,
                                                  close,
                                                  penetration=0)

    data['CDLGAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE(
        open, high, low, close)
    data['CDLGRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(open, high, low, close)
    data['CDLHAMMER'] = talib.CDLHAMMER(open, high, low, close)
    data['CDLHANGINGMAN'] = talib.CDLHANGINGMAN(open, high, low, close)
    data['CDLHARAMI'] = talib.CDLHARAMI(open, high, low, close)
    data['CDLHARAMICROSS'] = talib.CDLHARAMICROSS(open, high, low, close)
    data['CDLHIGHWAVE'] = talib.CDLHIGHWAVE(open, high, low, close)
    data['CDLHIKKAKE'] = talib.CDLHIKKAKE(open, high, low, close)
    data['CDLHIKKAKEMOD'] = talib.CDLHIKKAKEMOD(open, high, low, close)
    data['CDLHOMINGPIGEON'] = talib.CDLHOMINGPIGEON(open, high, low, close)
    data['CDLIDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(
        open, high, low, close)
    data['CDLINNECK'] = talib.CDLINNECK(open, high, low, close)
    data['CDLINVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(open, high, low, close)
    data['CDLKICKING'] = talib.CDLKICKING(open, high, low, close)
    data['CDLKICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH(
        open, high, low, close)
    data['CDLLADDERBOTTOM'] = talib.CDLLADDERBOTTOM(open, high, low, close)
    data['CDLLONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(open, high, low, close)
    data['CDLLONGLINE'] = talib.CDLLONGLINE(open, high, low, close)
    data['CDLMARUBOZU'] = talib.CDLMARUBOZU(open, high, low, close)
    data['CDLMATCHINGLOW'] = talib.CDLMATCHINGLOW(open, high, low, close)
    data['CDLMATHOLD'] = talib.CDLMATHOLD(open,
                                          high,
                                          low,
                                          close,
                                          penetration=0)

    data['CDLMORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(open,
                                                          high,
                                                          low,
                                                          close,
                                                          penetration=0)

    data['CDLMORNINGSTAR'] = talib.CDLMORNINGSTAR(open,
                                                  high,
                                                  low,
                                                  close,
                                                  penetration=0)

    data['CDLONNECK'] = talib.CDLONNECK(open, high, low, close)
    data['CDLPIERCING'] = talib.CDLPIERCING(open, high, low, close)
    data['CDLRICKSHAWMAN'] = talib.CDLRICKSHAWMAN(open, high, low, close)
    data['CDLRISEFALL3METHODS'] = talib.CDLRISEFALL3METHODS(
        open, high, low, close)
    data['CDLSEPARATINGLINES'] = talib.CDLSEPARATINGLINES(
        open, high, low, close)
    data['CDLSHOOTINGSTAR'] = talib.CDLSHOOTINGSTAR(open, high, low, close)
    data['CDLSHORTLINE'] = talib.CDLSHORTLINE(open, high, low, close)
    data['CDLSPINNINGTOP'] = talib.CDLSPINNINGTOP(open, high, low, close)
    data['CDLSTALLEDPATTERN'] = talib.CDLSTALLEDPATTERN(open, high, low, close)
    data['CDLSTICKSANDWICH'] = talib.CDLSTICKSANDWICH(open, high, low, close)
    data['CDLTAKURI'] = talib.CDLTAKURI(open, high, low, close)
    data['CDLTASUKIGAP'] = talib.CDLTASUKIGAP(open, high, low, close)
    data['CDLTHRUSTING'] = talib.CDLTHRUSTING(open, high, low, close)
    data['CDLTRISTAR'] = talib.CDLTRISTAR(open, high, low, close)
    data['CDLUNIQUE3RIVER'] = talib.CDLUNIQUE3RIVER(open, high, low, close)
    data['CDLUPSIDEGAP2CROWS'] = talib.CDLUPSIDEGAP2CROWS(
        open, high, low, close)
    data['CDLXSIDEGAP3METHODS'] = talib.CDLXSIDEGAP3METHODS(
        open, high, low, close)
    #   data['ADX'] = talib.ADX(high, low, close, timeperiod=14)

    data['MACDFAS'], data['MACDSLO'], data['MACDSIGNA'] = talib.MACD(
        close, fastperiod=12, slowperiod=26, signalperiod=9)
    data['3day MA'] = close.shift(1).rolling(window=3).mean()
    data['10day MA'] = close.shift(1).rolling(window=10).mean()
    data['30day MA'] = close.shift(1).rolling(window=30).mean()
    data['RSI_9'] = talib.RSI(close.values, timeperiod=9)
    data['S_10'] = close.rolling(window=10).mean()
    data['Corr'] = close.rolling(window=10).corr(data['S_10'])
    data['Williams %R'] = talib.WILLR(data['High'].values, data['Low'].values,
                                      data['Close'].values, 7)

    return data
Ejemplo n.º 19
0
def _extract_feature(candle, params, candle_type, target_dt):
    '''
    前に余分に必要なデータ量: {(stockf_fastk_period_l + stockf_fastk_period_l) * 最大分足 (min)} + window_size
    = (12 + 12) * 5 + 5 = 125 (min)
    '''
    o = candle.open
    h = candle.high
    l = candle.low
    c = candle.close
    v = candle.volume

    # OHLCV
    features = pd.DataFrame()
    features['open'] = o
    features['high'] = h
    features['low'] = l
    features['close'] = c
    features['volume'] = v

    ####################################
    #
    # Momentum Indicator Functions
    #
    ####################################

    # ADX = SUM((+DI - (-DI)) / (+DI + (-DI)), N) / N
    # N — 計算期間
    # SUM (..., N) — N期間の合計
    # +DI — プラスの価格変動の値(positive directional index)
    # -DI — マイナスの価格変動の値(negative directional index)
    # rsi_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要

    features['adx_s'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_s'])
    features['adx_m'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_m'])
    features['adx_l'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_l'])

    features['adxr_s'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_s'])
    features['adxr_m'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_m'])
    features['adxr_l'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_l'])

    # APO = Shorter Period EMA – Longer Period EMA
    features['apo_s'] = ta.APO(c, fastperiod=params['apo_fastperiod_s'], slowperiod=params['apo_slowperiod_s'], matype=ta.MA_Type.EMA)
    features['apo_m'] = ta.APO(c, fastperiod=params['apo_fastperiod_m'], slowperiod=params['apo_slowperiod_m'], matype=ta.MA_Type.EMA)

    # AroonUp = (N - 過去N日間の最高値からの経過期間) ÷ N × 100
    # AroonDown = (N - 過去N日間の最安値からの経過期間) ÷ N × 100
    # aroon_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要
    #features['aroondown_s'], features['aroonup_s'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_s'])
    #features['aroondown_m'], features['aroonup_m'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_m'])
    #features['aroondown_l'], features['aroonup_l'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_l'])

    # Aronnオシレーター = AroonUp - AroonDown
    # aroonosc_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要
    features['aroonosc_s'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_s'])
    features['aroonosc_m'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_m'])
    features['aroonosc_l'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_l'])

    # BOP = (close - open) / (high - low)
    features['bop'] = ta.BOP(o, h, l, c)

    # CCI = (TP - MA) / (0.015 * MD)
    # TP: (高値+安値+終値) / 3
    # MA: TPの移動平均
    # MD: 平均偏差 = ((MA - TP1) + (MA - TP2) + ...) / N
    features['cci_s'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_s'])
    features['cci_m'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_m'])
    features['cci_l'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_l'])

    # CMO - Chande Momentum Oscillator
    #features['cmo_s'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_s'])
    #features['cmo_m'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_m'])
    #features['cmo_l'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_l'])

    # DX - Directional Movement Index
    features['dx_s'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_s'])
    features['dx_m'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_m'])
    features['dx_l'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_l'])

    # MACD=基準線-相対線
    # 基準線(EMA):過去12日(週・月)間の終値指数平滑平均
    # 相対線(EMA):過去26日(週・月)間の終値指数平滑平均
    # https://www.sevendata.co.jp/shihyou/technical/macd.html
    # macd_slowperiod_m = 30 の場合30分足で((30 + macd_signalperiod_m) * 30)/ 60 = 16.5時間必要(macd_signalperiod_m=3の時)
    macd, macdsignal, macdhist = ta.MACDEXT(c, fastperiod=params['macd_fastperiod_s'],
                                            slowperiod=params['macd_slowperiod_s'],
                                            signalperiod=params['macd_signalperiod_s'],
                                            fastmatype=ta.MA_Type.EMA, slowmatype=ta.MA_Type.EMA,
                                            signalmatype=ta.MA_Type.EMA)
    change_macd = calc_change(macd, macdsignal)
    change_macd.index = macd.index
    features['macd_s'] = macd
    features['macdsignal_s'] = macdsignal
    features['macdhist_s'] = macdhist
    features['change_macd_s'] = change_macd
    macd, macdsignal, macdhist = ta.MACDEXT(c, fastperiod=params['macd_fastperiod_m'],
                                            slowperiod=params['macd_slowperiod_m'],
                                            signalperiod=params['macd_signalperiod_m'],
                                            fastmatype=ta.MA_Type.EMA, slowmatype=ta.MA_Type.EMA,
                                            signalmatype=ta.MA_Type.EMA)
    change_macd = calc_change(macd, macdsignal)
    change_macd.index = macd.index
    features['macd_m'] = macd
    features['macdsignal_m'] = macdsignal
    features['macdhist_m'] = macdhist
    features['change_macd_m'] = change_macd

    # MFI - Money Flow Index
    features['mfi_s'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_s'])
    features['mfi_m'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_m'])
    features['mfi_l'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_l'])

    # MINUS_DI - Minus Directional Indicator
    features['minus_di_s'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_s'])
    features['minus_di_m'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_m'])
    features['minus_di_l'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_l'])

    # MINUS_DM - Minus Directional Movement
    features['minus_dm_s'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_s'])
    features['minus_dm_m'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_m'])
    features['minus_dm_l'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_l'])

    # MOM - Momentum
    features['mom_s'] = ta.MOM(c, timeperiod=params['mom_timeperiod_s'])
    features['mom_m'] = ta.MOM(c, timeperiod=params['mom_timeperiod_m'])
    features['mom_l'] = ta.MOM(c, timeperiod=params['mom_timeperiod_l'])

    # PLUS_DI - Minus Directional Indicator
    features['plus_di_s'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_s'])
    features['plus_di_m'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_m'])
    features['plus_di_l'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_l'])

    # PLUS_DM - Minus Directional Movement
    features['plus_dm_s'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_s'])
    features['plus_dm_m'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_m'])
    features['plus_dm_l'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_l'])

    # PPO - Percentage Price Oscillator
    #features['ppo_s'] = ta.PPO(c, fastperiod=params['ppo_fastperiod_s'], slowperiod=params['ppo_slowperiod_s'], matype=ta.MA_Type.EMA)
    #features['ppo_m'] = ta.PPO(c, fastperiod=params['ppo_fastperiod_m'], slowperiod=params['ppo_slowperiod_m'], matype=ta.MA_Type.EMA)

    # ROC - Rate of change : ((price/prevPrice)-1)*100
    features['roc_s'] = ta.ROC(c, timeperiod=params['roc_timeperiod_s'])
    features['roc_m'] = ta.ROC(c, timeperiod=params['roc_timeperiod_m'])
    features['roc_l'] = ta.ROC(c, timeperiod=params['roc_timeperiod_l'])

    # ROCP = (price-prevPrice) / prevPrice
    # http://www.tadoc.org/indicator/ROCP.htm
    # rocp_timeperiod_l = 30 の場合、30分足で(30 * 30) / 60 = 15時間必要
    rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_s'])
    change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index))
    change_rocp.index = rocp.index
    features['rocp_s'] = rocp
    features['change_rocp_s'] = change_rocp
    rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_m'])
    change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index))
    change_rocp.index = rocp.index
    features['rocp_m'] = rocp
    features['change_rocp_m'] = change_rocp
    rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_l'])
    change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index))
    change_rocp.index = rocp.index
    features['rocp_l'] = rocp
    features['change_rocp_l'] = change_rocp

    # ROCR - Rate of change ratio: (price/prevPrice)
    features['rocr_s'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_s'])
    features['rocr_m'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_m'])
    features['rocr_l'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_l'])

    # ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100
    features['rocr100_s'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_s'])
    features['rocr100_m'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_m'])
    features['rocr100_l'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_l'])

    # RSI = (100 * a) / (a + b) (a: x日間の値上がり幅の合計, b: x日間の値下がり幅の合計)
    # https://www.sevendata.co.jp/shihyou/technical/rsi.html
    # rsi_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要
    #features['rsi_s'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_s'])
    #features['rsi_m'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_m'])
    #features['rsi_l'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_l'])


    # FASTK(KPeriod) = 100 * (Today's Close - LowestLow) / (HighestHigh - LowestLow)
    # FASTD(FastDperiod) = MA Smoothed FASTK over FastDperiod
    # http://www.tadoc.org/indicator/STOCHF.htm
    # stockf_fastk_period_l=30の場合30分足で、(((30 + 30) * 30) / 60(min)) = 30時間必要 (LowestLowが移動平均の30分余分に必要なので60period余分に計算する)
    fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_s'], fastd_period=params['stockf_fastd_period_s'], fastd_matype=ta.MA_Type.EMA)
    change_stockf = calc_change(fastk, fastd)
    change_stockf.index = fastk.index
    features['fastk_s'] = fastk
    features['fastd_s'] = fastd
    features['fast_change_s'] = change_stockf
    fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_m'], fastd_period=params['stockf_fastd_period_m'], fastd_matype=ta.MA_Type.EMA)
    change_stockf = calc_change(fastk, fastd)
    change_stockf.index = fastk.index
    features['fastk_m'] = fastk
    features['fastd_m'] = fastd
    features['fast_change_m'] = change_stockf
    fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_l'], fastd_period=params['stockf_fastk_period_l'], fastd_matype=ta.MA_Type.EMA)
    change_stockf = calc_change(fastk, fastd)
    change_stockf.index = fastk.index
    features['fastk_l'] = fastk
    features['fastd_l'] = fastd
    features['fast_change_l'] = change_stockf

    # TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
    features['trix_s'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_s'])
    features['trix_m'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_m'])
    features['trix_l'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_l'])

    # ULTOSC - Ultimate Oscillator
    features['ultosc_s'] = ta.ULTOSC(h, l, c, timeperiod1=params['ultosc_timeperiod_s1'], timeperiod2=params['ultosc_timeperiod_s2'], timeperiod3=params['ultosc_timeperiod_s3'])

    # WILLR = (当日終値 - N日間の最高値) / (N日間の最高値 - N日間の最安値)× 100
    # https://inet-sec.co.jp/study/technical-manual/williamsr/
    # willr_timeperiod_l=30の場合30分足で、(30 * 30 / 60) = 15時間必要
    features['willr_s'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_s'])
    features['willr_m'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_m'])
    features['willr_l'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_l'])

    ####################################
    #
    # Volume Indicator Functions
    #
    ####################################

    # Volume Indicator Functions
    # slowperiod_adosc_s = 10の場合、30分足で(10 * 30) / 60 = 5時間必要
    features['ad'] = ta.AD(h, l, c, v)
    features['adosc_s'] = ta.ADOSC(h, l, c, v, fastperiod=params['fastperiod_adosc_s'], slowperiod=params['slowperiod_adosc_s'])
    features['obv'] = ta.OBV(c, v)

    ####################################
    #
    # Volatility Indicator Functions
    #
    ####################################

    # ATR - Average True Range
    features['atr_s'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_s'])
    features['atr_m'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_m'])
    features['atr_l'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_l'])

    # NATR - Normalized Average True Range
    #features['natr_s'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_s'])
    #features['natr_m'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_m'])
    #features['natr_l'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_l'])

    # TRANGE - True Range
    features['trange'] = ta.TRANGE(h, l, c)

    ####################################
    #
    # Price Transform Functions
    #
    ####################################

    features['avgprice'] = ta.AVGPRICE(o, h, l, c)
    features['medprice'] = ta.MEDPRICE(h, l)
    #features['typprice'] = ta.TYPPRICE(h, l, c)
    #features['wclprice'] = ta.WCLPRICE(h, l, c)

    ####################################
    #
    # Cycle Indicator Functions
    #
    ####################################

    #features['ht_dcperiod'] = ta.HT_DCPERIOD(c)
    #features['ht_dcphase'] = ta.HT_DCPHASE(c)
    #features['inphase'], features['quadrature'] = ta.HT_PHASOR(c)
    #features['sine'], features['leadsine'] = ta.HT_SINE(c)
    features['integer'] = ta.HT_TRENDMODE(c)

    ####################################
    #
    # Statistic Functions
    #
    ####################################

    # BETA - Beta

    features['beta_s'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_s'])
    features['beta_m'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_m'])
    features['beta_l'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_l'])

    # CORREL - Pearson's Correlation Coefficient (r)
    #features['correl_s'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_s'])
    #features['correl_m'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_m'])
    #features['correl_l'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_l'])

    # LINEARREG - Linear Regression
    #features['linearreg_s'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_s'])
    #features['linearreg_m'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_m'])
    #features['linearreg_l'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_l'])

    # LINEARREG_ANGLE - Linear Regression Angle
    features['linearreg_angle_s'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_s'])
    features['linearreg_angle_m'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_m'])
    features['linearreg_angle_l'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_l'])

    # LINEARREG_INTERCEPT - Linear Regression Intercept
    features['linearreg_intercept_s'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_s'])
    features['linearreg_intercept_m'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_m'])
    features['linearreg_intercept_l'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_l'])

    # LINEARREG_SLOPE - Linear Regression Slope
    features['linearreg_slope_s'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_s'])
    features['linearreg_slope_m'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_m'])
    features['linearreg_slope_l'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_l'])

    # STDDEV - Standard Deviation
    features['stddev_s'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_s'], nbdev=1)
    features['stddev_m'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_m'], nbdev=1)
    features['stddev_l'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_l'], nbdev=1)

    # TSF - Time Series Forecast
    features['tsf_s'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_s'])
    features['tsf_m'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_m'])
    features['tsf_l'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_l'])

    # VAR - Variance
    #features['var_s'] = ta.VAR(c, timeperiod=params['var_timeperiod_s'], nbdev=1)
    #features['var_m'] = ta.VAR(c, timeperiod=params['var_timeperiod_m'], nbdev=1)
    #features['var_l'] = ta.VAR(c, timeperiod=params['var_timeperiod_l'], nbdev=1)

    # ボリンジャーバンド
    # bbands_timeperiod_l = 30の場合、30分足で(30 * 30) / 60 = 15時間必要
    bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_s'],
                                              nbdevup=params['bbands_nbdevup_s'], nbdevdn=params['bbands_nbdevdn_s'],
                                              matype=ta.MA_Type.EMA)
    bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend1[c > bb_upper] = 1
    bb_trend1[c < bb_lower] = -1
    bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend2[c > bb_middle] = 1
    bb_trend2[c < bb_middle] = -1
    features['bb_upper_s'] = bb_upper
    features['bb_middle_s'] = bb_middle
    features['bb_lower_s'] = bb_lower
    features['bb_trend1_s'] = bb_trend1
    features['bb_trend2_s'] = bb_trend2
    bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_m'],
                                              nbdevup=params['bbands_nbdevup_m'], nbdevdn=params['bbands_nbdevdn_m'],
                                              matype=ta.MA_Type.EMA)
    bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend1[c > bb_upper] = 1
    bb_trend1[c < bb_lower] = -1
    bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend2[c > bb_middle] = 1
    bb_trend2[c < bb_middle] = -1
    features['bb_upper_m'] = bb_upper
    features['bb_middle_m'] = bb_middle
    features['bb_lower_m'] = bb_lower
    features['bb_trend1_m'] = bb_trend1
    features['bb_trend2_m'] = bb_trend2
    bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_l'],
                                              nbdevup=params['bbands_nbdevup_l'], nbdevdn=params['bbands_nbdevdn_l'],
                                              matype=ta.MA_Type.EMA)
    bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend1[c > bb_upper] = 1
    bb_trend1[c < bb_lower] = -1
    bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index)
    bb_trend2[c > bb_middle] = 1
    bb_trend2[c < bb_middle] = -1
    features['bb_upper_l'] = bb_upper
    features['bb_middle_l'] = bb_middle
    features['bb_lower_l'] = bb_lower
    features['bb_trend1_l'] = bb_trend1
    features['bb_trend2_l'] = bb_trend2

    # ローソク足
    features['CDL2CROWS'] = ta.CDL2CROWS(o, h, l, c)
    features['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS(o, h, l, c)
    features['CDL3INSIDE'] = ta.CDL3INSIDE(o, h, l, c)
    features['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(o, h, l, c)
    features['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(o, h, l, c)
    features['CDL3STARSINSOUTH'] = ta.CDL3STARSINSOUTH(o, h, l, c)
    features['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(o, h, l, c)
    features['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY(o, h, l, c, penetration=0)
    features['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK(o, h, l, c)
    features['CDLBELTHOLD'] = ta.CDLBELTHOLD(o, h, l, c)
    features['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(o, h, l, c)
    features['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(o, h, l, c)
    features['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(o, h, l, c)
    features['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(o, h, l, c)
    features['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(o, h, l, c, penetration=0)
    #features['CDLDOJI'] = ta.CDLDOJI(o, h, l, c)
    features['CDLDOJISTAR'] = ta.CDLDOJISTAR(o, h, l, c)
    features['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(o, h, l, c)
    features['CDLENGULFING'] = ta.CDLENGULFING(o, h, l, c)
    features['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(o, h, l, c, penetration=0)
    features['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(o, h, l, c, penetration=0)
    #features['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(o, h, l, c)
    features['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(o, h, l, c)
    features['CDLHAMMER'] = ta.CDLHAMMER(o, h, l, c)
    #features['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(o, h, l, c)
    features['CDLHARAMI'] = ta.CDLHARAMI(o, h, l, c)
    features['CDLHARAMICROSS'] = ta.CDLHARAMICROSS(o, h, l, c)
    features['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(o, h, l, c)
    #features['CDLHIKKAKE'] = ta.CDLHIKKAKE(o, h, l, c)
    features['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(o, h, l, c)
    features['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON(o, h, l, c)
    #features['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS(o, h, l, c)
    features['CDLINNECK'] = ta.CDLINNECK(o, h, l, c)
    #features['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(o, h, l, c)
    features['CDLKICKING'] = ta.CDLKICKING(o, h, l, c)
    features['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH(o, h, l, c)
    features['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM(o, h, l, c)
    #features['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI(o, h, l, c)
    features['CDLMARUBOZU'] = ta.CDLMARUBOZU(o, h, l, c)
    #features['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW(o, h, l, c)
    features['CDLMATHOLD'] = ta.CDLMATHOLD(o, h, l, c, penetration=0)
    features['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR(o, h, l, c, penetration=0)
    features['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(o, h, l, c, penetration=0)
    features['CDLONNECK'] = ta.CDLONNECK(o, h, l, c)
    features['CDLPIERCING'] = ta.CDLPIERCING(o, h, l, c)
    features['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN(o, h, l, c)
    features['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS(o, h, l, c)
    features['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES(o, h, l, c)
    #features['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(o, h, l, c)
    features['CDLSHORTLINE'] = ta.CDLSHORTLINE(o, h, l, c)
    #features['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(o, h, l, c)
    features['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN(o, h, l, c)
    features['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH(o, h, l, c)
    features['CDLTAKURI'] = ta.CDLTAKURI(o, h, l, c)
    features['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(o, h, l, c)
    features['CDLTHRUSTING'] = ta.CDLTHRUSTING(o, h, l, c)
    features['CDLTRISTAR'] = ta.CDLTRISTAR(o, h, l, c)
    features['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER(o, h, l, c)
    features['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS(o, h, l, c)
    features['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS(o, h, l, c)

    '''
    # トレンドライン
    for dt in datetimerange(candle.index[0], candle.index[-1] + timedelta(minutes=1)):
        start_dt = (dt - timedelta(minutes=130)).strftime('%Y-%m-%d %H:%M:%S')
        end_dt = dt.strftime('%Y-%m-%d %H:%M:%S')
        tmp = candle.loc[(start_dt <= candle.index) & (candle.index <= end_dt)]
        for w_size, stride in [(15, 5), (30, 10), (60, 10), (120, 10)]:
        # for w_size, stride in [(120, 10)]:
            trendlines = calc_trendlines(tmp, w_size, stride)
            if len(trendlines) == 0:
                continue
            trendline_feature = calc_trendline_feature(tmp, trendlines)

            print('{}-{} {} {} {}'.format(dt - timedelta(minutes=130), dt, trendline_feature['high_a'], trendline_feature['high_b'], trendline_feature['high_diff']))

            features.loc[features.index == end_dt, 'trendline_high_a_{}'.format(w_size)] = trendline_feature['high_a']
            features.loc[features.index == end_dt, 'trendline_high_b_{}'.format(w_size)] = trendline_feature['high_b']
            features.loc[features.index == end_dt, 'trendline_high_diff_{}'.format(w_size)] = trendline_feature['high_diff']
            features.loc[features.index == end_dt, 'trendline_low_a_{}'.format(w_size)] = trendline_feature['low_a']
            features.loc[features.index == end_dt, 'trendline_low_b_{}'.format(w_size)] = trendline_feature['low_b']
            features.loc[features.index == end_dt, 'trendline_low_diff_{}'.format(w_size)] = trendline_feature['low_diff']
    '''

    window = 5
    features_ext = features
    for w in range(window):
        tmp = features.shift(periods=60 * (w + 1), freq='S')
        tmp.columns = [c + '_' + str(w + 1) + 'w' for c in features.columns]
        features_ext = pd.concat([features_ext, tmp], axis=1)
    
    if candle_type == '5min':
        features_ext = features_ext.shift(periods=300, freq='S')
        features_ext = features_ext.fillna(method='ffill')
    features_ext = features_ext[features_ext.index == target_dt]
    return features_ext
Ejemplo n.º 20
0
Archivo: DC.py Proyecto: kzil88/huobi
    def collectDATA(self, start_dt, end_dt, para_min, threshold):
        # 建立数据库连接,剔除已入库的部分
        db = pymysql.connect(host='127.0.0.1',
                             user='******',
                             passwd='admin',
                             db='stock',
                             charset='utf8')
        cursor = db.cursor()
        if para_min == 'day':
            sql_done_set = "SELECT * FROM btc_day a where state_dt >= '%s' and state_dt <= '%s' order by state_dt asc" % (
                start_dt, end_dt)
        else:
            sql_done_set = "SELECT * FROM btc_%smin a where state_dt >= '%s' and state_dt <= '%s' order by state_dt asc" % (
                str(para_min), start_dt, end_dt)
        cursor.execute(sql_done_set)
        done_set = cursor.fetchall()
        if len(done_set) == 0:
            raise Exception
        self.date_seq = []
        self.open_list = []
        self.close_list = []
        self.high_list = []
        self.low_list = []
        self.vol_list = []
        self.amount_list = []
        self.tor_list = []
        self.vr_list = []
        self.ma5_list = []
        self.ma10_list = []
        self.ma20_list = []
        self.ma30_list = []
        self.ma60_list = []
        for i in range(len(done_set)):
            self.date_seq.append(done_set[i][0])
            self.open_list.append(float(done_set[i][1]))
            self.close_list.append(float(done_set[i][2]))
            self.high_list.append(float(done_set[i][3]))
            self.low_list.append(float(done_set[i][4]))
            self.vol_list.append(float(done_set[i][6]))
            self.amount_list.append(float(done_set[i][5]))
        db.close()

        cdl_2crows = ta.CDL2CROWS(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_3blackcrows = ta.CDL3BLACKCROWS(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_3inside = ta.CDL3INSIDE(np.array(self.open_list),
                                    np.array(self.high_list),
                                    np.array(self.low_list),
                                    np.array(self.close_list))
        cdl_3linestrike = ta.CDL3LINESTRIKE(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_3outside = ta.CDL3OUTSIDE(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_3starsinsouth = ta.CDL3STARSINSOUTH(np.array(self.open_list),
                                                np.array(self.high_list),
                                                np.array(self.low_list),
                                                np.array(self.close_list))
        cdl_3whitesoldiers = ta.CDL3WHITESOLDIERS(np.array(self.open_list),
                                                  np.array(self.high_list),
                                                  np.array(self.low_list),
                                                  np.array(self.close_list))
        cdl_abandonedbaby = ta.CDLABANDONEDBABY(np.array(self.open_list),
                                                np.array(self.high_list),
                                                np.array(self.low_list),
                                                np.array(self.close_list))
        cdl_advancedblock = ta.CDLADVANCEBLOCK(np.array(self.open_list),
                                               np.array(self.high_list),
                                               np.array(self.low_list),
                                               np.array(self.close_list))
        cdl_belthold = ta.CDLBELTHOLD(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_breakaway = ta.CDLBREAKAWAY(np.array(self.open_list),
                                        np.array(self.high_list),
                                        np.array(self.low_list),
                                        np.array(self.close_list))
        cdl_closing = ta.CDLCLOSINGMARUBOZU(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_conbaby = ta.CDLCONCEALBABYSWALL(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_counterattack = ta.CDLCOUNTERATTACK(np.array(self.open_list),
                                                np.array(self.high_list),
                                                np.array(self.low_list),
                                                np.array(self.close_list))
        cdl_darkcloud = ta.CDLDARKCLOUDCOVER(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_doji = ta.CDLDOJI(np.array(self.open_list),
                              np.array(self.high_list),
                              np.array(self.low_list),
                              np.array(self.close_list))
        cdl_dojistar = ta.CDLDOJISTAR(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_dragondoji = ta.CDLDRAGONFLYDOJI(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_eng = ta.CDLENGULFING(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_evedoji = ta.CDLEVENINGDOJISTAR(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_evestar = ta.CDLEVENINGSTAR(np.array(self.open_list),
                                        np.array(self.high_list),
                                        np.array(self.low_list),
                                        np.array(self.close_list))
        cdl_gapside = ta.CDLGAPSIDESIDEWHITE(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_gravedoji = ta.CDLGRAVESTONEDOJI(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_hammer = ta.CDLHAMMER(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_hanging = ta.CDLHANGINGMAN(np.array(self.open_list),
                                       np.array(self.high_list),
                                       np.array(self.low_list),
                                       np.array(self.close_list))
        cdl_hara = ta.CDLHARAMI(np.array(self.open_list),
                                np.array(self.high_list),
                                np.array(self.low_list),
                                np.array(self.close_list))
        cdl_haracross = ta.CDLHARAMICROSS(np.array(self.open_list),
                                          np.array(self.high_list),
                                          np.array(self.low_list),
                                          np.array(self.close_list))
        cdl_highwave = ta.CDLHIGHWAVE(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_hikk = ta.CDLHIKKAKE(np.array(self.open_list),
                                 np.array(self.high_list),
                                 np.array(self.low_list),
                                 np.array(self.close_list))
        cdl_hikkmod = ta.CDLHIKKAKEMOD(np.array(self.open_list),
                                       np.array(self.high_list),
                                       np.array(self.low_list),
                                       np.array(self.close_list))
        cdl_homing = ta.CDLHOMINGPIGEON(np.array(self.open_list),
                                        np.array(self.high_list),
                                        np.array(self.low_list),
                                        np.array(self.close_list))
        cdl_i3crows = ta.CDLIDENTICAL3CROWS(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_inneck = ta.CDLINNECK(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_inverhammer = ta.CDLINVERTEDHAMMER(np.array(self.open_list),
                                               np.array(self.high_list),
                                               np.array(self.low_list),
                                               np.array(self.close_list))
        cdl_kicking = ta.CDLKICKING(np.array(self.open_list),
                                    np.array(self.high_list),
                                    np.array(self.low_list),
                                    np.array(self.close_list))
        cdl_kicking2 = ta.CDLKICKINGBYLENGTH(np.array(self.open_list),
                                             np.array(self.high_list),
                                             np.array(self.low_list),
                                             np.array(self.close_list))
        cdl_ladder = ta.CDLLADDERBOTTOM(np.array(self.open_list),
                                        np.array(self.high_list),
                                        np.array(self.low_list),
                                        np.array(self.close_list))
        cdl_longdoji = ta.CDLLONGLEGGEDDOJI(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_longline = ta.CDLLONGLINE(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_marubo = ta.CDLMARUBOZU(np.array(self.open_list),
                                    np.array(self.high_list),
                                    np.array(self.low_list),
                                    np.array(self.close_list))
        cdl_matchinglow = ta.CDLMATCHINGLOW(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_mathold = ta.CDLMATHOLD(np.array(self.open_list),
                                    np.array(self.high_list),
                                    np.array(self.low_list),
                                    np.array(self.close_list))
        cdl_morningdoji = ta.CDLMORNINGDOJISTAR(np.array(self.open_list),
                                                np.array(self.high_list),
                                                np.array(self.low_list),
                                                np.array(self.close_list))
        cdl_morningstar = ta.CDLMORNINGSTAR(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_onneck = ta.CDLONNECK(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_pier = ta.CDLPIERCING(np.array(self.open_list),
                                  np.array(self.high_list),
                                  np.array(self.low_list),
                                  np.array(self.close_list))
        cdl_rick = ta.CDLRICKSHAWMAN(np.array(self.open_list),
                                     np.array(self.high_list),
                                     np.array(self.low_list),
                                     np.array(self.close_list))
        cdl_3methords = ta.CDLRISEFALL3METHODS(np.array(self.open_list),
                                               np.array(self.high_list),
                                               np.array(self.low_list),
                                               np.array(self.close_list))
        cdl_seprate = ta.CDLSEPARATINGLINES(np.array(self.open_list),
                                            np.array(self.high_list),
                                            np.array(self.low_list),
                                            np.array(self.close_list))
        cdl_shoot = ta.CDLSHOOTINGSTAR(np.array(self.open_list),
                                       np.array(self.high_list),
                                       np.array(self.low_list),
                                       np.array(self.close_list))
        cdl_shortcandle = ta.CDLSHORTLINE(np.array(self.open_list),
                                          np.array(self.high_list),
                                          np.array(self.low_list),
                                          np.array(self.close_list))
        cdl_spin = ta.CDLSPINNINGTOP(np.array(self.open_list),
                                     np.array(self.high_list),
                                     np.array(self.low_list),
                                     np.array(self.close_list))
        cdl_stalled = ta.CDLSTALLEDPATTERN(np.array(self.open_list),
                                           np.array(self.high_list),
                                           np.array(self.low_list),
                                           np.array(self.close_list))
        cdl_sandwich = ta.CDLSTICKSANDWICH(np.array(self.open_list),
                                           np.array(self.high_list),
                                           np.array(self.low_list),
                                           np.array(self.close_list))
        cdl_taku = ta.CDLTAKURI(np.array(self.open_list),
                                np.array(self.high_list),
                                np.array(self.low_list),
                                np.array(self.close_list))
        cdl_takugap = ta.CDLTASUKIGAP(np.array(self.open_list),
                                      np.array(self.high_list),
                                      np.array(self.low_list),
                                      np.array(self.close_list))
        cdl_thrust = ta.CDLTHRUSTING(np.array(self.open_list),
                                     np.array(self.high_list),
                                     np.array(self.low_list),
                                     np.array(self.close_list))
        cdl_tristar = ta.CDLTRISTAR(np.array(self.open_list),
                                    np.array(self.high_list),
                                    np.array(self.low_list),
                                    np.array(self.close_list))
        cdl_uni = ta.CDLUNIQUE3RIVER(np.array(self.open_list),
                                     np.array(self.high_list),
                                     np.array(self.low_list),
                                     np.array(self.close_list))
        cdl_upgap = ta.CDLUPSIDEGAP2CROWS(np.array(self.open_list),
                                          np.array(self.high_list),
                                          np.array(self.low_list),
                                          np.array(self.close_list))
        cdl_xside = ta.CDLXSIDEGAP3METHODS(np.array(self.open_list),
                                           np.array(self.high_list),
                                           np.array(self.low_list),
                                           np.array(self.close_list))

        self.data_train = []
        self.data_target = []
        self.data_target_onehot = []
        for i in range(len(self.close_list) - 5):
            train = [
                cdl_2crows[i], cdl_3blackcrows[i], cdl_3inside[i],
                cdl_3linestrike[i], cdl_3outside[i], cdl_3starsinsouth[i],
                cdl_3whitesoldiers[i], cdl_abandonedbaby[i],
                cdl_advancedblock[i], cdl_belthold[i], cdl_breakaway[i],
                cdl_closing[i], cdl_conbaby[i], cdl_counterattack[i],
                cdl_darkcloud[i], cdl_doji[i], cdl_dojistar[i],
                cdl_dragondoji[i], cdl_eng[i], cdl_evedoji[i], cdl_evestar[i],
                cdl_gapside[i], cdl_gravedoji[i], cdl_hammer[i],
                cdl_hanging[i], cdl_hara[i], cdl_haracross[i], cdl_highwave[i],
                cdl_hikk[i], cdl_hikkmod[i], cdl_homing[i], cdl_i3crows[i],
                cdl_inneck[i], cdl_inverhammer[i], cdl_kicking[i],
                cdl_kicking2[i], cdl_ladder[i], cdl_longdoji[i],
                cdl_longline[i], cdl_marubo[i], cdl_matchinglow[i],
                cdl_mathold[i], cdl_morningdoji[i], cdl_morningstar[i],
                cdl_onneck[i], cdl_pier[i], cdl_rick[i], cdl_3methords[i],
                cdl_seprate[i], cdl_shoot[i], cdl_shortcandle[i], cdl_spin[i],
                cdl_stalled[i], cdl_sandwich[i], cdl_taku[i], cdl_takugap[i],
                cdl_thrust[i], cdl_tristar[i], cdl_uni[i], cdl_upgap[i],
                cdl_xside[i]
            ]
            self.data_train.append(np.array(train))
            # after_max_price = max(self.close_list[i+1:i + 5])
            # after_min_price = min(self.close_list[i+1:i+5])
            # if after_max_price / self.close_list[i] >= 1.01:
            #     self.data_target.append(float(1.00))
            #     self.data_target_onehot.append([1,0,0])
            # elif after_min_price / self.close_list[i] < 0.99:
            #     self.data_target.append(float(-1.00))
            #     self.data_target_onehot.append([0,1,0])
            # else:
            #     self.data_target.append(float(0.00))
            #     self.data_target_onehot.append([0,0,1])

            after_mean_price = np.array(self.close_list[i + 1:i + 5]).mean()
            if after_mean_price / self.close_list[i] > threshold:
                self.data_target.append(float(1.00))
                self.data_target_onehot.append([1, 0, 0])
            else:
                self.data_target.append(float(-1.00))
                self.data_target_onehot.append([0, 1, 0])
        self.cnt_pos = 0
        self.cnt_pos = len([x for x in self.data_target if x == 1.00])

        self.test_case = []
        self.test_case = np.array([
            cdl_2crows[-1], cdl_3blackcrows[-1], cdl_3inside[-1],
            cdl_3linestrike[-1], cdl_3outside[-1], cdl_3starsinsouth[-1],
            cdl_3whitesoldiers[-1], cdl_abandonedbaby[-1],
            cdl_advancedblock[-1], cdl_belthold[-1], cdl_breakaway[-1],
            cdl_closing[-1], cdl_conbaby[-1], cdl_counterattack[-1],
            cdl_darkcloud[-1], cdl_doji[-1], cdl_dojistar[-1],
            cdl_dragondoji[-1], cdl_eng[-1], cdl_evedoji[-1], cdl_evestar[-1],
            cdl_gapside[-1], cdl_gravedoji[-1], cdl_hammer[-1],
            cdl_hanging[-1], cdl_hara[-1], cdl_haracross[-1], cdl_highwave[-1],
            cdl_hikk[-1], cdl_hikkmod[-1], cdl_homing[-1], cdl_i3crows[-1],
            cdl_inneck[-1], cdl_inverhammer[-1], cdl_kicking[-1],
            cdl_kicking2[-1], cdl_ladder[-1], cdl_longdoji[-1],
            cdl_longline[-1], cdl_marubo[-1], cdl_matchinglow[-1],
            cdl_mathold[-1], cdl_morningdoji[-1], cdl_morningstar[-1],
            cdl_onneck[-1], cdl_pier[-1], cdl_rick[-1], cdl_3methords[-1],
            cdl_seprate[-1], cdl_shoot[-1], cdl_shortcandle[-1], cdl_spin[-1],
            cdl_stalled[-1], cdl_sandwich[-1], cdl_taku[-1], cdl_takugap[-1],
            cdl_thrust[-1], cdl_tristar[-1], cdl_uni[-1], cdl_upgap[-1],
            cdl_xside[-1]
        ])
        self.data_train = np.array(self.data_train)
        self.data_target = np.array(self.data_target)
Ejemplo n.º 21
0
def ta(name, price_h, price_l, price_c, price_v, price_o):
    # function 'MAX'/'MAXINDEX'/'MIN'/'MININDEX'/'MINMAX'/'MINMAXINDEX'/'SUM' is missing
    if name == 'AD':
        return talib.AD(np.array(price_h), np.array(price_l),
                        np.array(price_c), np.asarray(price_v, dtype='float'))
    if name == 'ADOSC':
        return talib.ADOSC(np.array(price_h),
                           np.array(price_l),
                           np.array(price_c),
                           np.asarray(price_v, dtype='float'),
                           fastperiod=2,
                           slowperiod=10)
    if name == 'ADX':
        return talib.ADX(np.array(price_h),
                         np.array(price_l),
                         np.asarray(price_c, dtype='float'),
                         timeperiod=14)
    if name == 'ADXR':
        return talib.ADXR(np.array(price_h),
                          np.array(price_l),
                          np.asarray(price_c, dtype='float'),
                          timeperiod=14)
    if name == 'APO':
        return talib.APO(np.asarray(price_c, dtype='float'),
                         fastperiod=12,
                         slowperiod=26,
                         matype=0)
    if name == 'AROON':
        AROON_DWON, AROON2_UP = talib.AROON(np.array(price_h),
                                            np.asarray(price_l, dtype='float'),
                                            timeperiod=90)
        return (AROON_DWON, AROON2_UP)
    if name == 'AROONOSC':
        return talib.AROONOSC(np.array(price_h),
                              np.asarray(price_l, dtype='float'),
                              timeperiod=14)
    if name == 'ATR':
        return talib.ATR(np.array(price_h),
                         np.array(price_l),
                         np.asarray(price_c, dtype='float'),
                         timeperiod=14)
    if name == 'AVGPRICE':
        return talib.AVGPRICE(np.array(price_o), np.array(price_h),
                              np.array(price_l),
                              np.asarray(price_c, dtype='float'))
    if name == 'BBANDS':
        BBANDS1, BBANDS2, BBANDS3 = talib.BBANDS(np.asarray(price_c,
                                                            dtype='float'),
                                                 matype=MA_Type.T3)
        return BBANDS1
    if name == 'BETA':
        return talib.BETA(np.array(price_h),
                          np.asarray(price_l, dtype='float'),
                          timeperiod=5)
    if name == 'BOP':
        return talib.BOP(np.array(price_o), np.array(price_h),
                         np.array(price_l), np.asarray(price_c, dtype='float'))
    if name == 'CCI':
        return talib.CCI(np.array(price_h),
                         np.array(price_l),
                         np.asarray(price_c, dtype='float'),
                         timeperiod=14)
    if name == 'CDL2CROWS':
        return talib.CDL2CROWS(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDL3BLACKCROWS':
        return talib.CDL3BLACKCROWS(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDL3INSIDE':
        return talib.CDL3INSIDE(np.array(price_o), np.array(price_h),
                                np.array(price_l),
                                np.asarray(price_c, dtype='float'))
    if name == 'CDL3LINESTRIKE':
        return talib.CDL3LINESTRIKE(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDL3OUTSIDE':
        return talib.CDL3OUTSIDE(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDL3STARSINSOUTH':
        return talib.CDL3STARSINSOUTH(np.array(price_o), np.array(price_h),
                                      np.array(price_l),
                                      np.asarray(price_c, dtype='float'))
    if name == 'CDL3WHITESOLDIERS':
        return talib.CDL3WHITESOLDIERS(np.array(price_o), np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'))
    if name == 'CDLABANDONEDBABY':
        return talib.CDLABANDONEDBABY(np.array(price_o),
                                      np.array(price_h),
                                      np.array(price_l),
                                      np.asarray(price_c, dtype='float'),
                                      penetration=0)
    if name == 'CDLADVANCEBLOCK':
        return talib.CDLADVANCEBLOCK(np.array(price_o), np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'))
    if name == 'CDLBELTHOLD':
        return talib.CDLBELTHOLD(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLBREAKAWAY':
        return talib.CDLBREAKAWAY(np.array(price_o), np.array(price_h),
                                  np.array(price_l),
                                  np.asarray(price_c, dtype='float'))
    if name == 'CDLCLOSINGMARUBOZU':
        return talib.CDLCLOSINGMARUBOZU(np.array(price_o), np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'))
    if name == 'CDLCONCEALBABYSWALL':
        return talib.CDLCONCEALBABYSWALL(np.array(price_o), np.array(price_h),
                                         np.array(price_l),
                                         np.asarray(price_c, dtype='float'))
    if name == 'CDLCOUNTERATTACK':
        return talib.CDLCOUNTERATTACK(np.array(price_o), np.array(price_h),
                                      np.array(price_l),
                                      np.asarray(price_c, dtype='float'))
    if name == 'CDLDARKCLOUDCOVER':
        return talib.CDLDARKCLOUDCOVER(np.array(price_o),
                                       np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'),
                                       penetration=0)
    if name == 'CDLDOJI':
        return talib.CDLDOJI(np.array(price_o), np.array(price_h),
                             np.array(price_l),
                             np.asarray(price_c, dtype='float'))
    if name == 'CDLDOJISTAR':
        return talib.CDLDOJISTAR(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLDRAGONFLYDOJI':
        return talib.CDLDRAGONFLYDOJI(np.array(price_o), np.array(price_h),
                                      np.array(price_l),
                                      np.asarray(price_c, dtype='float'))
    if name == 'CDLENGULFING':
        return talib.CDLENGULFING(np.array(price_o), np.array(price_h),
                                  np.array(price_l),
                                  np.asarray(price_c, dtype='float'))
    if name == 'CDLEVENINGDOJISTAR':
        return talib.CDLEVENINGDOJISTAR(np.array(price_o),
                                        np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'),
                                        penetration=0)
    if name == 'CDLEVENINGSTAR':
        return talib.CDLEVENINGSTAR(np.array(price_o),
                                    np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'),
                                    penetration=0)
    if name == 'CDLGAPSIDESIDEWHITE':
        return talib.CDLGAPSIDESIDEWHITE(np.array(price_o), np.array(price_h),
                                         np.array(price_l),
                                         np.asarray(price_c, dtype='float'))
    if name == 'CDLGRAVESTONEDOJI':
        return talib.CDLGRAVESTONEDOJI(np.array(price_o), np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'))
    if name == 'CDLHAMMER':
        return talib.CDLHAMMER(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDLHANGINGMAN':
        return talib.CDLHANGINGMAN(np.array(price_o), np.array(price_h),
                                   np.array(price_l),
                                   np.asarray(price_c, dtype='float'))
    if name == 'CDLHARAMI':
        return talib.CDLHARAMI(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDLHARAMICROSS':
        return talib.CDLHARAMICROSS(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDLHIGHWAVE':
        return talib.CDLHIGHWAVE(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLHIKKAKE':
        return talib.CDLHIKKAKE(np.array(price_o), np.array(price_h),
                                np.array(price_l),
                                np.asarray(price_c, dtype='float'))
    if name == 'CDLHIKKAKEMOD':
        return talib.CDLHIKKAKEMOD(np.array(price_o), np.array(price_h),
                                   np.array(price_l),
                                   np.asarray(price_c, dtype='float'))
    if name == 'CDLHOMINGPIGEON':
        return talib.CDLHOMINGPIGEON(np.array(price_o), np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'))
    if name == 'CDLIDENTICAL3CROWS':
        return talib.CDLIDENTICAL3CROWS(np.array(price_o), np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'))
    if name == 'CDLINNECK':
        return talib.CDLINNECK(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDLINVERTEDHAMMER':
        return talib.CDLINVERTEDHAMMER(np.array(price_o), np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'))
    if name == 'CDLKICKING':
        return talib.CDLKICKING(np.array(price_o), np.array(price_h),
                                np.array(price_l),
                                np.asarray(price_c, dtype='float'))
    if name == 'CDLKICKINGBYLENGTH':
        return talib.CDLKICKINGBYLENGTH(np.array(price_o), np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'))

    if name == 'CDLLADDERBOTTOM':
        return talib.CDLLADDERBOTTOM(np.array(price_o), np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'))
    if name == 'CDLLONGLEGGEDDOJI':
        return talib.CDLLONGLEGGEDDOJI(np.array(price_o), np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'))
    if name == 'CDLLONGLINE':
        return talib.CDLLONGLINE(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLMARUBOZU':
        return talib.CDLMARUBOZU(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLMATCHINGLOW':
        return talib.CDLMATCHINGLOW(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDLMATHOLD':
        return talib.CDLMATHOLD(np.array(price_o), np.array(price_h),
                                np.array(price_l),
                                np.asarray(price_c, dtype='float'))
    if name == 'CDLMORNINGDOJISTAR':
        return talib.CDLMORNINGDOJISTAR(np.array(price_o),
                                        np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'),
                                        penetration=0)
    if name == 'CDLMORNINGSTAR':
        return talib.CDLMORNINGSTAR(np.array(price_o),
                                    np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'),
                                    penetration=0)
    if name == 'CDLONNECK':
        return talib.CDLONNECK(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDLPIERCING':
        return talib.CDLPIERCING(np.array(price_o), np.array(price_h),
                                 np.array(price_l),
                                 np.asarray(price_c, dtype='float'))
    if name == 'CDLRICKSHAWMAN':
        return talib.CDLRICKSHAWMAN(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDLRISEFALL3METHODS':
        return talib.CDLRISEFALL3METHODS(np.array(price_o), np.array(price_h),
                                         np.array(price_l),
                                         np.asarray(price_c, dtype='float'))
    if name == 'CDLSEPARATINGLINES':
        return talib.CDLSEPARATINGLINES(np.array(price_o), np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'))
    if name == 'CDLSHOOTINGSTAR':
        return talib.CDLSHOOTINGSTAR(np.array(price_o), np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'))
    if name == 'CDLSHORTLINE':
        return talib.CDLSHORTLINE(np.array(price_o), np.array(price_h),
                                  np.array(price_l),
                                  np.asarray(price_c, dtype='float'))
    if name == 'CDLSPINNINGTOP':
        return talib.CDLSPINNINGTOP(np.array(price_o), np.array(price_h),
                                    np.array(price_l),
                                    np.asarray(price_c, dtype='float'))
    if name == 'CDLSTALLEDPATTERN':
        return talib.CDLSTALLEDPATTERN(np.array(price_o), np.array(price_h),
                                       np.array(price_l),
                                       np.asarray(price_c, dtype='float'))
    if name == 'CDLSTICKSANDWICH':
        return talib.CDLSTICKSANDWICH(np.array(price_o), np.array(price_h),
                                      np.array(price_l),
                                      np.asarray(price_c, dtype='float'))
    if name == 'CDLTAKURI':
        return talib.CDLTAKURI(np.array(price_o), np.array(price_h),
                               np.array(price_l),
                               np.asarray(price_c, dtype='float'))
    if name == 'CDLTASUKIGAP':
        return talib.CDLTASUKIGAP(np.array(price_o), np.array(price_h),
                                  np.array(price_l),
                                  np.asarray(price_c, dtype='float'))
    if name == 'CDLTHRUSTING':
        return talib.CDLTHRUSTING(np.array(price_o), np.array(price_h),
                                  np.array(price_l),
                                  np.asarray(price_c, dtype='float'))
    if name == 'CDLTRISTAR':
        return talib.CDLTRISTAR(np.array(price_o), np.array(price_h),
                                np.array(price_l),
                                np.asarray(price_c, dtype='float'))
    if name == 'CDLUNIQUE3RIVER':
        return talib.CDLUNIQUE3RIVER(np.array(price_o), np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'))
    if name == 'CDLUPSIDEGAP2CROWS':
        return talib.CDLUPSIDEGAP2CROWS(np.array(price_o), np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'))
    if name == 'CDLXSIDEGAP3METHODS':
        return talib.CDLXSIDEGAP3METHODS(np.array(price_o), np.array(price_h),
                                         np.array(price_l),
                                         np.asarray(price_c, dtype='float'))
    if name == 'CMO':
        return talib.CMO(np.asarray(price_c, dtype='float'), timeperiod=14)
    if name == 'CORREL':
        return talib.CORREL(np.array(price_h),
                            np.asarray(price_l, dtype='float'),
                            timeperiod=30)
    if name == 'DEMA':
        return talib.DEMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'DX':
        return talib.DX(np.array(price_h),
                        np.array(price_l),
                        np.asarray(price_c, dtype='float'),
                        timeperiod=14)
    if name == 'EMA':
        return talib.EMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'HT_DCPERIOD':
        return talib.HT_DCPERIOD(np.asarray(price_c, dtype='float'))
    if name == 'HT_DCPHASE':
        return talib.HT_DCPHASE(np.asarray(price_c, dtype='float'))
    if name == 'HT_PHASOR':
        HT_PHASOR1, HT_PHASOR2 = talib.HT_PHASOR(
            np.asarray(price_c, dtype='float')
        )  # use HT_PHASOR1 for the indication of up and down
        return HT_PHASOR1
    if name == 'HT_SINE':
        HT_SINE1, HT_SINE2 = talib.HT_SINE(np.asarray(price_c, dtype='float'))
        return HT_SINE1
    if name == 'HT_TRENDLINE':
        return talib.HT_TRENDLINE(np.asarray(price_c, dtype='float'))
    if name == 'HT_TRENDMODE':
        return talib.HT_TRENDMODE(np.asarray(price_c, dtype='float'))
    if name == 'KAMA':
        return talib.KAMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'LINEARREG':
        return talib.LINEARREG(np.asarray(price_c, dtype='float'),
                               timeperiod=14)
    if name == 'LINEARREG_ANGLE':
        return talib.LINEARREG_ANGLE(np.asarray(price_c, dtype='float'),
                                     timeperiod=14)
    if name == 'LINEARREG_INTERCEPT':
        return talib.LINEARREG_INTERCEPT(np.asarray(price_c, dtype='float'),
                                         timeperiod=14)
    if name == 'LINEARREG_SLOPE':
        return talib.LINEARREG_SLOPE(np.asarray(price_c, dtype='float'),
                                     timeperiod=14)
    if name == 'MA':
        return talib.MA(np.asarray(price_c, dtype='float'),
                        timeperiod=30,
                        matype=0)
    if name == 'MACD':
        MACD1, MACD2, MACD3 = talib.MACD(np.asarray(price_c, dtype='float'),
                                         fastperiod=12,
                                         slowperiod=26,
                                         signalperiod=9)
        return MACD1
    if nam == 'MACDEXT':
        return talib.MACDEXT(np.asarray(price_c, dtype='float'),
                             fastperiod=12,
                             fastmatype=0,
                             slowperiod=26,
                             slowmatype=0,
                             signalperiod=9,
                             signalmatype=0)
    if name == 'MACDFIX':
        MACDFIX1, MACDFIX2, MACDFIX3 = talib.MACDFIX(np.asarray(price_c,
                                                                dtype='float'),
                                                     signalperiod=9)
        return MACDFIX1
    if name == 'MAMA':
        MAMA1, MAMA2 = talib.MAMA(np.asarray(price_c, dtype='float'),
                                  fastlimit=0,
                                  slowlimit=0)
        return MAMA1
    if name == 'MEDPRICE':
        return talib.MEDPRICE(np.array(price_h),
                              np.asarray(price_l, dtype='float'))
    if name == 'MINUS_DI':
        return talib.MINUS_DI(np.array(price_h),
                              np.array(price_l),
                              np.asarray(price_c, dtype='float'),
                              timeperiod=14)
    if name == 'MINUS_DM':
        return talib.MINUS_DM(np.array(price_h),
                              np.asarray(price_l, dtype='float'),
                              timeperiod=14)
    if name == 'MOM':
        return talib.MOM(np.asarray(price_c, dtype='float'), timeperiod=10)
    if name == 'NATR':
        return talib.NATR(np.array(price_h),
                          np.array(price_l),
                          np.asarray(price_c, dtype='float'),
                          timeperiod=14)
    if name == 'OBV':
        return talib.OBV(np.array(price_c), np.asarray(price_v, dtype='float'))
    if name == 'PLUS_DI':
        return talib.PLUS_DI(np.array(price_h),
                             np.array(price_l),
                             np.asarray(price_c, dtype='float'),
                             timeperiod=14)
    if name == 'PLUS_DM':
        return talib.PLUS_DM(np.array(price_h),
                             np.asarray(price_l, dtype='float'),
                             timeperiod=14)
    if name == 'PPO':
        return talib.PPO(np.asarray(price_c, dtype='float'),
                         fastperiod=12,
                         slowperiod=26,
                         matype=0)
    if name == 'ROC':
        return talib.ROC(np.asarray(price_c, dtype='float'), timeperiod=10)
    if name == 'ROCP':
        return talib.ROCP(np.asarray(price_c, dtype='float'), timeperiod=10)
    if name == 'ROCR100':
        return talib.ROCR100(np.asarray(price_c, dtype='float'), timeperiod=10)
    if name == 'RSI':
        return talib.RSI(np.asarray(price_c, dtype='float'), timeperiod=14)
    if name == 'SAR':
        return talib.SAR(np.array(price_h),
                         np.asarray(price_l, dtype='float'),
                         acceleration=0,
                         maximum=0)
    if name == 'SAREXT':
        return talib.SAREXT(np.array(price_h),
                            np.asarray(price_l, dtype='float'),
                            startvalue=0,
                            offsetonreverse=0,
                            accelerationinitlong=0,
                            accelerationlong=0,
                            accelerationmaxlong=0,
                            accelerationinitshort=0,
                            accelerationshort=0,
                            accelerationmaxshort=0)
    if name == 'SMA':
        return talib.SMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'STDDEV':
        return talib.STDDEV(np.asarray(price_c, dtype='float'),
                            timeperiod=5,
                            nbdev=1)
    if name == 'STOCH':
        STOCH1, STOCH2 = talib.STOCH(np.array(price_h),
                                     np.array(price_l),
                                     np.asarray(price_c, dtype='float'),
                                     fastk_period=5,
                                     slowk_period=3,
                                     slowk_matype=0,
                                     slowd_period=3,
                                     slowd_matype=0)
        return STOCH1
    if name == 'STOCHF':
        STOCHF1, STOCHF2 = talib.STOCHF(np.array(price_h),
                                        np.array(price_l),
                                        np.asarray(price_c, dtype='float'),
                                        fastk_period=5,
                                        fastd_period=3,
                                        fastd_matype=0)
        return STOCHF1
    if name == 'STOCHRSI':
        STOCHRSI1, STOCHRSI2 = talib.STOCHRSI(np.asarray(price_c,
                                                         dtype='float'),
                                              timeperiod=14,
                                              fastk_period=5,
                                              fastd_period=3,
                                              fastd_matype=0)
        return STOCHRSI1
    if name == 'T3':
        return talib.T3(np.asarray(price_c, dtype='float'),
                        timeperiod=5,
                        vfactor=0)
    if name == 'TEMA':
        return talib.TEMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'TRANGE':
        return talib.TRANGE(np.array(price_h), np.array(price_l),
                            np.asarray(price_c, dtype='float'))
    if name == 'TRIMA':
        return talib.TRIMA(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'TRIX':
        return talib.TRIX(np.asarray(price_c, dtype='float'), timeperiod=30)
    if name == 'TSF':
        return talib.TSF(np.asarray(price_c, dtype='float'), timeperiod=14)
    if name == 'TYPPRICE':
        return talib.TYPPRICE(np.array(price_h), np.array(price_l),
                              np.asarray(price_c, dtype='float'))
    if name == 'ULTOSC':
        return talib.ULTOSC(np.array(price_h),
                            np.array(price_l),
                            np.asarray(price_c, dtype='float'),
                            timeperiod1=7,
                            timeperiod2=14,
                            timeperiod3=28)
    if name == 'VAR':
        return talib.VAR(np.asarray(price_c, dtype='float'),
                         timeperiod=5,
                         nbdev=1)
    if name == 'WCLPRICE':
        return talib.WCLPRICE(np.array(price_h), np.array(price_l),
                              np.asarray(price_c, dtype='float'))
    if name == 'WILLR':
        return talib.WILLR(np.array(price_h),
                           np.array(price_l),
                           np.asarray(price_c, dtype='float'),
                           timeperiod=14)
    if name == 'WMA':
        return talib.WMA(np.asarray(price_c, dtype='float'), timeperiod=30)
Ejemplo n.º 22
0
def create_signal_dataframe(df_):
    o = np.array(df_['始値'])
    c = np.array(df_['終値'])
    l = np.array(df_['安値'])
    h = np.array(df_['高値'])
    df = df_.copy()
    df['CDL2CROWS'] = ta.CDL2CROWS(o, h, l, c)
    df['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS(o, h, l, c)
    df['CDL3INSIDE'] = ta.CDL3INSIDE(o, h, l, c)
    df['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(o, h, l, c)
    df['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(o, h, l, c)
    df['CDL3STARSINSOUTH'] = ta.CDL3STARSINSOUTH(o, h, l, c)
    df['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(o, h, l, c)
    df['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY(o, h, l, c)
    df['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK(o, h, l, c)
    df['CDLBELTHOLD'] = ta.CDLBELTHOLD(o, h, l, c)
    df['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(o, h, l, c)
    df['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(o, h, l, c)
    df['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(o, h, l, c)
    df['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(o, h, l, c)
    df['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(o, h, l, c)
    df['CDLDOJI'] = ta.CDLDOJI(o, h, l, c)
    df['CDLDOJISTAR'] = ta.CDLDOJISTAR(o, h, l, c)
    df['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(o, h, l, c)
    df['CDLENGULFING'] = ta.CDLENGULFING(o, h, l, c)
    df['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(o, h, l, c)
    df['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(o, h, l, c)
    df['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(o, h, l, c)
    df['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(o, h, l, c)
    df['CDLHAMMER'] = ta.CDLHAMMER(o, h, l, c)
    df['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(o, h, l, c)
    df['CDLHARAMI'] = ta.CDLHARAMI(o, h, l, c)
    df['CDLHARAMICROSS'] = ta.CDLHARAMICROSS(o, h, l, c)
    df['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(o, h, l, c)
    df['CDLHIKKAKE'] = ta.CDLHIKKAKE(o, h, l, c)
    df['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(o, h, l, c)
    df['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON(o, h, l, c)
    df['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS(o, h, l, c)
    df['CDLINNECK'] = ta.CDLINNECK(o, h, l, c)
    df['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(o, h, l, c)
    df['CDLKICKING'] = ta.CDLKICKING(o, h, l, c)
    df['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH(o, h, l, c)
    df['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM(o, h, l, c)
    df['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI(o, h, l, c)
    df['CDLLONGLINE'] = ta.CDLLONGLINE(o, h, l, c)
    df['CDLMARUBOZU'] = ta.CDLMARUBOZU(o, h, l, c)
    df['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW(o, h, l, c)
    df['CDLMATHOLD'] = ta.CDLMATHOLD(o, h, l, c)
    df['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR(o, h, l, c)
    df['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(o, h, l, c)
    df['CDLONNECK'] = ta.CDLONNECK(o, h, l, c)
    df['CDLPIERCING'] = ta.CDLPIERCING(o, h, l, c)
    df['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN(o, h, l, c)
    df['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS(o, h, l, c)
    df['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES(o, h, l, c)
    df['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(o, h, l, c)
    df['CDLSHORTLINE'] = ta.CDLSHORTLINE(o, h, l, c)
    df['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(o, h, l, c)
    df['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN(o, h, l, c)
    df['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH(o, h, l, c)
    df['CDLTAKURI'] = ta.CDLTAKURI(o, h, l, c)
    df['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(o, h, l, c)
    df['CDLTHRUSTING'] = ta.CDLTHRUSTING(o, h, l, c)
    df['CDLTRISTAR'] = ta.CDLTRISTAR(o, h, l, c)
    df['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER(o, h, l, c)
    df['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS(o, h, l, c)
    df['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS(o, h, l, c)
    return df
Ejemplo n.º 23
0
def add_ta_features(df, ta_settings):
    """Add technial analysis features from typical financial dataset that
    typically include columns such as "open", "high", "low", "price" and
    "volume".

    http://mrjbq7.github.io/ta-lib/

    Args:
        df(pandas.DataFrame): original DataFrame.
        ta_settings(dict): configuration.
    Returns:
        pandas.DataFrame: DataFrame with new features included.
    """

    open = df['open']
    high = df['high']
    low = df['low']
    close = df['price']
    volume = df['volume']

    if ta_settings['overlap']:

        df['ta_overlap_bbands_upper'], df['ta_overlap_bbands_middle'], df[
            'ta_overlap_bbands_lower'] = ta.BBANDS(close,
                                                   timeperiod=5,
                                                   nbdevup=2,
                                                   nbdevdn=2,
                                                   matype=0)
        df['ta_overlap_dema'] = ta.DEMA(
            close, timeperiod=15)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_overlap_ema'] = ta.EMA(close, timeperiod=30)
        df['ta_overlap_kama'] = ta.KAMA(close, timeperiod=30)
        df['ta_overlap_ma'] = ta.MA(close, timeperiod=30, matype=0)
        df['ta_overlap_mama_mama'], df['ta_overlap_mama_fama'] = ta.MAMA(close)
        period = np.random.randint(10, 20, size=len(close)).astype(float)
        df['ta_overlap_mavp'] = ta.MAVP(close,
                                        period,
                                        minperiod=2,
                                        maxperiod=30,
                                        matype=0)
        df['ta_overlap_midpoint'] = ta.MIDPOINT(close, timeperiod=14)
        df['ta_overlap_midprice'] = ta.MIDPRICE(high, low, timeperiod=14)
        df['ta_overlap_sar'] = ta.SAR(high, low, acceleration=0, maximum=0)
        df['ta_overlap_sarext'] = ta.SAREXT(high,
                                            low,
                                            startvalue=0,
                                            offsetonreverse=0,
                                            accelerationinitlong=0,
                                            accelerationlong=0,
                                            accelerationmaxlong=0,
                                            accelerationinitshort=0,
                                            accelerationshort=0,
                                            accelerationmaxshort=0)
        df['ta_overlap_sma'] = ta.SMA(close, timeperiod=30)
        df['ta_overlap_t3'] = ta.T3(close, timeperiod=5, vfactor=0)
        df['ta_overlap_tema'] = ta.TEMA(
            close, timeperiod=12)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_overlap_trima'] = ta.TRIMA(close, timeperiod=30)
        df['ta_overlap_wma'] = ta.WMA(close, timeperiod=30)

        # NOTE: Commented to avoid a lot of Nan values
        # df['ta_overlap_ht_trendline'] = ta.HT_TRENDLINE(close)

    if ta_settings['momentum']:

        df['ta_momentum_adx'] = ta.ADX(high, low, close, timeperiod=14)
        df['ta_momentum_adxr'] = ta.ADXR(high, low, close, timeperiod=14)
        df['ta_momentum_apo'] = ta.APO(close,
                                       fastperiod=12,
                                       slowperiod=26,
                                       matype=0)
        df['ta_momentum_aroondown'], df['ta_momentum_aroonup'] = ta.AROON(
            high, low, timeperiod=14)
        df['ta_momentum_aroonosc'] = ta.AROONOSC(high, low, timeperiod=14)
        df['ta_momentum_bop'] = ta.BOP(open, high, low, close)
        df['ta_momentum_cci'] = ta.CCI(high, low, close, timeperiod=14)
        df['ta_momentum_cmo'] = ta.CMO(close, timeperiod=14)
        df['ta_momentum_dx'] = ta.DX(high, low, close, timeperiod=14)
        df['ta_momentum_macd_macd'], df['ta_momentum_macd_signal'], df[
            'ta_momentum_macd_hist'] = ta.MACD(close,
                                               fastperiod=12,
                                               slowperiod=26,
                                               signalperiod=9)
        df['ta_momentum_macdext_macd'], df['ta_momentum_macdext_signal'], df[
            'ta_momentum_macdext_hist'] = ta.MACDEXT(close,
                                                     fastperiod=12,
                                                     fastmatype=0,
                                                     slowperiod=26,
                                                     slowmatype=0,
                                                     signalperiod=9,
                                                     signalmatype=0)
        df['ta_momentum_macdfix_macd'], df['ta_momentum_macdfix_signal'], df[
            'ta_momentum_macdfix_hist'] = ta.MACDFIX(close, signalperiod=9)
        df['ta_momentum_mfi'] = ta.MFI(high, low, close, volume, timeperiod=14)
        df['ta_momentum_minus_di'] = ta.MINUS_DI(high,
                                                 low,
                                                 close,
                                                 timeperiod=14)
        df['ta_momentum_minus_dm'] = ta.MINUS_DM(high, low, timeperiod=14)
        df['ta_momentum_mom'] = ta.MOM(close, timeperiod=10)
        df['ta_momentum_plus_di'] = ta.PLUS_DI(high, low, close, timeperiod=14)
        df['ta_momentum_plus_dm'] = ta.PLUS_DM(high, low, timeperiod=14)
        df['ta_momentum_ppo'] = ta.PPO(close,
                                       fastperiod=12,
                                       slowperiod=26,
                                       matype=0)
        df['ta_momentum_roc'] = ta.ROC(close, timeperiod=10)
        df['ta_momentum_rocp'] = ta.ROCP(close, timeperiod=10)
        df['ta_momentum_rocr'] = ta.ROCR(close, timeperiod=10)
        df['ta_momentum_rocr100'] = ta.ROCR100(close, timeperiod=10)
        df['ta_momentum_rsi'] = ta.RSI(close, timeperiod=14)
        df['ta_momentum_slowk'], df['ta_momentum_slowd'] = ta.STOCH(
            high,
            low,
            close,
            fastk_period=5,
            slowk_period=3,
            slowk_matype=0,
            slowd_period=3,
            slowd_matype=0)
        df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHF(
            high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)
        df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHRSI(
            close,
            timeperiod=14,
            fastk_period=5,
            fastd_period=3,
            fastd_matype=0)
        df['ta_momentum_trix'] = ta.TRIX(
            close, timeperiod=12)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_momentum_ultosc'] = ta.ULTOSC(high,
                                             low,
                                             close,
                                             timeperiod1=7,
                                             timeperiod2=14,
                                             timeperiod3=28)
        df['ta_momentum_willr'] = ta.WILLR(high, low, close, timeperiod=14)

    if ta_settings['volume']:

        df['ta_volume_ad'] = ta.AD(high, low, close, volume)
        df['ta_volume_adosc'] = ta.ADOSC(high,
                                         low,
                                         close,
                                         volume,
                                         fastperiod=3,
                                         slowperiod=10)
        df['ta_volume_obv'] = ta.OBV(close, volume)

    if ta_settings['volatility']:

        df['ta_volatility_atr'] = ta.ATR(high, low, close, timeperiod=14)
        df['ta_volatility_natr'] = ta.NATR(high, low, close, timeperiod=14)
        df['ta_volatility_trange'] = ta.TRANGE(high, low, close)

    if ta_settings['price']:

        df['ta_price_avgprice'] = ta.AVGPRICE(open, high, low, close)
        df['ta_price_medprice'] = ta.MEDPRICE(high, low)
        df['ta_price_typprice'] = ta.TYPPRICE(high, low, close)
        df['ta_price_wclprice'] = ta.WCLPRICE(high, low, close)

    if ta_settings['cycle']:

        df['ta_cycle_ht_dcperiod'] = ta.HT_DCPERIOD(close)
        df['ta_cycle_ht_phasor_inphase'], df[
            'ta_cycle_ht_phasor_quadrature'] = ta.HT_PHASOR(close)
        df['ta_cycle_ht_trendmode'] = ta.HT_TRENDMODE(close)

        # NOTE: Commented to avoid a lot of Nan values
        # df['ta_cycle_ht_dcphase'] = ta.HT_DCPHASE(close)
        # df['ta_cycle_ht_sine_sine'], df['ta_cycle_ht_sine_leadsine'] = ta.HT_SINE(close)

    if ta_settings['pattern']:

        df['ta_pattern_cdl2crows'] = ta.CDL2CROWS(open, high, low, close)
        df['ta_pattern_cdl3blackrows'] = ta.CDL3BLACKCROWS(
            open, high, low, close)
        df['ta_pattern_cdl3inside'] = ta.CDL3INSIDE(open, high, low, close)
        df['ta_pattern_cdl3linestrike'] = ta.CDL3LINESTRIKE(
            open, high, low, close)
        df['ta_pattern_cdl3outside'] = ta.CDL3OUTSIDE(open, high, low, close)
        df['ta_pattern_cdl3starsinsouth'] = ta.CDL3STARSINSOUTH(
            open, high, low, close)
        df['ta_pattern_cdl3whitesoldiers'] = ta.CDL3WHITESOLDIERS(
            open, high, low, close)
        df['ta_pattern_cdlabandonedbaby'] = ta.CDLABANDONEDBABY(open,
                                                                high,
                                                                low,
                                                                close,
                                                                penetration=0)
        df['ta_pattern_cdladvanceblock'] = ta.CDLADVANCEBLOCK(
            open, high, low, close)
        df['ta_pattern_cdlbelthold'] = ta.CDLBELTHOLD(open, high, low, close)
        df['ta_pattern_cdlbreakaway'] = ta.CDLBREAKAWAY(open, high, low, close)
        df['ta_pattern_cdlclosingmarubozu'] = ta.CDLCLOSINGMARUBOZU(
            open, high, low, close)
        df['ta_pattern_cdlconcealbabyswall'] = ta.CDLCONCEALBABYSWALL(
            open, high, low, close)
        df['ta_pattern_cdlcounterattack'] = ta.CDLCOUNTERATTACK(
            open, high, low, close)
        df['ta_pattern_cdldarkcloudcover'] = ta.CDLDARKCLOUDCOVER(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdldoji'] = ta.CDLDOJI(open, high, low, close)
        df['ta_pattern_cdldojistar'] = ta.CDLDOJISTAR(open, high, low, close)
        df['ta_pattern_cdldragonflydoji'] = ta.CDLDRAGONFLYDOJI(
            open, high, low, close)
        df['ta_pattern_cdlengulfing'] = ta.CDLENGULFING(open, high, low, close)
        df['ta_pattern_cdleveningdojistar'] = ta.CDLEVENINGDOJISTAR(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdleveningstar'] = ta.CDLEVENINGSTAR(open,
                                                            high,
                                                            low,
                                                            close,
                                                            penetration=0)
        df['ta_pattern_cdlgapsidesidewhite'] = ta.CDLGAPSIDESIDEWHITE(
            open, high, low, close)
        df['ta_pattern_cdlgravestonedoji'] = ta.CDLGRAVESTONEDOJI(
            open, high, low, close)
        df['ta_pattern_cdlhammer'] = ta.CDLHAMMER(open, high, low, close)
        df['ta_pattern_cdlhangingman'] = ta.CDLHANGINGMAN(
            open, high, low, close)
        df['ta_pattern_cdlharami'] = ta.CDLHARAMI(open, high, low, close)
        df['ta_pattern_cdlharamicross'] = ta.CDLHARAMICROSS(
            open, high, low, close)
        df['ta_pattern_cdlhighwave'] = ta.CDLHIGHWAVE(open, high, low, close)
        df['ta_pattern_cdlhikkake'] = ta.CDLHIKKAKE(open, high, low, close)
        df['ta_pattern_cdlhikkakemod'] = ta.CDLHIKKAKEMOD(
            open, high, low, close)
        df['ta_pattern_cdlhomingpigeon'] = ta.CDLHOMINGPIGEON(
            open, high, low, close)
        df['ta_pattern_cdlidentical3crows'] = ta.CDLIDENTICAL3CROWS(
            open, high, low, close)
        df['ta_pattern_cdlinneck'] = ta.CDLINNECK(open, high, low, close)
        df['ta_pattern_cdlinvertedhammer'] = ta.CDLINVERTEDHAMMER(
            open, high, low, close)
        df['ta_pattern_cdlkicking'] = ta.CDLKICKING(open, high, low, close)
        df['ta_pattern_cdlkickingbylength'] = ta.CDLKICKINGBYLENGTH(
            open, high, low, close)
        df['ta_pattern_cdlladderbottom'] = ta.CDLLADDERBOTTOM(
            open, high, low, close)
        df['ta_pattern_cdllongleggeddoji'] = ta.CDLLONGLEGGEDDOJI(
            open, high, low, close)
        df['ta_pattern_cdllongline'] = ta.CDLLONGLINE(open, high, low, close)
        df['ta_pattern_cdlmarubozu'] = ta.CDLMARUBOZU(open, high, low, close)
        df['ta_pattern_cdlmatchinglow'] = ta.CDLMATCHINGLOW(
            open, high, low, close)
        df['ta_pattern_cdlmathold'] = ta.CDLMATHOLD(open,
                                                    high,
                                                    low,
                                                    close,
                                                    penetration=0)
        df['ta_pattern_cdlmorningdojistar'] = ta.CDLMORNINGDOJISTAR(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdlmorningstar'] = ta.CDLMORNINGSTAR(open,
                                                            high,
                                                            low,
                                                            close,
                                                            penetration=0)
        df['ta_pattern_cdllonneck'] = ta.CDLONNECK(open, high, low, close)
        df['ta_pattern_cdlpiercing'] = ta.CDLPIERCING(open, high, low, close)
        df['ta_pattern_cdlrickshawman'] = ta.CDLRICKSHAWMAN(
            open, high, low, close)
        df['ta_pattern_cdlrisefall3methods'] = ta.CDLRISEFALL3METHODS(
            open, high, low, close)
        df['ta_pattern_cdlseparatinglines'] = ta.CDLSEPARATINGLINES(
            open, high, low, close)
        df['ta_pattern_cdlshootingstar'] = ta.CDLSHOOTINGSTAR(
            open, high, low, close)
        df['ta_pattern_cdlshortline'] = ta.CDLSHORTLINE(open, high, low, close)
        df['ta_pattern_cdlspinningtop'] = ta.CDLSPINNINGTOP(
            open, high, low, close)
        df['ta_pattern_cdlstalledpattern'] = ta.CDLSTALLEDPATTERN(
            open, high, low, close)
        df['ta_pattern_cdlsticksandwich'] = ta.CDLSTICKSANDWICH(
            open, high, low, close)
        df['ta_pattern_cdltakuri'] = ta.CDLTAKURI(open, high, low, close)
        df['ta_pattern_cdltasukigap'] = ta.CDLTASUKIGAP(open, high, low, close)
        df['ta_pattern_cdlthrusting'] = ta.CDLTHRUSTING(open, high, low, close)
        df['ta_pattern_cdltristar'] = ta.CDLTRISTAR(open, high, low, close)
        df['ta_pattern_cdlunique3river'] = ta.CDLUNIQUE3RIVER(
            open, high, low, close)
        df['ta_pattern_cdlupsidegap2crows'] = ta.CDLUPSIDEGAP2CROWS(
            open, high, low, close)
        df['ta_pattern_cdlxsidegap3methods'] = ta.CDLXSIDEGAP3METHODS(
            open, high, low, close)

    if ta_settings['statistic']:

        df['ta_statistic_beta'] = ta.BETA(high, low, timeperiod=5)
        df['ta_statistic_correl'] = ta.CORREL(high, low, timeperiod=30)
        df['ta_statistic_linearreg'] = ta.LINEARREG(close, timeperiod=14)
        df['ta_statistic_linearreg_angle'] = ta.LINEARREG_ANGLE(close,
                                                                timeperiod=14)
        df['ta_statistic_linearreg_intercept'] = ta.LINEARREG_INTERCEPT(
            close, timeperiod=14)
        df['ta_statistic_linearreg_slope'] = ta.LINEARREG_SLOPE(close,
                                                                timeperiod=14)
        df['ta_statistic_stddev'] = ta.STDDEV(close, timeperiod=5, nbdev=1)
        df['ta_statistic_tsf'] = ta.TSF(close, timeperiod=14)
        df['ta_statistic_var'] = ta.VAR(close, timeperiod=5, nbdev=1)

    if ta_settings['math_transforms']:

        df['ta_math_transforms_atan'] = ta.ATAN(close)
        df['ta_math_transforms_ceil'] = ta.CEIL(close)
        df['ta_math_transforms_cos'] = ta.COS(close)
        df['ta_math_transforms_floor'] = ta.FLOOR(close)
        df['ta_math_transforms_ln'] = ta.LN(close)
        df['ta_math_transforms_log10'] = ta.LOG10(close)
        df['ta_math_transforms_sin'] = ta.SIN(close)
        df['ta_math_transforms_sqrt'] = ta.SQRT(close)
        df['ta_math_transforms_tan'] = ta.TAN(close)

    if ta_settings['math_operators']:

        df['ta_math_operators_add'] = ta.ADD(high, low)
        df['ta_math_operators_div'] = ta.DIV(high, low)
        df['ta_math_operators_min'], df['ta_math_operators_max'] = ta.MINMAX(
            close, timeperiod=30)
        df['ta_math_operators_minidx'], df[
            'ta_math_operators_maxidx'] = ta.MINMAXINDEX(close, timeperiod=30)
        df['ta_math_operators_mult'] = ta.MULT(high, low)
        df['ta_math_operators_sub'] = ta.SUB(high, low)
        df['ta_math_operators_sum'] = ta.SUM(close, timeperiod=30)

    return df
Ejemplo n.º 24
0
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLCONCEALBABYSWALL_real = talib.CDLCONCEALBABYSWALL(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLCOUNTERATTACK_real = talib.CDLCOUNTERATTACK(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLDARKCLOUDCOVER_real = talib.CDLDARKCLOUDCOVER(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLDOJI_real = talib.CDLDOJI(resorted['open'],
                              resorted['high'], resorted['low'],
                              resorted['close'])
 CDLDOJISTAR_real = talib.CDLDOJISTAR(resorted['open'],
                                      resorted['high'],
                                      resorted['low'],
                                      resorted['close'])
 CDLDRAGONFLYDOJI_real = talib.CDLDRAGONFLYDOJI(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLENGULFING_real = talib.CDLENGULFING(resorted['open'],
                                        resorted['high'],
                                        resorted['low'],
                                        resorted['close'])
 CDLEVENINGDOJISTAR_real = talib.CDLEVENINGDOJISTAR(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLEVENINGSTAR_real = talib.CDLEVENINGSTAR(
     resorted['open'], resorted['high'], resorted['low'],
     resorted['close'])
 CDLGAPSIDESIDEWHITE_real = talib.CDLGAPSIDESIDEWHITE(
Ejemplo n.º 25
0
def candles(source):
    open = source['open']
    high = source['high']
    low = source['low']
    close = source['close']

    source = source.join(
        pd.Series(talib.CDL2CROWS(open, high, low, close), name='CDL2CROWS'))
    source = source.join(
        pd.Series(talib.CDL3BLACKCROWS(open, high, low, close),
                  name='CDL3BLACKCROWS'))
    source = source.join(
        pd.Series(talib.CDL3INSIDE(open, high, low, close), name='CDL3INSIDE'))
    source = source.join(
        pd.Series(talib.CDL3OUTSIDE(open, high, low, close),
                  name='CDL3OUTSIDE'))
    source = source.join(
        pd.Series(talib.CDL3STARSINSOUTH(open, high, low, close),
                  name='CDL3STARSINSOUTH'))
    source = source.join(
        pd.Series(talib.CDL3WHITESOLDIERS(open, high, low, close),
                  name='CDL3WHITESOLDIERS'))
    source = source.join(
        pd.Series(talib.CDLABANDONEDBABY(open, high, low, close),
                  name='CDLABANDONEDBABY'))
    source = source.join(
        pd.Series(talib.CDLADVANCEBLOCK(open, high, low, close),
                  name='CDLADVANCEBLOCK'))
    source = source.join(
        pd.Series(talib.CDLBELTHOLD(open, high, low, close),
                  name='CDLBELTHOLD'))
    source = source.join(
        pd.Series(talib.CDLBREAKAWAY(open, high, low, close),
                  name='CDLBREAKAWAY'))
    source = source.join(
        pd.Series(talib.CDLCLOSINGMARUBOZU(open, high, low, close),
                  name='CDLCLOSINGMARUBOZU'))
    source = source.join(
        pd.Series(talib.CDLCONCEALBABYSWALL(open, high, low, close),
                  name='CDLCONCEALBABYSWALL'))
    source = source.join(
        pd.Series(talib.CDLCOUNTERATTACK(open, high, low, close),
                  name='CDLCOUNTERATTACK'))
    source = source.join(
        pd.Series(talib.CDLDARKCLOUDCOVER(open, high, low, close),
                  name='CDLDARKCLOUDCOVER'))
    source = source.join(
        pd.Series(talib.CDLDOJI(open, high, low, close), name='CDLDOJI'))
    source = source.join(
        pd.Series(talib.CDLDOJISTAR(open, high, low, close),
                  name='CDLDOJISTAR'))
    source = source.join(
        pd.Series(talib.CDLDRAGONFLYDOJI(open, high, low, close),
                  name='CDLDRAGONFLYDOJI'))
    source = source.join(
        pd.Series(talib.CDLENGULFING(open, high, low, close),
                  name='CDLENGULFING'))
    source = source.join(
        pd.Series(talib.CDLEVENINGDOJISTAR(open, high, low, close),
                  name='CDLEVENINGDOJISTAR'))
    source = source.join(
        pd.Series(talib.CDLEVENINGSTAR(open, high, low, close),
                  name='CDLEVENINGSTAR'))
    source = source.join(
        pd.Series(talib.CDLGAPSIDESIDEWHITE(open, high, low, close),
                  name='CDLGAPSIDESIDEWHITE'))
    source = source.join(
        pd.Series(talib.CDLGRAVESTONEDOJI(open, high, low, close),
                  name='CDLGRAVESTONEDOJI'))
    source = source.join(
        pd.Series(talib.CDLHAMMER(open, high, low, close), name='CDLHAMMER'))
    source = source.join(
        pd.Series(talib.CDLHANGINGMAN(open, high, low, close),
                  name='CDLHANGINGMAN'))
    source = source.join(
        pd.Series(talib.CDLHARAMI(open, high, low, close), name='CDLHARAMI'))
    source = source.join(
        pd.Series(talib.CDLHARAMICROSS(open, high, low, close),
                  name='CDLHARAMICROSS'))
    source = source.join(
        pd.Series(talib.CDLHIGHWAVE(open, high, low, close),
                  name='CDLHIGHWAVE'))
    source = source.join(
        pd.Series(talib.CDLHIKKAKE(open, high, low, close), name='CDLHIKKAKE'))
    source = source.join(
        pd.Series(talib.CDLHIKKAKEMOD(open, high, low, close),
                  name='CDLHIKKAKEMOD'))
    source = source.join(
        pd.Series(talib.CDLHOMINGPIGEON(open, high, low, close),
                  name='CDLHOMINGPIGEON'))
    source = source.join(
        pd.Series(talib.CDLIDENTICAL3CROWS(open, high, low, close),
                  name='CDLIDENTICAL3CROWS'))
    source = source.join(
        pd.Series(talib.CDLINNECK(open, high, low, close), name='CDLINNECK'))
    source = source.join(
        pd.Series(talib.CDLINVERTEDHAMMER(open, high, low, close),
                  name='CDLINVERTEDHAMMER'))
    source = source.join(
        pd.Series(talib.CDLKICKING(open, high, low, close), name='CDLKICKING'))
    source = source.join(
        pd.Series(talib.CDLKICKINGBYLENGTH(open, high, low, close),
                  name='CDLKICKINGBYLENGTH'))
    source = source.join(
        pd.Series(talib.CDLLADDERBOTTOM(open, high, low, close),
                  name='CDLLADDERBOTTOM'))
    source = source.join(
        pd.Series(talib.CDLLONGLEGGEDDOJI(open, high, low, close),
                  name='CDLLONGLEGGEDDOJI'))
    source = source.join(
        pd.Series(talib.CDLLONGLINE(open, high, low, close),
                  name='CDLLONGLINE'))
    source = source.join(
        pd.Series(talib.CDLMARUBOZU(open, high, low, close),
                  name='CDLMARUBOZU'))
    source = source.join(
        pd.Series(talib.CDLMATCHINGLOW(open, high, low, close),
                  name='CDLMATCHINGLOW'))
    source = source.join(
        pd.Series(talib.CDLMATHOLD(open, high, low, close), name='CDLMATHOLD'))
    source = source.join(
        pd.Series(talib.CDLMORNINGDOJISTAR(open, high, low, close),
                  name='CDLMORNINGDOJISTAR'))
    source = source.join(
        pd.Series(talib.CDLMORNINGSTAR(open, high, low, close),
                  name='CDLMORNINGSTAR'))
    source = source.join(
        pd.Series(talib.CDLONNECK(open, high, low, close), name='CDLONNECK'))
    source = source.join(
        pd.Series(talib.CDLPIERCING(open, high, low, close),
                  name='CDLPIERCING'))
    source = source.join(
        pd.Series(talib.CDLRICKSHAWMAN(open, high, low, close),
                  name='CDLRICKSHAWMAN'))
    source = source.join(
        pd.Series(talib.CDLRISEFALL3METHODS(open, high, low, close),
                  name='CDLRISEFALL3METHODS'))
    source = source.join(
        pd.Series(talib.CDLSEPARATINGLINES(open, high, low, close),
                  name='CDLSEPARATINGLINES'))
    source = source.join(
        pd.Series(talib.CDLSHOOTINGSTAR(open, high, low, close),
                  name='CDLSHOOTINGSTAR'))
    source = source.join(
        pd.Series(talib.CDLSHORTLINE(open, high, low, close),
                  name='CDLSHORTLINE'))
    source = source.join(
        pd.Series(talib.CDLSPINNINGTOP(open, high, low, close),
                  name='CDLSPINNINGTOP'))
    source = source.join(
        pd.Series(talib.CDLSTALLEDPATTERN(open, high, low, close),
                  name='CDLSTALLEDPATTERN'))
    source = source.join(
        pd.Series(talib.CDLSTICKSANDWICH(open, high, low, close),
                  name='CDLSTICKSANDWICH'))
    source = source.join(
        pd.Series(talib.CDLTAKURI(open, high, low, close), name='CDLTAKURI'))
    source = source.join(
        pd.Series(talib.CDLTASUKIGAP(open, high, low, close),
                  name='CDLTASUKIGAP'))
    source = source.join(
        pd.Series(talib.CDLTHRUSTING(open, high, low, close),
                  name='CDLTHRUSTING'))
    source = source.join(
        pd.Series(talib.CDLTRISTAR(open, high, low, close), name='CDLTRISTAR'))
    source = source.join(
        pd.Series(talib.CDLUNIQUE3RIVER(open, high, low, close),
                  name='CDLUNIQUE3RIVER'))
    source = source.join(
        pd.Series(talib.CDLUPSIDEGAP2CROWS(open, high, low, close),
                  name='CDLUPSIDEGAP2CROWS'))
    source = source.join(
        pd.Series(talib.CDLXSIDEGAP3METHODS(open, high, low, close),
                  name='CDLXSIDEGAP3METHODS'))

    return source
Ejemplo n.º 26
0
def CDLDOJISTAR(data):
    res = talib.CDLDOJISTAR(
        data.open.values, data.high.values, data.low.values, data.close.values)
    return pd.DataFrame({'CDLDOJISTAR': res}, index=data.index)
df['Concealing_Baby_Swallow'] = ta.CDLCONCEALBABYSWALL(
    np.array(df['Open']), np.array(df['High']), np.array(df['Low']),
    np.array(df['Adj Close']))
df['Counterattack'] = ta.CDLCOUNTERATTACK(np.array(df['Open']),
                                          np.array(df['High']),
                                          np.array(df['Low']),
                                          np.array(df['Adj Close']))
df['Dark_Cloud_Cover'] = ta.CDLDARKCLOUDCOVER(np.array(df['Open']),
                                              np.array(df['High']),
                                              np.array(df['Low']),
                                              np.array(df['Adj Close']),
                                              penetration=0)
df['Doji'] = ta.CDLDOJI(np.array(df['Open']), np.array(df['High']),
                        np.array(df['Low']), np.array(df['Adj Close']))
df['Doji_Star'] = ta.CDLDOJISTAR(np.array(df['Open']), np.array(df['High']),
                                 np.array(df['Low']),
                                 np.array(df['Adj Close']))
df['Dragonfly_Doji'] = ta.CDLDRAGONFLYDOJI(np.array(df['Open']),
                                           np.array(df['High']),
                                           np.array(df['Low']),
                                           np.array(df['Adj Close']))
df['Engulfing_Pattern'] = ta.CDLENGULFING(np.array(df['Open']),
                                          np.array(df['High']),
                                          np.array(df['Low']),
                                          np.array(df['Adj Close']))
df['Evening_Doji_Star'] = ta.CDLEVENINGDOJISTAR(np.array(df['Open']),
                                                np.array(df['High']),
                                                np.array(df['Low']),
                                                np.array(df['Adj Close']),
                                                penetration=0)
df['Evening_Star'] = ta.CDLEVENINGSTAR(np.array(df['Open']),
def get_technical_indicators(dataset):
    # Create 7 and 21 days Moving Average
    dataset['ma7'] = dataset['Adj Close'].rolling(window=7).mean()
    dataset['ma21'] = dataset['Adj Close'].rolling(window=21).mean()

    # Create Exponential moving average
    dataset['ema'] = dataset['Adj Close'].ewm(com=0.5).mean()

    # Create MACD
    dataset['26ema'] = dataset['Adj Close'].ewm(span=26).mean()
    dataset['12ema'] = dataset['Adj Close'].ewm(span=12).mean()
    dataset['MACD'] = (dataset['12ema'] - dataset['26ema'])

    # Create Momentum
    dataset['momentum'] = dataset['Adj Close'] - 1

    # Create Bollinger Bands
    dataset['20sd'] = dataset['Adj Close'].rolling(20).std()
    dataset['upper_band'] = dataset['ma21'] + (dataset['20sd'] * 2)
    dataset['lower_band'] = dataset['ma21'] - (dataset['20sd'] * 2)

    # Create RSI indicator
    dataset['RSI'] = ta.RSI(np.array(dataset['Adj Close']))

    #Part I: Create Cycle Indicators
    #Create HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period
    dataset['HT_DCPERIOD'] = ta.HT_DCPERIOD(np.array(dataset['Adj Close']))

    #Create HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase
    dataset['HT_DCPHASE'] = ta.HT_DCPHASE(np.array(dataset['Adj Close']))

    #HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode
    dataset['HT_TRENDMODE'] = ta.HT_TRENDMODE(np.array(dataset['Adj Close']))

    #Part II: Create Volatility Indicators
    #Create Average True Range
    dataset['ATR'] = ta.ATR(np.array(dataset['High']),
                            np.array(dataset['Low']),
                            np.array(dataset['Adj Close']),
                            timeperiod=14)

    #Create NATR - Normalized Average True Range
    dataset['NATR'] = ta.NATR(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=14)

    #Create TRANGE - True Range
    dataset['TRANGE'] = ta.TRANGE(np.array(dataset['High']),
                                  np.array(dataset['Low']),
                                  np.array(dataset['Adj Close']))

    #Part III Overlap Studies
    #Create DEMA - Double Exponential Moving Average
    dataset['DEMA'] = ta.DEMA(np.array(dataset['Adj Close']), timeperiod=30)

    #Create HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline
    dataset['HT_TRENDLINE'] = ta.HT_TRENDLINE(np.array(dataset['Adj Close']))

    #Create KAMA - Kaufman Adaptive Moving Average
    dataset['KAMA'] = ta.KAMA(np.array(dataset['Adj Close']), timeperiod=30)

    #Create MIDPOINT - MidPoint over period
    dataset['MIDPOINT'] = ta.MIDPOINT(np.array(dataset['Adj Close']),
                                      timeperiod=14)

    #Create MIDPRICE - Midpoint Price over period
    dataset['MIDPRICE'] = ta.MIDPRICE(np.array(dataset['High']),
                                      np.array(dataset['Low']),
                                      timeperiod=14)

    #Create SAR - Parabolic SAR
    dataset['SAR'] = ta.SAR(np.array(dataset['High']),
                            np.array(dataset['Low']),
                            acceleration=0,
                            maximum=0)

    #Create SMA - Simple Moving Average
    dataset['SMA10'] = ta.SMA(np.array(dataset['Adj Close']), timeperiod=10)

    #Create T3 - Triple Exponential Moving Average (T3)
    dataset['T3'] = ta.T3(np.array(dataset['Adj Close']),
                          timeperiod=5,
                          vfactor=0)

    #Create TRIMA - Triangular Moving Average
    dataset['TRIMA'] = ta.TRIMA(np.array(dataset['Adj Close']), timeperiod=30)

    #Create WMA - Weighted Moving Average
    dataset['WMA'] = ta.WMA(np.array(dataset['Adj Close']), timeperiod=30)

    #PART IV Momentum Indicators
    #Create ADX - Average Directional Movement Index
    dataset['ADX14'] = ta.ADX(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=14)
    dataset['ADX20'] = ta.ADX(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=20)

    #Create ADXR - Average Directional Movement Index Rating
    dataset['ADXR'] = ta.ADXR(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=14)

    #Create APO - Absolute Price Oscillator
    dataset['APO'] = ta.APO(np.array(dataset['Adj Close']),
                            fastperiod=12,
                            slowperiod=26,
                            matype=0)

    #Create AROONOSC - Aroon Oscillator
    dataset['AROONOSC'] = ta.AROONOSC(np.array(dataset['High']),
                                      np.array(dataset['Low']),
                                      timeperiod=14)

    #Create BOP - Balance Of Power
    dataset['BOP'] = ta.BOP(np.array(dataset['Open']),
                            np.array(dataset['High']),
                            np.array(dataset['Low']),
                            np.array(dataset['Adj Close']))

    #Create CCI - Commodity Channel Index
    dataset['CCI3'] = ta.CCI(np.array(dataset['High']),
                             np.array(dataset['Low']),
                             np.array(dataset['Adj Close']),
                             timeperiod=3)
    dataset['CCI5'] = ta.CCI(np.array(dataset['High']),
                             np.array(dataset['Low']),
                             np.array(dataset['Adj Close']),
                             timeperiod=5)
    dataset['CCI10'] = ta.CCI(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=10)
    dataset['CCI14'] = ta.CCI(np.array(dataset['High']),
                              np.array(dataset['Low']),
                              np.array(dataset['Adj Close']),
                              timeperiod=14)

    #Create CMO - Chande Momentum Oscillator
    dataset['CMO'] = ta.CMO(np.array(dataset['Adj Close']), timeperiod=14)

    #Create DX - Directional Movement Index
    dataset['DX'] = ta.DX(np.array(dataset['High']),
                          np.array(dataset['Low']),
                          np.array(dataset['Adj Close']),
                          timeperiod=14)

    #Create MINUS_DI - Minus Directional Indicator
    dataset['MINUS_DI'] = ta.MINUS_DI(np.array(dataset['High']),
                                      np.array(dataset['Low']),
                                      np.array(dataset['Adj Close']),
                                      timeperiod=14)

    #Create MINUS_DM - Minus Directional Movement
    dataset['MINUS_DM'] = ta.MINUS_DM(np.array(dataset['High']),
                                      np.array(dataset['Low']),
                                      timeperiod=14)

    #Create MOM - Momentum
    dataset['MOM3'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=3)
    dataset['MOM5'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=5)
    dataset['MOM10'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=10)

    #Create PLUS_DI - Plus Directional Indicator
    dataset['PLUS_DI'] = ta.PLUS_DI(np.array(dataset['High']),
                                    np.array(dataset['Low']),
                                    np.array(dataset['Adj Close']),
                                    timeperiod=14)

    #Create PLUS_DM - Plus Directional Movement
    dataset['PLUS_DM'] = ta.PLUS_DM(np.array(dataset['High']),
                                    np.array(dataset['Low']),
                                    timeperiod=14)

    #Create PPO - Percentage Price Oscillator
    dataset['PPO'] = ta.PPO(np.array(dataset['Adj Close']),
                            fastperiod=12,
                            slowperiod=26,
                            matype=0)

    #Create ROC - Rate of change : ((price/prevPrice)-1)*100
    dataset['ROC'] = ta.ROC(np.array(dataset['Adj Close']), timeperiod=10)

    #Create ROCP - Rate of change Percentage: (price-prevPrice)/prevPrice
    dataset['ROCP'] = ta.ROCP(np.array(dataset['Adj Close']), timeperiod=10)

    #Create ROCR - Rate of change ratio: (price/prevPrice)
    dataset['ROCR'] = ta.ROCR(np.array(dataset['Adj Close']), timeperiod=10)

    #Create ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100
    dataset['ROCR100'] = ta.ROCR100(np.array(dataset['Adj Close']),
                                    timeperiod=10)

    #Create RSI - Relative Strength Index
    dataset['RSI5'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=5)
    dataset['RSI10'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=10)
    dataset['RSI14'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=14)

    #Create TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
    dataset['TRIX'] = ta.TRIX(np.array(dataset['Adj Close']), timeperiod=30)

    #Create ULTOSC - Ultimate Oscillator
    dataset['ULTOSC'] = ta.ULTOSC(np.array(dataset['High']),
                                  np.array(dataset['Low']),
                                  np.array(dataset['Adj Close']),
                                  timeperiod1=7,
                                  timeperiod2=14,
                                  timeperiod3=28)

    #Create WILLR - Williams' %R
    dataset['WILLR'] = ta.WILLR(np.array(dataset['High']),
                                np.array(dataset['Low']),
                                np.array(dataset['Adj Close']),
                                timeperiod=14)

    #Part V Pattern Recognition
    #Create  CDL2CROWS - Two Crows
    dataset['CDL2CROWS'] = ta.CDL2CROWS(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDL3BLACKCROWS - Three Black Crows
    dataset['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDL3INSIDE - Three Inside Up/Down
    dataset['CDL3INSIDE'] = ta.CDL3INSIDE(np.array(dataset['Open']),
                                          np.array(dataset['High']),
                                          np.array(dataset['Low']),
                                          np.array(dataset['Adj Close']))

    #Create CDL3LINESTRIKE - Three-Line Strike
    dataset['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDL3OUTSIDE - Three Outside Up/Down
    dataset['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDL3STARSINSOUTH - Three Stars In The South
    dataset['CDL3STARSINSOUTH '] = ta.CDL3STARSINSOUTH(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDL3WHITESOLDIERS - Three Advancing White Soldiers
    dataset['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLABANDONEDBABY - Abandoned Baby
    dataset['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY(
        np.array(dataset['Open']),
        np.array(dataset['High']),
        np.array(dataset['Low']),
        np.array(dataset['Adj Close']),
        penetration=0)

    #Create CDLADVANCEBLOCK - Advance Block
    dataset['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLBELTHOLD - Belt-hold
    dataset['CDLBELTHOLD'] = ta.CDLBELTHOLD(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLBREAKAWAY - Breakaway
    dataset['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(np.array(dataset['Open']),
                                              np.array(dataset['High']),
                                              np.array(dataset['Low']),
                                              np.array(dataset['Adj Close']))

    #Create CDLCLOSINGMARUBOZU - Closing Marubozu
    dataset['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLCONCEALBABYSWALL - Concealing Baby Swalnp.array(dataset['Low'])
    dataset['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLCOUNTERATTACK - Counterattack
    dataset['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLDARKCLOUDCOVER - Dark Cloud Cover
    dataset['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(
        np.array(dataset['Open']),
        np.array(dataset['High']),
        np.array(dataset['Low']),
        np.array(dataset['Adj Close']),
        penetration=0)

    #Create CDLDOJI - Doji
    dataset['CDLDOJI'] = ta.CDLDOJI(np.array(dataset['Open']),
                                    np.array(dataset['High']),
                                    np.array(dataset['Low']),
                                    np.array(dataset['Adj Close']))

    #Create CDLDOJISTAR - Doji Star
    dataset['CDLDOJISTAR'] = ta.CDLDOJISTAR(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLDRAGONFLYDOJI - Dragonfly Doji
    dataset['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLENGULFING - Engulfing Pattern
    dataset['CDLENGULFING'] = ta.CDLENGULFING(np.array(dataset['Open']),
                                              np.array(dataset['High']),
                                              np.array(dataset['Low']),
                                              np.array(dataset['Adj Close']))

    #Create CDLEVENINGDOJISTAR - Evening Doji Star
    dataset['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(
        np.array(dataset['Open']),
        np.array(dataset['High']),
        np.array(dataset['Low']),
        np.array(dataset['Adj Close']),
        penetration=0)

    #Create CDLEVENINGSTAR - Evening Star
    dataset['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(np.array(dataset['Open']),
                                                  np.array(dataset['High']),
                                                  np.array(dataset['Low']),
                                                  np.array(
                                                      dataset['Adj Close']),
                                                  penetration=0)

    #Create CDLGAPSIDESIDEWHITE - Up/Down-gap side-by-side white lines
    dataset['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLGRAVESTONEDOJI - Gravestone Doji
    dataset['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLHAMMER - Hammer
    dataset['CDLHAMMER'] = ta.CDLHAMMER(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDLHANGINGMAN - Hanging Man
    dataset['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(np.array(dataset['Open']),
                                                np.array(dataset['High']),
                                                np.array(dataset['Low']),
                                                np.array(dataset['Adj Close']))

    #Create CDLHARAMI - Harami Pattern
    dataset['CDLHARAMI'] = ta.CDLHARAMI(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDLHARAMICROSS - Harami Cross Pattern
    dataset['CDLHARAMICROSS'] = ta.CDLHARAMICROSS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLHIGHWAVE - High-Wave Candle
    dataset['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLHIKKAKE - Hikkake Pattern
    dataset['CDLHIKKAKE'] = ta.CDLHIKKAKE(np.array(dataset['Open']),
                                          np.array(dataset['High']),
                                          np.array(dataset['Low']),
                                          np.array(dataset['Adj Close']))

    #Create CDLHIKKAKEMOD - Modified Hikkake Pattern
    dataset['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(np.array(dataset['Open']),
                                                np.array(dataset['High']),
                                                np.array(dataset['Low']),
                                                np.array(dataset['Adj Close']))

    #Create CDLHOMINGPIGEON - Homing Pigeon
    dataset['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLIDENTICAL3CROWS - Identical Three Crows
    dataset['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLINNECK - In-Neck Pattern
    dataset['CDLINNECK'] = ta.CDLINNECK(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDLINVERTEDHAMMER - Inverted Hammer
    dataset['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLKICKING - Kicking
    dataset['CDLKICKING'] = ta.CDLKICKING(np.array(dataset['Open']),
                                          np.array(dataset['High']),
                                          np.array(dataset['Low']),
                                          np.array(dataset['Adj Close']))

    #Create CDLKICKINGBYLENGTH - Kicking - bull/bear determined by the longer marubozu
    dataset['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLLADDERBOTTOM - Ladder Bottom
    dataset['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLLONGLEGGEDDOJI - Long Legged Doji
    dataset['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLLONGLINE - Long Line Candle
    dataset['CDLLONGLINE'] = ta.CDLLONGLINE(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLMARUBOZU - Marubozu
    dataset['CDLMARUBOZU'] = ta.CDLMARUBOZU(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLMATCHINGLOW - Matching Low
    dataset['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLMATHOLD - Mat Hold
    dataset['CDLMATHOLD'] = ta.CDLMATHOLD(np.array(dataset['Open']),
                                          np.array(dataset['High']),
                                          np.array(dataset['Low']),
                                          np.array(dataset['Adj Close']),
                                          penetration=0)

    #Create CDLMORNINGDOJISTAR - Morning Doji Star
    dataset['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR(
        np.array(dataset['Open']),
        np.array(dataset['High']),
        np.array(dataset['Low']),
        np.array(dataset['Adj Close']),
        penetration=0)

    #Create CDLMORNINGSTAR - Morning Star
    dataset['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(np.array(dataset['Open']),
                                                  np.array(dataset['High']),
                                                  np.array(dataset['Low']),
                                                  np.array(
                                                      dataset['Adj Close']),
                                                  penetration=0)

    #Create CDLONNECK - On-Neck Pattern
    dataset['CDLONNECK'] = ta.CDLONNECK(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDLPIERCING - Piercing Pattern
    dataset['CDLPIERCING'] = ta.CDLPIERCING(np.array(dataset['Open']),
                                            np.array(dataset['High']),
                                            np.array(dataset['Low']),
                                            np.array(dataset['Adj Close']))

    #Create CDLRICKSHAWMAN - Rickshaw Man
    dataset['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLRISEFALL3METHODS - Rising/Falling Three Methods
    dataset['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLSEPARATINGLINES - Separating Lines
    dataset['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLSHOOTINGSTAR - Shooting Star
    dataset['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLSHORTLINE - Short Line Candle
    dataset['CDLSHORTLINE'] = ta.CDLSHORTLINE(np.array(dataset['Open']),
                                              np.array(dataset['High']),
                                              np.array(dataset['Low']),
                                              np.array(dataset['Adj Close']))

    #Create CDLSPINNINGTOP - Spinning Top
    dataset['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLSTALLEDPATTERN - Stalled Pattern
    dataset['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLSTICKSANDWICH - Stick Sandwich
    dataset['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLTAKURI - Takuri (Dragonfly Doji with very long np.array(dataset['Low'])er shadow)
    dataset['CDLTAKURI'] = ta.CDLTAKURI(np.array(dataset['Open']),
                                        np.array(dataset['High']),
                                        np.array(dataset['Low']),
                                        np.array(dataset['Adj Close']))

    #Create CDLTASUKIGAP - Tasuki Gap
    dataset['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(np.array(dataset['Open']),
                                              np.array(dataset['High']),
                                              np.array(dataset['Low']),
                                              np.array(dataset['Adj Close']))

    #Create CDLTHRUSTING - Thrusting Pattern
    dataset['CDLTHRUSTING'] = ta.CDLTHRUSTING(np.array(dataset['Open']),
                                              np.array(dataset['High']),
                                              np.array(dataset['Low']),
                                              np.array(dataset['Adj Close']))

    #Create CDLTRISTAR - Tristar Pattern
    dataset['CDLTRISTAR'] = ta.CDLTRISTAR(np.array(dataset['Open']),
                                          np.array(dataset['High']),
                                          np.array(dataset['Low']),
                                          np.array(dataset['Adj Close']))

    #Create CDLUNIQUE3RIVER - Unique 3 River
    dataset['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLUPSIDEGAP2CROWS - Upside Gap Two Crows
    dataset['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    #Create CDLXSIDEGAP3METHODS - Upside/Downside Gap Three Methods
    dataset['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS(
        np.array(dataset['Open']), np.array(dataset['High']),
        np.array(dataset['Low']), np.array(dataset['Adj Close']))

    return dataset
Ejemplo n.º 29
0
def CDLDOJISTAR(DataFrame):
    res = talib.CDLDOJISTAR(DataFrame.open.values, DataFrame.high.values,
                            DataFrame.low.values, DataFrame.close.values)
    return pd.DataFrame({'CDLDOJISTAR': res}, index=DataFrame.index)
Ejemplo n.º 30
0
def pattern_recognition(df):
    val = 0
    # test_len = 5
    dates = np.array(df.index)
    open = np.array(df.open)
    close = np.array(df.close)
    high = np.array(df.high)
    low = np.array(df.low)
    # volume = np.array(df.volume)
    tristar = talib.CDLTRISTAR(open, high, low, close)
    Two_Crows = talib.CDL2CROWS(open, high, low, close)
    Three_Black_Crows = talib.CDL3BLACKCROWS(open, high, low, close)
    Three_Inside_Up_Down = talib.CDL3INSIDE(open, high, low, close)
    Three_Line_Strike = talib.CDL3LINESTRIKE(open, high, low, close)
    Three_Outside_Up_Down = talib.CDL3OUTSIDE(open, high, low, close)
    Three_Stars_In_The_South = talib.CDL3STARSINSOUTH(open, high, low, close)
    Three_Advancing_White_Soldiers = talib.CDL3WHITESOLDIERS(
        open, high, low, close)
    Abandoned_Baby = talib.CDLABANDONEDBABY(
        open, high, low, close, penetration=0)
    Advance_Block = talib.CDLADVANCEBLOCK(open, high, low, close)
    Belt_hold = talib.CDLBELTHOLD(open, high, low, close)
    Breakaway = talib.CDLBREAKAWAY(open, high, low, close)
    Closing_Marubozu = talib.CDLCLOSINGMARUBOZU(open, high, low, close)
    Concealing_Baby_Swallow = talib.CDLCONCEALBABYSWALL(open, high, low, close)
    Counterattack = talib.CDLCOUNTERATTACK(open, high, low, close)
    Dark_Cloud_Cover = talib.CDLDARKCLOUDCOVER(
        open, high, low, close, penetration=0)
    Doji = talib.CDLDOJI(open, high, low, close)
    Doji_Star = talib.CDLDOJISTAR(open, high, low, close)
    Dragonfly_Doji = talib.CDLDRAGONFLYDOJI(open, high, low, close)
    Engulfing_Pattern = talib.CDLENGULFING(open, high, low, close)
    Evening_Doji_Star = talib.CDLEVENINGDOJISTAR(
        open, high, low, close, penetration=0)
    Evening_Star = talib.CDLEVENINGSTAR(open, high, low, close, penetration=0)
    Up_Down_gap_side_by_side_white_lines = talib.CDLGAPSIDESIDEWHITE(
        open, high, low, close)
    Gravestone_Doji = talib.CDLGRAVESTONEDOJI(open, high, low, close)
    Hammer = talib.CDLHAMMER(open, high, low, close)
    Hanging_Man = talib.CDLHANGINGMAN(open, high, low, close)
    Harami_Pattern = talib.CDLHARAMI(open, high, low, close)
    Harami_Cross_Pattern = talib.CDLHARAMICROSS(open, high, low, close)
    High_Wave_Candle = talib.CDLHIGHWAVE(open, high, low, close)
    Hikkake_Pattern = talib.CDLHIKKAKE(open, high, low, close)
    Modified_Hikkake_Pattern = talib.CDLHIKKAKEMOD(open, high, low, close)
    Homing_Pigeon = talib.CDLHOMINGPIGEON(open, high, low, close)
    Identical_Three_Crows = talib.CDLIDENTICAL3CROWS(open, high, low, close)
    In_Neck_Pattern = talib.CDLINNECK(open, high, low, close)
    Inverted_Hammer = talib.CDLINVERTEDHAMMER(open, high, low, close)
    Kicking = talib.CDLKICKING(open, high, low, close)
    Kicking_bull_bear_determined_by_the_longer_marubozu = talib.CDLKICKINGBYLENGTH(
        open, high, low, close)
    Ladder_Bottom = talib.CDLLADDERBOTTOM(open, high, low, close)
    Long_Legged_Doji = talib.CDLLONGLEGGEDDOJI(open, high, low, close)
    Long_Line_Candle = talib.CDLLONGLINE(open, high, low, close)
    Marubozu = talib.CDLMARUBOZU(open, high, low, close)
    Matching_Low = talib.CDLMATCHINGLOW(open, high, low, close)
    Mat_Hold = talib.CDLMATHOLD(open, high, low, close, penetration=0)
    Morning_Doji_Star = talib.CDLMORNINGDOJISTAR(
        open, high, low, close, penetration=0)
    Morning_Star = talib.CDLMORNINGSTAR(open, high, low, close, penetration=0)
    On_Neck_Pattern = talib.CDLONNECK(open, high, low, close)
    Piercing_Pattern = talib.CDLPIERCING(open, high, low, close)
    Rickshaw_Man = talib.CDLRICKSHAWMAN(open, high, low, close)
    Rising_Falling_Three_Methods = talib.CDLRISEFALL3METHODS(
        open, high, low, close)
    Separating_Lines = talib.CDLSEPARATINGLINES(open, high, low, close)
    Shooting_Star = talib.CDLSHOOTINGSTAR(open, high, low, close)
    Short_Line_Candle = talib.CDLSHORTLINE(open, high, low, close)
    Spinning_Top = talib.CDLSPINNINGTOP(open, high, low, close)
    Stalled_Pattern = talib.CDLSTALLEDPATTERN(open, high, low, close)
    Stick_Sandwich = talib.CDLSTICKSANDWICH(open, high, low, close)
    Takuri_Dragonfly_Doji_with_very_long_lower_shadow = talib.CDLTAKURI(
        open, high, low, close)
    Tasuki_Gap = talib.CDLTASUKIGAP(open, high, low, close)
    Thrusting_Pattern = talib.CDLTHRUSTING(open, high, low, close)
    Tristar_Pattern = talib.CDLTRISTAR(open, high, low, close)
    Unique_3_River = talib.CDLUNIQUE3RIVER(open, high, low, close)
    Upside_Gap_Two_Crows = talib.CDLUPSIDEGAP2CROWS(open, high, low, close)
    Upside_Downside_Gap_Three_Methods = talib.CDLXSIDEGAP3METHODS(
        open, high, low, close)
    pattern_arrays = [tristar, Two_Crows, Three_Black_Crows, Three_Inside_Up_Down, Three_Line_Strike, Three_Outside_Up_Down, Three_Stars_In_The_South, Three_Advancing_White_Soldiers, Abandoned_Baby, Advance_Block, Belt_hold, Breakaway, Closing_Marubozu, Concealing_Baby_Swallow, Counterattack, Dark_Cloud_Cover, Doji, Doji_Star, Dragonfly_Doji, Engulfing_Pattern, Evening_Doji_Star, Evening_Star, Up_Down_gap_side_by_side_white_lines, Gravestone_Doji, Hammer, Hanging_Man, Harami_Pattern, Harami_Cross_Pattern, High_Wave_Candle, Hikkake_Pattern, Modified_Hikkake_Pattern, Homing_Pigeon,
                      Identical_Three_Crows, In_Neck_Pattern, Inverted_Hammer, Kicking, Kicking_bull_bear_determined_by_the_longer_marubozu, Ladder_Bottom, Long_Legged_Doji, Long_Line_Candle, Marubozu, Matching_Low, Mat_Hold, Morning_Doji_Star, Morning_Star, On_Neck_Pattern, Piercing_Pattern, Rickshaw_Man, Rising_Falling_Three_Methods, Separating_Lines, Shooting_Star, Short_Line_Candle, Spinning_Top, Stalled_Pattern, Stick_Sandwich, Takuri_Dragonfly_Doji_with_very_long_lower_shadow, Tasuki_Gap, Thrusting_Pattern, Tristar_Pattern, Unique_3_River, Upside_Gap_Two_Crows, Upside_Downside_Gap_Three_Methods]

    pattern_names = ['tristar', 'Two_Crows', 'Three_Black_Crows', 'Three_Inside_Up_Down', 'Three_Line_Strike', 'Three_Outside_Up_Down', 'Three_Stars_In_The_South', 'Three_Advancing_White_Soldiers', 'Abandoned_Baby', 'Advance_Block', 'Belt_hold', 'Breakaway', 'Closing_Marubozu', 'Concealing_Baby_Swallow', 'Counterattack', 'Dark_Cloud_Cover', 'Doji', 'Doji_Star', 'Dragonfly_Doji', 'Engulfing_Pattern', 'Evening_Doji_Star', 'Evening_Star', 'Up_Down_gap_side_by_side_white_lines', 'Gravestone_Doji', 'Hammer', 'Hanging_Man', 'Harami_Pattern', 'Harami_Cross_Pattern', 'High_Wave_Candle', 'Hikkake_Pattern', 'Modified_Hikkake_Pattern', 'Homing_Pigeon',
                     'Identical_Three_Crows', 'In_Neck_Pattern', 'Inverted_Hammer', 'Kicking', 'Kicking_bull_bear_determined_by_the_longer_marubozu', 'Ladder_Bottom', 'Long_Legged_Doji', 'Long_Line_Candle', 'Marubozu', 'Matching_Low', 'Mat_Hold', 'Morning_Doji_Star', 'Morning_Star', 'On_Neck_Pattern', 'Piercing_Pattern', 'Rickshaw_Man', 'Rising_Falling_Three_Methods', 'Separating_Lines', 'Shooting_Star', 'Short_Line_Candle', 'Spinning_Top', 'Stalled_Pattern', 'Stick_Sandwich', 'Takuri_Dragonfly_Doji_with_very_long_lower_shadow', 'Tasuki_Gap', 'Thrusting_Pattern', 'Tristar_Pattern', 'Unique_3_River', 'Upside_Gap_Two_Crows', 'Upside_Downside_Gap_Three_Methods']

    for pattern_results in range(len(pattern_arrays)):
        # print(f'Found {pattern_names[pattern_results]}')
        # print(pattern_arrays[pattern_results])
        for index in range(len(pattern_arrays[pattern_results])):
            value = pattern_arrays[pattern_results][index]
            val = val + value
            # if value != 0:
    #             print(
    #                 f'{pattern_arrays[pattern_results]} index - {index} value - {value}')
    # print('-----------------------------------------------')
    # print(f'Total val = {val}')
    return val