촛대 다리, 고도 차트, 이동 평균선을 그리기
13021 단어 python3.7matplotlibnumpy
개발 환경
개요
사이트 에서 주가 데이터를 다운로드했습니다.
이번에는 소프트 뱅크를 사용했습니다. 사용기간은 1998년~2019년입니다.
- prg
- main.py
- Graph
- 9984_1998.png
・・
・・
- 9984_2018.png
- csv
- 9984_1998.csv
・・
・・
- 9984_2018.csv
소스 코드
main.pyimport pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc,volume_overlay
import numpy as np
def SMA(signal):#移動平均線
k = 0
SMA = []
for rp in range(signal):
SMA.append(0)
while True:
sma = []
for r in range(signal):
s = df.loc[k+r,4]
sma.append(s)
sma5 = sum(sma)/len(sma)
k += 1
if k == len(df)-(signal-1):
break
SMA.append(sma5)
return SMA
f = 1998
for f in range(1998,2020,1):
df = pd.read_csv('../csv/9984_'+str(f)+'.csv',header=None)
df['SMA5'] = SMA(5)
df['SMA25'] = SMA(25)
df['SMA75'] = SMA(75)
df = df.replace(0, np.nan)
plt.rcParams['figure.figsize'] = 30,7
fig = plt.figure(figsize=(18, 9))
ax = plt.subplot(1, 1, 1)
candlestick2_ohlc(ax, df[1],df[2],df[3],df[4],width=0.9,colorup="b",colordown="r")
plt.tick_params(labelbottom = False,bottom = False)
plt.title('SoftBank_'+str(f)+'_Chart')
plt.plot(df['SMA5'],label = 'SMA5',color = 'dodgerblue')
plt.plot(df['SMA25'],label = 'SMA25',color = 'brown')
plt.plot(df['SMA75'],label = 'SMA75',color = 'darkgreen')
ax.set_xlim([0, df.shape[0]])
ax.set_ylabel("Price")
bottom,top = ax.get_ylim()
ax.set_ylim(bottom-(top-bottom)/4,top)
ax2 = ax.twinx()
volume_overlay(ax2,df[1], df[6], df[5], width=1, colorup="g", colordown="g")
ax2.set_xlim([0, df.shape[0]])
ax2.set_ylim([0,df[5].max()*4])
ax2.set_ylabel("Volume")
plt.tight_layout()
plt.savefig('..//Graph//9984_'+str(f)+'.png')
plt.close()
이미지는 다음과 같은 느낌입니다.
출력 결과
Reference
이 문제에 관하여(촛대 다리, 고도 차트, 이동 평균선을 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dsduoa31/items/ab61e206535265833a6c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- prg
- main.py
- Graph
- 9984_1998.png
・・
・・
- 9984_2018.png
- csv
- 9984_1998.csv
・・
・・
- 9984_2018.csv
main.py
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc,volume_overlay
import numpy as np
def SMA(signal):#移動平均線
k = 0
SMA = []
for rp in range(signal):
SMA.append(0)
while True:
sma = []
for r in range(signal):
s = df.loc[k+r,4]
sma.append(s)
sma5 = sum(sma)/len(sma)
k += 1
if k == len(df)-(signal-1):
break
SMA.append(sma5)
return SMA
f = 1998
for f in range(1998,2020,1):
df = pd.read_csv('../csv/9984_'+str(f)+'.csv',header=None)
df['SMA5'] = SMA(5)
df['SMA25'] = SMA(25)
df['SMA75'] = SMA(75)
df = df.replace(0, np.nan)
plt.rcParams['figure.figsize'] = 30,7
fig = plt.figure(figsize=(18, 9))
ax = plt.subplot(1, 1, 1)
candlestick2_ohlc(ax, df[1],df[2],df[3],df[4],width=0.9,colorup="b",colordown="r")
plt.tick_params(labelbottom = False,bottom = False)
plt.title('SoftBank_'+str(f)+'_Chart')
plt.plot(df['SMA5'],label = 'SMA5',color = 'dodgerblue')
plt.plot(df['SMA25'],label = 'SMA25',color = 'brown')
plt.plot(df['SMA75'],label = 'SMA75',color = 'darkgreen')
ax.set_xlim([0, df.shape[0]])
ax.set_ylabel("Price")
bottom,top = ax.get_ylim()
ax.set_ylim(bottom-(top-bottom)/4,top)
ax2 = ax.twinx()
volume_overlay(ax2,df[1], df[6], df[5], width=1, colorup="g", colordown="g")
ax2.set_xlim([0, df.shape[0]])
ax2.set_ylim([0,df[5].max()*4])
ax2.set_ylabel("Volume")
plt.tight_layout()
plt.savefig('..//Graph//9984_'+str(f)+'.png')
plt.close()
이미지는 다음과 같은 느낌입니다.
출력 결과
Reference
이 문제에 관하여(촛대 다리, 고도 차트, 이동 평균선을 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dsduoa31/items/ab61e206535265833a6c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(촛대 다리, 고도 차트, 이동 평균선을 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dsduoa31/items/ab61e206535265833a6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)