python-分水岭-技术指标

本文介绍了一种用于股票分析的技术指标计算方法,包括指数移动平均EMA、动态移动平均DMA及分水岭FSL等核心指标的详细计算过程。通过WindPy获取历史数据,并使用Pandas进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def get_EMA(df,N):
    for i in range(len(df)):
        if i==0:
            df.ix[i,'ema']=df.ix[i,'close']
        if i>0:
            df.ix[i,'ema']=(2*df.ix[i-1,'close']+(N-1)*df.ix[i,'close'])/(N+1)
    return df
def get_DMA(df):
    #大智慧动态移动平均,移动平均值是根据相应的指标不断变动的,a就是动态值,
    #假设为最低价/最高价,可以根据实际情况调整
     df['ema']= get_EMA(df,10)['ema']
     df['5vol']=df['volume'].rolling(window=5,min_periods=1).sum()
     dma=[]
     for i in range(len(df)):
        if i==0:
            dma.append(df.ix[i,'close'])
        if i>0:
            a=df.ix[i,'5vol']/(3*df.ix[i,'amt'])
            #print (a)
            a1=(1-a)*df.ix[i,'ema']
            a2=a*float(dma[len(dma)-1])
            
            dma.append(a1+a2)
     df['dma']=dma     
     return df
def get_FSL(df):
    #大智慧分水岭,在上做多,在下做空
    df['sw1']=(get_EMA(df,5)['ema']*7+get_EMA(df,10)['ema']*3)/10
    df['sw']=get_DMA(df)['dma']
    return df

from WindPy import*
import pandas as pd
import numpy as np
import datetime
import time
#获取数据
w.start(60)
symbol="000001.SZ"
start_date="2016-01-01"

end_date="2017-05-02"

stock=w.wsd(symbol, "trade_code,open,high,low,close,pre_close,\
                  volume,amt", start_date,end_date)
df = pd.DataFrame()
df['date']=stock.Times
df['stock_code']=stock.Data[0]
#index_data['stock_code'] =symbol
df['open'] =stock.Data[1]
df['high'] =stock.Data[2]
df['low']  =stock.Data[3]
df['close']=stock.Data[4]
df['pre_close']=stock.Data[5]
df['volume']=stock.Data[6]
df['amt']=stock.Data[7]
df.head()
get_FSL(df)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云金杞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值