金 融 量 化 分 析 • JoinQuant • 第 一 篇



一、聚宽模块安装、更新方法

代码如下:

#安装模块
pip install jqdatadsk

#更新模块
pip install -U jqdatasdk

二、聚宽模块登录

代码如下:

from jqdatasdk import *
auth('账号','密码')

三、获取股票行情数据方法

(一).获取单个股票多天每分钟行情数据的获取函数:get_price(参数)

参 数:

security【股票代码】
start_date【开始时间】=’时间’
end_date【结束时间】=’时间’
frequency【单位时间长度】=’1 d(日)’或’1m(分)’
fields【表头】=[ ‘open【开盘价】’ , ’close【收盘价】’ , ’high【最高价】’ , ’low【最低价】’ , ’volume【成交量】’ , ’money【成交额】’ ]
skip_paused【判断是否跳过非交易日】= True 或 False
fq【复权选项】= ’pre(前复权)’ , ’none(不复权)’ , ’post(后复权)’
count【end_date前的数据个数】= 数值
panel【返回的数据格式】=True 或 False
fill_paused【判断停牌股票的价格处理】=True 或 False

代码如下:

#获取平安银行按1分钟为周期以“2022-1-1至20022-5-1”每分钟数据的数据
data1 = get_price('000001.XSHE', start_date='2022-1-1',end_date='2022-5-1',frequency='1m', skip_paused=True,fq='pre',fields=['open','close','high','low','volume','money'],fill_paused=True,panel=True)

(二).获取单个股票基本信息

( 1 ) 获取所有股票基本信息函数get_all_securities()

参 数 :

display_name【中文名】
name【缩写简称】
start_date【上市时间】
end_date【退市时间】
type【类型】

代码如下:

#所有股票基本信息
AllSecurities=get_all_securities()
#获取单个股票基本信息
Target=AllSecurities[AllSecurities['display_name']=='广发银行']

( 2 )分级基金的母基金代码函数get_security_info(‘股票代码’).parent

代码如下:

#获取分级基金的母基金代码
code = get_security_info('股票代码').parent

四、获取财务数据方法

(一)获取所有股票基本财务数据函数get_fundamentals(参数1)

参 数 1:

query(参数2)【列表名】
date【查询时间】=‘年-月-日’
statDate【财报统计的年份季度】=‘年季度号’
注:date与statDate不能同时用>

参 数 2:

valuation【市值数据】
balance【资产负债数据】
income【利润数据】
indicator【财务指标数据】★
security_indicator【券商业专项指标】
insurance_indicator【保险业专项指标】
cash_flow【现金流数据】
bank_indicator【银行业专项指标】

代码如下:

1)AllStockData=get_fundamentals(query(列表名,列表名),date='年-月-日')2)AllStockData=get_fundamentals(query(列表名,列表名),statDate='年季度号')

(二)获取特定股票股票基本财务数据函数get_fundamentals(query(参数).filer(列表名.code.in_([‘股票代码’,‘股票代码’]),data=‘年-月-日’)

代码如下:

(1)TargetStockData=get_fundamentals(query(列表名,列表名).filer(表名.code.in_(['股票代码','股票代码']),data='年-月-日')
(2)TargetStockData=get_fundamentals(query(列表名,列表名).filer(表名.code.in_(['股票代码','股票代码']),statData='年季度号')

五、实践

1.获取特定股票基本信息,汇总周月K数据

from jqdatasdk import *
import pandas as pd
import time
auth('账号','密码')
print('=============================================================================================================================================================================')
TargetStockList=['中国银行','工商银行']
#获取所有股票基本信息
AllSecurities=get_all_securities()
for StockName in TargetStockList:
    TargetStockName=AllSecurities[AllSecurities['display_name']==StockName]
    print(TargetStockName)
    #获取股票代码
    TargetStockID=TargetStockName.index.values
    for stockid in TargetStockID: 
        TargetStockData=get_price(stockid,start_date='2020-1-1',end_date='2021-1-1',frequency='1d',fields=['open', 'close', 'high', 'low', 'volume', 'money', 'avg', 'high_limit', 'low_limit', 'pre_close', 'paused', 'factor', 'price'],fill_paused=True,panel=True)
        print(TargetStockData)
        time.sleep(3)
        #汇总周数据表
        TargetStockData_week=pd.DataFrame()
        #周开盘价
        TargetStockData_week['W_open']=TargetStockData['open'].resample('w').first()
        #周收盘价
        TargetStockData_week['W_close']
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的适用于joinquant的双均线策略代码,仅供参考: ```python # 导入相应的库 import jqdata import talib import numpy as np # 初始函数,设定要操作的证券、基准等等 def initialize(context): # 设定基准 set_benchmark('000300.XSHG') # 设定滑点、手续费 set_slippage(FixedSlippage(0.02)) set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0003, min_cost=5)) # 设定股票池 g.stocks = ['000001.XSHE', '600036.XSHG', '601398.XSHG'] # 设定短期和长期均线的时间窗口 g.short_ma = 10 g.long_ma = 60 # 设定交易频率 run_daily(trade, 'open') # 交易函数 def trade(context): # 获取股票池的所有股票 stocks = g.stocks # 循环遍历股票池的所有股票 for stock in stocks: # 获取当前股票的收盘价 prices = attribute_history(stock, g.long_ma, '1d', ['close']) # 计算短期和长期均线 short_ma = talib.MA(prices['close'], timeperiod=g.short_ma) long_ma = talib.MA(prices['close'], timeperiod=g.long_ma) # 获取当前股票的最新收盘价 current_price = prices['close'][-1] # 如果短期均线上穿长期均线,则买入该股票 if short_ma[-1] > long_ma[-1] and short_ma[-2] <= long_ma[-2]: order_value(stock, context.portfolio.cash) # 如果短期均线下穿长期均线,则卖出该股票 elif short_ma[-1] < long_ma[-1] and short_ma[-2] >= long_ma[-2]: order_target(stock, 0) ``` 上述代码实现了一个简单的双均线策略,当短期均线上穿长期均线时,买入该股票,当短期均线下穿长期均线时,卖出该股票。具体策略的优和调整需要根据实际情况进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Thomas_CC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值