# 20_볼린저밴드_01
import FinanceDataReader as fdr
df = fdr.DataReader('005380', '2015')
df
df = df.loc[:, ['Close']].copy()
df
![]() |
df['center'] = df['Close'].rolling(window=20).mean()
df
![]() |
df['up_band'] = df['center'] + 2*df['Close'].rolling(window=20).std()
df
![]() |
df['low_band'] = df['center'] - 2*df['Close'].rolling(window=20).std()
df
![]() |
df = df.dropna()
df
![]() |
# 21_볼린저밴드_02 : 볼린저밴드 지표만들기
book = df[['Close']].copy()
book['trade'] = ''
book
![]() |
for i in df.index:
if df.loc[i, 'Close'] > df.loc[i, 'up_band']:
book.loc[i, 'trade'] = ''
elif df.loc[i, 'low_band'] > df.loc[i, 'Close']:
book.loc[i, 'trade'] = 'buy'
elif df.loc[i, 'up_band'] >= df.loc[i, 'center'] and df.loc[i, 'low_band'] <= df.loc[i,'Close']:
if book.shift(1).loc[i, 'trade'] == 'buy':
book.loc[i, 'trade'] = 'buy'
else:
book.loc[i, 'trade'] = ''
book
![]() |
23_볼린저밴드_03 : 수익률평가
rtn = 1.0
buy = 0.0
sell = 0.0
book['rtn'] = 1
for i in book.index:
if book.loc[i, 'trade'] == 'buy' and book.shift(1).loc[i, 'trade'] == '':
buy = book.loc[i, 'Close']
print('진입일 : ', i, '매수가격 : ', buy)
elif book.loc[i, 'trade'] == '' and book.shift(1).loc[i, 'trade'] == 'buy':
sell = book.loc[i, 'Close']
rtn = (sell - buy) / buy + 1
book.loc[i, 'rtn'] = rtn
print('청산일 : ', i, '매수가격 : ', buy, ' 매도가격 : ', sell, '수익률 : ', round(rtn, 4))
if book.loc[i, 'trade'] == '':
buy = 0.0
sell = 0.0
acc_rtn = 1.0
for i in book.index:
rtn = book.loc[i, 'rtn']
acc_rtn = acc_rtn * rtn
book.loc[i, 'acc_rtn'] = acc_rtn
print('누적수익률 : ', round(acc_rtn, 4))
![]() |
~~ 중략 ~~
![]() |
'Python > 파이썬_자동매매' 카테고리의 다른 글
Solactive US Big Tech Top 7 Plus Price Return Index 차트만들기_파이썬 (0) | 2025.04.12 |
---|---|
샤프비율 (0) | 2025.02.02 |
변동성 (0) | 2025.02.02 |
MDD (Maximum Draw Down) (0) | 2025.02.02 |
CAGR (연평균수익률) (0) | 2025.02.02 |