C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
def psar(barsdata, iaf = 0.02, maxaf = 0.2):
length
= len(barsdata)
dates
= list(barsdata['Date'])
high
= list(barsdata['High'])
low
= list(barsdata['Low'])
close
= list(barsdata['Close'])
psar
= close[0:len(close)]
psarbull
= [None] * length
psarbear
= [None] * length
bull
= True
af
= iaf
ep
= low[0]
hp
= high[0]
lp
= low[0]

for i in range(2,length):

if bull:
psar[i]
= psar[i - 1+ af * (hp - psar[i - 1])

else:
psar[i]
= psar[i - 1+ af * (lp - psar[i - 1])

reverse
= False

if bull:

if low[i] < psar[i]:
bull
= False
reverse
= True
psar[i]
= hp
lp
= low[i]
af
= iaf

else:

if high[i] > psar[i]:
bull
= True
reverse
= True
psar[i]
= lp
hp
= high[i]
af
= iaf

if not reverse:

if bull:

if high[i] > hp:
hp
= high[i]
af
= min(af + iaf, maxaf)

if low[i - 1< psar[i]:
psar[i]
= low[i - 1]

if low[i - 2< psar[i]:
psar[i]
= low[i - 2]

else:

if low[i] < lp:
lp
= low[i]
af
= min(af + iaf, maxaf)

if high[i - 1> psar[i]:
psar[i]
= high[i - 1]

if high[i - 2> psar[i]:
psar[i]
= high[i - 2]

if bull:
psarbull[i]
= psar[i]

else:
psarbear[i]
= psar[i]

return {"dates":dates, "high":high, "low":low, "close":close, "psar":psar, "psarbear":psarbear, "psarbull":psarbull}

posted on 2017-09-23 20:56 ccsdu2009 阅读(1041) 评论(0)  编辑 收藏 引用