[cufflinks,plotly] 파이썬으로 주식차트 그리기

반응형
    반응형

    파이썬 상에서 심플하게 주식차트를 만들어보겠습니다.

    matplotlib는 간단히 쓸때 단순한 통계적인 결과의 그래프를 많이 사용했다면 

    cufflinks를 사용하여 특히 금융 데이터를 다룬다면 좀 더 실제적인 그래프들을 그릴 수 있습니다.

    주식종목의 과거데이터를 이용해 주식 데이터 분석을 할때 굉장히 유용하고

    이를 활용해서 새로운 전략에 대한 영감을 받을 수 있지 않을까 싶습니다.

     

    데이터는 Kosdaq 150 레버리지를 사용했습니다. 

    요즘 포스팅할때마다 쓰는 것 같아서 조금 그렇긴 하지만 쓰던 것 쓰는게 좋으니 

    또 쓰겠습니다.

     

    df

     

    일단 plotly, cufflinks, pandas를 가져오겠습니다.

    import pandas as pd
    import cufflinks as cf
    import plotly.offline as plyo

    이걸로도 충분히 차트를 그릴 수 있어요

     

    차트 그리기

    차트를 그리기 위해서

    먼저 해야할게 날짜를 인덱스로 하는 건데 필수는 아닙니다.

    안 해도 그려지는데 아무 지장이 없습니다. 그냥 x축이 날짜가 아닌 것뿐입니다.

     

    인덱스를 정하면 어느 컬럼을 시가,고가,저가,종가로 할지 정해야 합니다.

    지금 df는 당연히 되어있지만 보통 파이썬 라이브러리는 영어를 인식하기 때문에 영어로 바꿔주겠습니다.

    만약에 데이터 프레임의 컬럼이 너무 많다면 해당 컬럼만 따로 가져와서 재정의를 한 후 cf.QuantFig에 넣으면 되겠습니다.

    안 바꿔주고 차트 그리기를 시도하면 오류가 바로 나옵니다.

     

    qf = cf.QuantFig(
             df,
             title='Kosdaq 150 leverage chart',
             legend='top',
             name='Kosdaq 150 leverage'
    )
    qf.iplot()

     

    컬럼 이름을 바꾸고 진행하면 무리없이 차트가 바로 나옵니다.

     

    df.columns = ['Date','Open','High','Low','Close']
    df.set_index('Date',inplace=True)
    qf = cf.QuantFig(
             df,
             title='Kosdaq 150 leverage chart',
             legend='top',
             name='Kosdaq 150 leverage'
    )
    qf.iplot()

     

    크기가 너무 크게 나와서 약간 보기 불편합니다. 

    이렇게 그림이 크게 나온다면 plyo에 qf.iplot을 넣어줘서 크기를 보정할 수 있습니다.

     

    plyo.iplot(qf.iplot(asFigure=True))

     

     

    차트 봉 컬러 바꾸기

    색깔 정의를 안해주면 차트의 각 봉이 청록색 계열(?)과 회색계열로 나오는데 

    차트에서 흔히 보는 빨간색, 파란색으로 바꿔보겠습니다.

    파라미터를 넣어서 만들 수 있는데 상승은 up_color , 하락은 down_color 입니다.

     

    qf = cf.QuantFig(
             df,
             title='Kosdaq 150 leverage chart',
             legend='top',
             name='Kosdaq 150 leverage',
             up_color = 'red',    # 상승은 빨강색, 하락은 파랑색
             down_color = 'blue'
    )
    plyo.iplot(qf.iplot(asFigure=True))

     

     

    보조지표 넣기

    보조지표도 넣을 수 있습니다. 

    메쏘드로써 쓸 수 있어서 qf.add_adx 이러식으로 쓰시면 됩니다.

    Class Describe
    add_adx Add average Directiona Index(ADX)
    add_bollinger_bands Add Bollinger Bands(BOLL)
    add_cci Add commodity channel indicator
    add_dmi Add DMI
    add_ema Add Exponential Moving Average(EMA)
    add_macd Add Moving Average Convergence Divergence(MACD)
    add_ptps Add Parabolic STR(PTPS)
    add_resistance Add a resistance line
    add_rsi Add Relative Strength Indicator
    add_sma Add Simple Moving average(SMA)
    add_trendline Add a trendline
    add_volume Add volume

     

    이 중에서 bollinger와 rsi를 그려보겠습니다.

    거래량(volume)을 하면 가장 좋겠지만 df에는 거래량이 없어서 불가능하네요 ㅜ 

     

    qf.add_bollinger_bands(periods=15,boll_std=2)
    qf.add_rsi(name='RSI')
    plyo.iplot(qf.iplot(asFigure=True))

     

    rsi 는 70,30 값이 디폴트 값이어서 그대로 실행했습니다.

     

    plotly는 확대,축소가 가능하니 그림으로 이리저리 보면서 전략을 구상하는데 아주 좋지 않을까 싶습니다.

    보조지표에 대한 파라미터는 다음 링크(Cufflinks)에 자세히 나와있으니 참고하시기 바랍니다.

     

     

    관련 포스팅

     

    [Python/그래프 그리기] - [plotly] 파이썬으로 액티비티한 그래프 그리기

    [Python/Pandas] - [pandas] column 이름 바꾸기(df.rename)

    Cufflinks

     

    댓글

    Designed by JB FACTORY

    ....