Skip to content

Commit 76c2c66

Browse files
add script-based (not notebook) demo
1 parent 2d6f20e commit 76c2c66

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

examples/mpf_demo.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import pandas as pd
2+
import mplfinance as mpf
3+
4+
infile = 'data/yahoofinance-SPY-20200901-20210113.csv'
5+
6+
df = pd.read_csv(infile, index_col=0, parse_dates=True).iloc[0:60]
7+
8+
# mpf.plot(df,type='candle',volume=True,mav=(10,20),figscale=1.5)
9+
10+
import rsi
11+
df['rsi'] = rsi.relative_strength(df['Close'],n=7)
12+
13+
apd = mpf.make_addplot(df['rsi'],panel=1,color='lime',ylim=(10,90),secondary_y=True)
14+
15+
mpf.plot(df,type='candle',volume=True,mav=(10,20),figscale=1.5,addplot=apd,style='checkers')

examples/rsi.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import numpy as np
2+
def relative_strength(prices, n=14):
3+
"""
4+
compute the n period relative strength indicator
5+
http://stockcharts.com/school/doku.php?id=chart_school:glossary_r#relativestrengthindex
6+
http://www.investopedia.com/terms/r/rsi.asp
7+
"""
8+
deltas = np.diff(prices)
9+
seed = deltas[:n + 1]
10+
up = seed[seed >= 0].sum() / n
11+
down = -seed[seed < 0].sum() / n
12+
rs = up / down
13+
rsi = np.zeros_like(prices)
14+
rsi[:n] = 100. - 100. / (1. + rs)
15+
16+
for i in range(n, len(prices)):
17+
delta = deltas[i - 1] # cause the diff is 1 shorter
18+
19+
if delta > 0:
20+
upval = delta
21+
downval = 0.
22+
else:
23+
upval = 0.
24+
downval = -delta
25+
26+
up = (up * (n - 1) + upval) / n
27+
down = (down * (n - 1) + downval) / n
28+
29+
rs = up / down
30+
rsi[i] = 100. - 100. / (1. + rs)
31+
32+
return rsi

0 commit comments

Comments
 (0)