import pandas as pd
import numpy as np
import datetime
import time
#获取数据
df=pd.read_csv('C:/Users/HXWD/Desktop/000001.csv',encoding='gbk')
df.columns=['date','code','name','close','high','low','open','preclose',
'change','change_per','volume','amt']
df=df[['date','open','high','low','close','volume','amt']]
df.head()
def get_SAR(df,N=10,step=2,maxp=20):
    sr_value=[]
    sr_up=[]
    ep_up=[]
    af_up=[]
    sr_down=[]
    ep_down=[]
    af_down=[]
    for i in range(len(df)):
            
        if i >=N:
            if len(sr_up)==0 and len(sr_down)==0:
                if df.ix[i,'close']>df.ix[0,'close']:
                     #标记为上涨趋势
                    sr0=df['low'][0:i].min()
                    af0=0.02
                    ep0=df.ix[i,'high']
                    sr_up.append(sr0)
                    ep_up.append(ep0)
                    af_up.append(af0)
                    sr_value.append(sr0)
                if df.ix[i,'close']<=df.ix[0,'close']:
                    #标记为上涨趋势
                    sr0=df['high'][0:i].max()
                    af0=0.02
                    ep0=df.ix[i,'high']
                    sr_down.append(sr0)
                    ep_down.append(ep0)
                    af_down.append(af0)
                    sr_value.append(sr0)
            if len(sr_up)>0:
                if df.ix[i-1,'low']>sr_up[-1]:
                   sr0=sr_up[-1]
                   ep0=df['high'][-len(sr_up):].max()
                   if df.ix[i,'high']>df['high'][-(len(sr_up)-1):].max() :
                      af0=af_up[-1]+0.02
                   if df.ix[i,'high']<=df['high'][-(len(sr_up)-1):].max() :
                      af0=af_up[-1]
                   
                   sr=sr0+af0*(ep0-sr0)
                   sr_up.append(sr)
                   ep_up.append(ep0)
                   af_up.append(af0)
                   sr_value.append(sr)
                   print('上涨sr0={},ep0={},af0={},sr={}'.format(sr0,ep0,af0,sr))
                if df.ix[i-1,'low']<=sr_up[-1]:
                   ep0=df['high'][-len(sr_up):].max()
                   sr0=ep0
                   af0=0.02
                   sr_down.append(sr0)
                   ep_down.append(ep0)
                   af_down.append(af0)
                   sr_value.append(sr0)
                   sr_up=[]
                   ep_up=[]
                   af_up=[]
            if len(sr_down)>0:
                if df.ix[i-1,'high']<sr_down[-1]:
                    sr0=sr_down[-1]
                    ep0=df['low'][-len(sr_down):].max()
                    if df.ix[i,'low']<df['low'][-(len(sr_down)-1):].max() :
                      af0=af_down[-1]+0.02
                    if df.ix[i,'low']>=df['low'][-(len(sr_down)-1):].max() :
                      af0=af_down[-1]
                   
                    sr=sr0+af0*(ep0-sr0)
                    sr_down.append(sr)
                    ep_down.append(ep0)
                    af_down.append(af0)
                    sr_value.append(sr)
                    print('下跌sr0={},ep0={},af0={},sr={}'.format(sr0,ep0,af0,sr))
                if df.ix[i-1,'high']>=sr_down[-1]:
                   ep0=df['low'][-len(sr_up):].max()
                   sr0=ep0
                   af0=0.02
                   sr_up.append(sr0)
                   ep_up.append(ep0)
                   af_up.append(af0)
                   sr_value.append(sr0)
                   sr_down=[]
                   ep_down=[]
                   af_down=[]
    return sr_value
sar=get_SAR(df)
#测试下来看,似乎中间逻辑有问题,有时间进一步修改
注:需要单独编写文华财经,金字塔,大智慧,通达信,TB,Python平台的指标、策略等,请联系扣扣1733505732,兼职时间:工作日下午18:00-22:00,节假日。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐