Ejemplo n.º 1
0
def quant_figure_tests():
	df=cf.datagen.ohlc()
	qf=cf.QuantFig(df)
	qf.add_sma()
	qf.add_atr()
	qf.add_bollinger_bands()
	return qf.figure()
Ejemplo n.º 2
0
 def make(self):
     qf = cf.QuantFig(self.df,
                      legend='top',
                      )
     qf.add_bollinger_bands(periods=15, boll_std=2)
     # 设置RSI指标线
     qf.add_rsi(periods=14, showbands=False)
     plyo.plot(qf.iplot(asFigure=True), filename='qf_01.html')
Ejemplo n.º 3
0
def movement(df):
    quotes = df.loc[:, ['Open', 'High', 'Low', 'Close']]

    qf = cf.QuantFig(quotes,
                     title='SPY ETF Data 2020',
                     legend='top',
                     name='Share Price')

    plyo.iplot(qf.iplot(asFigure=True))
Ejemplo n.º 4
0
def ta_dashboard(asset, indicator, start_date, end_date, 
                 k, N, MACD_Fast_Periods, MACD_Slow_Periods, MACD_Signal_Periods,
                 RSI_Periods, RSI_UPPER, RSI_LOWER,
                 EMA_periods,
                 SMA_periods,
                 CCI_periods, CCI_UPPER, CCI_LOWER,
                 minute_data):
    if minute_data is True:
        df = data.DataReader(asset,
                        interval = '1m', 
                        start = end_date - timedelta(days = 1), 
                        end = end_date)
    else:
        df = data.DataReader(asset, 
                        start = start_date,   
                        end = end_date)

    qf = cf.QuantFig(df, title=f'TA Dashboard - {asset}', 
                     legend='right', name=f'{asset}')
    qf.add_volume()
            
    if 'Bollinger Bands' in indicator: 
        qf.add_bollinger_bands(periods=N, 
                               boll_std=k)
    if 'MACD' in indicator: 
        qf.add_macd(fast_period=MACD_Fast_Periods, 
                    slow_period=MACD_Slow_Periods, 
                    signal_period=MACD_Signal_Periods)
    if 'RSI' in indicator: 
        qf.add_rsi(periods=RSI_Periods, 
                   rsi_upper=RSI_UPPER, 
                   rsi_lower=RSI_LOWER, 
                   showbands=True)
    if 'EMA' in indicator:
        qf.add_ema(EMA_periods)
    if 'SMA' in indicator:
        qf.add_sma(SMA_periods)
    if 'CCI' in indicator:
        qf.add_cci(periods = CCI_periods,
                   cci_upper = CCI_UPPER, 
                   cci_lower = CCI_LOWER)

    fig = qf.figure()
    iplot(fig)    
Ejemplo n.º 5
0
 def ta_dashboard(self,asset,indicator,start_date, end_date,bb_k, bb_n, macd_fast, macd_slow, macd_signal,
                          rsi_periods, rsi_upper, rsi_lower):
     df = yf.download(asset,
                     start=start_date,
                     end=end_date,
                     progress=False,
                     auto_adjust=True)
     qf = cf.QuantFig(df, title=f'TA Dashboard - {asset}', legend='right', name=f'{asset}')
     if 'Bollinger Bands' in indicator:
             qf.add_bollinger_bands(periods=bb_n,
                                     boll_std=bb_k)
     if 'MACD' in indicator:
         qf.add_macd(fast_period=macd_fast,
                     slow_period=macd_slow,
                     signal_period=macd_signal)
     if 'RSI' in indicator:
         qf.add_rsi(periods=rsi_periods,
                     rsi_upper=rsi_upper,
                     rsi_lower=rsi_lower,
                     showbands=True)
     return qf.iplot()
Ejemplo n.º 6
0
import cufflinks as cf
import plotly.offline as plyo

raw=pd.read_csv('./Data/601952.SS.csv',index_col=0,parse_dates=True)
raw2=pd.read_csv('./Data/000001.SS.csv',index_col=0,parse_dates=True)
cols=['Open' ,'High','Low', 'Close','Volume']
quotes=raw[cols]
quotes_base=raw2[cols]
q_calc=quotes*500/quotes_base
q_calc.Volume/=300
q_calc.dropna(inplace=True)
q_calc.Volume.replace([np.inf, -np.inf], 229,inplace=True)
q_calc.Volume.replace(np.nan,0,inplace=True)

qf1=cf.QuantFig(quotes,title='Suken',legend='top',name='Suken Stock')
qf2=cf.QuantFig(quotes_base,title='Shanghai',legend='top',name='Shanghai Index')
qf3=cf.QuantFig(q_calc,title='Scale',legend='top',name='Suken/Shanghai')

plyo.iplot(qf1.iplot(asFigure=True),image='png',filename='qf1_1')
qf1.add_bollinger_bands(periods=15,boll_std=2)
plyo.iplot(qf1.iplot(asFigure=True),image='png',filename='qf1_2')
qf1.add_bollinger_bands(periods=15,boll_std=2)
plyo.iplot(qf1.iplot(asFigure=True),image='png',filename='qf1_3')

plyo.iplot(qf2.iplot(asFigure=True),image='png',filename=f'qf2_01')
qf2.add_bollinger_bands(periods=15,boll_std=2)
plyo.iplot(qf2.iplot(asFigure=True),image='png',filename=f'qf2_02')
qf2.add_rsi(periods=14, showbands=False)
plyo.iplot(qf2.iplot(asFigure=True),image='png',filename=f'qf2_03')
Ejemplo n.º 7
0
import pandas as pd
import numpy as np
import yfinance as yf

import cufflinks as cf
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode()

df_twtr = yf.download('TWTR',
                      start='2018-01-01',
                      end='2018-12-31',
                      progress=False,
                      auto_adjust=True)

qf = cf.QuantFig(df_twtr,
                 title="Twitter's Stock Price",
                 legend='top',
                 name='TWTR')

qf.add_volume()
qf.add_sma(periods=20, column='Close', color='red')
qf.add_ema(periods=20, color='green')

qf.iplot()
Ejemplo n.º 8
0
#menu

st.sidebar.subheader('Date Range')
start_date = st.sidebar.date_input('start date', datetime.date(2019, 1, 1))
end_date = st.sidebar.date_input('end date', datetime.date(2021, 1, 31))

#tickerdata
ticker_list = pd.read_csv("s&p500.txt")
tickerSymbol = st.sidebar.selectbox('Stock Ticker', ticker_list)
tickerData = yf.Ticker(tickerSymbol)
tickerDataHistory = tickerData.history(period='1d',
                                       start=start_date,
                                       end=end_date)  #make period dynamic

#info
st.header('**INFO**')
st.markdown(tickerData.info['longName'])
st.markdown(tickerData.info['sector'])
st.write(tickerDataHistory)

#graph

st.header('Graphs')
qf = cl.QuantFig(tickerDataHistory,
                 title='first graph',
                 legend='top',
                 name='GS')
qf.add_bollinger_bands()
fig = qf.iplot(asFigure=True)
st.plotly_chart(fig)
Ejemplo n.º 9
0
 def ohlcv(data, **kwargs):
     kwargs = CufflinksPlotMap._wrapper(**kwargs)
     legend = kwargs.pop('legend', 'top')
     return cf.QuantFig(data, legend=legend).iplot()
import pandas as pd
import plotly as py
import cufflinks as cf
import tushare as ts
from copy import deepcopy
cf.set_config_file(offline=True,world_readable=False)

stock = { 'name': '中国平安', 'code': '601318' }
df = ts.get_hist_data(stock['code']).iloc[::-1]
print(df)

qf=cf.QuantFig(df,title=stock['name'],legend='top',name=stock['name'], up_color='red', down_color='green')

boll = deepcopy(qf)
boll.add_bollinger_bands(name="Boll通道")
boll.iplot()

# fig = df.iplot(kind='bar', barmode='stack', asFigure=True)
# py.offline.plot(fig)

# rsi = deepcopy(qf)
# rsi.add_sma()
# rsi.add_macd()
# rsi.add_volume()
# rsi.iplot()

cf.datagen.lines(1,500).ta_plot(study='sma',period=[13,21,55])
Ejemplo n.º 11
0
from plotly.offline import iplot, init_notebook_mode

init_notebook_mode

## Descargando la data

df_twtr = yf.download('TWTR',
                      start='2018-01-01',
                      end='2020-04-16',
                      progress=False,
                      auto_adjust=True)

## Creando el gráfico de velas

qf = cf.QuantFig(df_twtr,
                 title="Gráfico de precios de Twitter",
                 legend='top',
                 name='TWTR')

## Añadir volumen
qf.add_volume()

## Añadir promedios móviles
qf.add_ema(periods=20, column='Close', color='red')
qf.add_ema(periods=50, column='Close', color='blue')
qf.add_ema(periods=200, column='Close', color='orange')

qf.iplot()

# In[ ]:

# Backtesting de una estrategia basada en un SMA
Ejemplo n.º 12
0
data.info()

# In[10]:

import cufflinks as cf

# In[11]:

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

# In[12]:

qf = cf.QuantFig(data,
                 title='EUR/USD',
                 legend='top',
                 name='EUR/USD',
                 datalegend=True)

# In[13]:

iplot(qf.iplot(asFigure=True))

# In[14]:

qf.add_bollinger_bands(periods=10,
                       boll_std=2,
                       colors=['magenta', 'grey'],
                       fill=True)
qf.data.update()
Ejemplo n.º 13
0
            break
        else:
            print('Improper date format')
            continue

    # GET END DATE
    while True:
        end_date_entry = input('Enter end date in YYYY-MM-DD format: \n')
        if validate_date(end_date_entry):
            eYear, eMonth, eDay = map(int, end_date_entry.split('-'))
            end_date = datetime.date(eYear, eMonth, eDay)
            break
        else:
            print('Improper date format')
            continue

    return start_date, end_date


ticker_symbol = get_ticker_input()
start_date, end_date = get_dates()

ticker_data = yf.Ticker(ticker_symbol)
ticker_df = ticker_data.history(period='1d', start=start_date, end=end_date)
qf = cf.QuantFig(ticker_df,
                 title=f"{ticker_data.info['longName']} Price Data",
                 legend='top',
                 name='GS')
qf.add_bollinger_bands()
fig = qf.iplot(asFigure=True)
fig.write_image('fig1.png')
Ejemplo n.º 14
0
    st.info(string_summmary)
    st.write(tickerData.info['website'])

if task == 'Historical Data':
    #Ticker data
    st.subheader('**Ticker Data**')
    tickerDf.sort_index(axis=0, ascending=False)
    st.dataframe(tickerDf, 800, 700)
    #st.table(tickerDf)

if task == 'Chart':
    #Chart: Bollinger bands
    #st.subheader('**Bollinger bands**')
    st.subheader(tickerSymbol)
    #qf=cf.QuantFig(tickerDf,title='QuantFig',legend='top',name='GS')
    qf = cf.QuantFig(tickerDf, legend='top')
    qf.add_bollinger_bands()
    #fig=qf.iplot(asFigure=True)
    #st.plotly_chart(fig)

    #qf.add_sma([10,20],width=2,color=['green','lightgreen'],legendgroup=True)
    #qf.add_rsi(periods=20,color='java')
    #qf.add_bollinger_bands(periods=30,boll_std=2,colors=['magenta','grey'],fill=True)
    qf.add_volume()
    #qf.add_macd()
    fig2 = qf.iplot(asFigure=True)
    st.plotly_chart(fig2)

    # fig3=plt.plot(tickerDf['Close'],label='Close Price')
    # st.plotly_chart(fig3)
st.header("**Data Today**")
today_df = yf.download(tickerSymbol, period='1d', interval='1m')
fig = go.Figure(data=[
    go.Candlestick(x=today_df.index,
                   open=today_df['Open'],
                   high=today_df['High'],
                   low=today_df['Low'],
                   close=today_df['Close'])
])
fig.update_layout(title="Facebook's Live Stock Price Today",
                  xaxis_title=None,
                  yaxis_title=None,
                  height=600,
                  legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))
fig.update_xaxes(
    rangeslider_visible=False,
    rangeselector=dict(buttons=list([
        dict(count=15, label="15m", step="minute", stepmode="backward"),
        dict(count=30, label="30m", step="minute", stepmode="backward"),
        dict(count=1, label="HTD", step="hour", stepmode="todate"),
        dict(count=3, label="3h", step="hour", stepmode="backward"),
        dict(step="all")
    ])))
st.plotly_chart(fig, use_container_width=True)

st.subheader('**Bollinger Bands**')
qf = cf.QuantFig(today_df, legend='top', name='GS')
qf.add_bollinger_bands()
fig = qf.iplot(asFigure=True)
st.plotly_chart(fig, use_container_width=True)
Ejemplo n.º 16
0
def chart(range, tickerSymbol):

    tickerDf = si.get_data(tickerSymbol,
                           start_date=datetime.now() -
                           timedelta(days=periodDict[range]),
                           end_date=datetime.now(),
                           interval=intervalDict[range])

    r = requests.get(
        f'https://www.alphavantage.co/query?function=OVERVIEW&symbol={tickerSymbol}&apikey=Y4NCX1DFBJCN4I82'
    )
    data = r.json()

    try:
        string_name = data['Name']
    except:
        string_name = tickerSymbol
    try:
        string_summary = data['Description']
    except:
        string_summary = "Currently Unavailable"

    qf = cf.QuantFig(tickerDf,
                     name='Price',
                     title='Stock Chart',
                     margin=dict(l=0, r=40, b=0, t=0))
    qf.add_sma(10, width=2, color='green', name='SMA')
    qf.add_bollinger_bands(periods=20,
                           boll_std=2,
                           colors=['magenta', 'magenta'],
                           fill=True,
                           name='BBands')
    qf.add_volume(title='Volume',
                  up_color='grey',
                  down_color='lightsteelblue',
                  margin=dict(l=0, r=40, b=0, t=0))
    qf.add_rsi(periods=14,
               color='midnightblue',
               name='RSI',
               showbands=False,
               margin=dict(l=0, r=40, b=0, t=0))
    qf.add_macd(legendgroup=True,
                name='MACD',
                colors=['red', 'black'],
                margin=dict(l=0, r=40, b=0, t=0))
    layout = dict(xaxis=dict(rangeslider=dict(visible=False),
                             categoryorder="category ascending",
                             type="category",
                             visible=False))
    config = {
        'displaylogo':
        False,
        "modeBarButtonsToRemove": [
            'pan2d', 'zoom2d', 'select2d', 'lasso2d', 'toggleSpikelines',
            'autoScale2d'
        ]
    }
    fig = qf.iplot(asFigure=True, layout=layout)
    fig.update_layout(height=1200,
                      title_text=string_name,
                      title_x=0.5,
                      showlegend=True,
                      legend=dict(orientation="h",
                                  yanchor="top",
                                  y=1.02,
                                  xanchor="center",
                                  x=0.5),
                      margin=dict(l=0, r=40, b=20, t=100))
    return string_name, string_summary, fig, config
Ejemplo n.º 17
0
    'ask_l':'min',                                                                                                        
    'ask_c': 'last',                                                                                                    
    'bid_o':'first',                                                                                                    
    'bid_h':'max',                                                                                                       
    'bid_l':'min',                                                                                                        
    'bid_c': 'last',                                                                                                    
    'volume': 'sum'                                                                                                        
}

df = rows.resample('1H', closed='left', label='left').apply(ohlc_dict).dropna()

df = df[['bid_o','bid_h','bid_l','bid_c','volume']]

df = df.rename(columns={'bid_o':'open','bid_h':'high','bid_l':'low','bid_c':'close'})

qf = cf.QuantFig(df, title= 'USD_TRY')
rangeselector = dict(steps=[ 'Reset', '3M' ], bgcolor=('rgb(150,200,250)',.1),fontsize=12,fontfamily='monospace')
qf.layout.update(rangeselector=rangeselector)
qf.iplot()

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return '<iframe src="https://plot.ly/create/?fid=btarhan7%3A10" width="750px" height="550px"></iframe>'


if __name__ == '__main__':
    app.run(port=5555, debug=True)
    
Ejemplo n.º 18
0
def stocks_chart(stock_data: pd.DataFrame = None,
                 settings_dict: Dict = None) -> go.Figure:
    """Generate plotly finance chart.

    Args:
        stocks_data (pd.DataFrame): stock data derived from yf
        settings (Dict): settings derived from the UI

    Returns:
        go.Figure: final stock chart
    """
    # setting default values
    data = get_stocks_data() if stock_data is None else stock_data
    if settings_dict is None:
        settings_dict = {
            key + "_state": value
            for key, value in session_default.__dict__.items()
        }
        settings_dict["ticker_dropdown_state"] = settings_dict["ticker"][0]
    # extract chart settings from settings_dict

    # if  UI checklists were deselected settings_dict values are empty lists
    add_boll_feature = bool(len(settings_dict["bollinger_check_state"]))
    add_macd_feature = bool(len(settings_dict["macd_check_state"]))
    add_rsi_feature = bool(len(settings_dict["rsi_check_state"]))
    add_sma_feature = bool(len(settings_dict["sma_check_state"]))

    # initialize QuantFig chart figure
    qf = cf.QuantFig(data,
                     title=settings_dict["ticker_dropdown_state"],
                     legend="right")

    if add_boll_feature is True:
        qf.add_bollinger_bands(
            periods=settings_dict["bollinger_periods_state"],
            boll_std=settings_dict["boll_std_state"],
        )

    if add_macd_feature is True:
        qf.add_macd(
            fast_period=settings_dict["macd_fast_period_state"],
            slow_period=settings_dict["macd_slow_period_state"],
            signal_period=settings_dict["macd_signal_period_state"],
        )

    if add_rsi_feature is True:
        qf.add_rsi(
            periods=settings_dict["rsi_periods_state"],
            rsi_lower=settings_dict["rsi_lower_state"],
            rsi_upper=settings_dict["rsi_upper_state"],
        )

    if add_sma_feature is True:
        qf.add_sma(periods=settings_dict["sma_periods_state"])

    # cast QuantFig object to plotly figure
    qf_fig = qf.figure()

    # add time slider to figure
    slider_dict = dict(
        rangeselector=dict(buttons=list([
            dict(count=1, label="1m", step="month", stepmode="backward"),
            dict(count=6, label="6m", step="month", stepmode="backward"),
            dict(count=1, label="YTD", step="year", stepmode="todate"),
            dict(count=1, label="1y", step="year", stepmode="backward"),
            dict(step="all"),
        ])),
        rangeslider=dict(visible=True),
        type="date",
    )
    qf_fig.update_layout(xaxis=slider_dict)

    return qf_fig
Ejemplo n.º 19
0
st.markdown("""
    Stock Price Analysis
    Shown are the stock prices of S&P 500
    """)

st.sidebar.subheader("Parameters")
start_date=st.sidebar.date_input("Start date", datetime.date(2010, 1, 1))
end_date=st.sidebar.date_input("End date", datetime.date(2021, 2, 28))

ticker_list=pd.read_csv("E:\Projects\Combined Projects\constituents_symbols.txt")
tickerSymbol=st.sidebar.selectbox('Stock ticker', ticker_list)
tickerData=yf.Ticker(tickerSymbol)
tickerDf=tickerData.history(period='1d', start=start_date, end=end_date)

string_logo='<img src=%s>' % tickerData.info['logo_url']
st.markdown(string_logo, unsafe_allow_html=True)

string_name=tickerData.info['longName']
st.header('**%s**' % string_name)

string_summary=tickerData.info['longBusinessSummary']
st.info(string_summary)

st.header("**Prices Range**")
st.write(tickerDf)

st.header("**Bands**")
qf=cf.QuantFig(tickerDf, title='Chart', legend='top', name='GS')
qf.add_bollinger_bands()
fig=qf.iplot(asFigure=True)
st.plotly_chart(fig)
Ejemplo n.º 20
0
			auto_adjust = False,

			# download pre/post regular market hours data
			# (optional, default is False)
			prepost = False,

			# use threads for mass downloading? (True/False/Integer)
			# (optional, default is True)
			threads = True,

			# proxy URL scheme use use when downloading?
			# (optional, default is None)
			proxy = None
		    )
		
		print(stock)
		# visualiz stock data
		qf = cf.QuantFig(data)
		qf.add_bollinger_bands() 
		qf.add_rsi(periods=20,color='java')
		#qf.add_macd()
		fig = qf.iplot(asFigure=True)
		#qf.iplot()
		#fig1.append_trace(fig['data'][0], count, 1)
		py.offline.plot(fig, filename=stock + '.html', auto_open=False)
		
	print('Vado in sleep...')
	sleep(1*60)

print('ciao')
Ejemplo n.º 21
0
# sidebar
st.sidebar.subheader('Query parameters')
start_date = st.sidebar.date_input("Start date", datetime.date(2019, 1, 1))
end_date = st.sidebar.date_input("End date", datetime.date(2021, 1, 31))

# scraping ticker data
ticker_list = pd.read_html('https://en.wikipedia.org/wiki/NIFTY_50')[1].drop(
    ['Company Name', 'Sector'], axis=1)
tickerSymbol = st.sidebar.selectbox('Stock Ticker', ticker_list)
tickerData = yf.Ticker(tickerSymbol)
tickerDf = tickerData.history(period='1d', start=start_date, end=end_date)

#ticker info
logo = '<img src="%s">' % tickerData.info['logo_url']
st.markdown(logo, unsafe_allow_html=True)

name = tickerData.info['longName']
st.header('**%s**' % name)

summary = tickerData.info['longBusinessSummary']
st.info(summary)

#ticker data
st.header('**Ticker Data**')
st.write(tickerDf)

st.header('**Bollinger Bands**')
qf = cf.QuantFig(tickerDf, title='First Quant Figure', legend='top', name='GS')
qf.add_bollinger_bands()
fig = qf.iplot(asFigure=True)
st.plotly_chart(fig)
Ejemplo n.º 22
0
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

import cufflinks as cf
import plotly.offline as plyo

raw = pd.read_csv('../stock_dfs/AAPL.csv', index_col=0, parse_dates=True)

raw.info()

quotes = raw[['Open', 'High', 'Low', 'Close']]
quotes.iloc[-60:]

qf = cf.QuantFig(quotes, title='AAPL Stock', legend='top', name='AAPL Stock')

plyo.offline.plot(qf.iplot(asFigure=True),
                  image='png',
                  filename='./images/qf_01.html')

# Adding Bollinger Bands
qf.add_bollinger_bands(periods=15,
                       boll_std=2)  # Number of standard deviations away

plyo.offline.plot(qf.iplot(asFigure=True),
                  image='png',
                  filename='./images/qf_02.html')

# Adding RSI
qf.add_rsi(periods=14, showbands=False)