wind python能用港股 数据 python跑吗

怎样用 Python 写一个股票自动交易的程序_百度知道
怎样用 Python 写一个股票自动交易的程序
我有更好的答案
方法一前期的数据抓取和分析可能python都写好了,所以差这交易指令接口最后一步。对于股票的散户,正规的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。方法二是wind这样的软件也有直接的接口,支持部分券商,但也贵,几万一年是要的。方法三鼠标键盘模拟法,很复杂的,就是模拟键盘鼠标去操作一些软件,比如券商版交易软件和大智慧之类的。方法四就是找到这些软件的关于交易指令的底层代码并更改,不过T+1的规则下,预测准确率的重要性高于交易的及时性,花功夫做数据分析就好,交易就人工完成吧
采纳率:99%
你就是想找个软件或者券商的接口去上传交易指令,你前期的数据抓取和分析可能python都写好了,所以差这交易指令接口最后一步。对于股票的散户,正规的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。还有的办法是wind这样的软件也有直接的接口,支持部分券商,但也贵,几万一年是要的,第三种就是走野路子,鼠标键盘模拟法,很复杂的,就是模拟键盘鼠标去操作一些软件,比如券商版交易软件和大智慧之类的。还有一种更野的方法,就是找到这些软件的关于交易指令的底层代码并更改,我百度看到的,不知道是不是真的可行。。散户就这样,没资金就得靠技术,不过我觉得T+1的规则下,预测准确率的重要性高于交易的及时性,花功夫做数据分析就好,交易就人工完成吧
本回答被网友采纳
1条折叠回答
为您推荐:
其他类似问题
您可能关注的内容
股票自动交易的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&一图看懂港股通是否影响跨境资本流动
一图看懂港股通是否影响跨境资本流动
日06时45分来源:
随着深港通于去年底开通,越来越多内地投资者通过港股通投资港股,沪深港通下的南向资金明显增加。那么港股通是否会影响跨境资本流动?
首先,沪港通和深港通对投资者和其资金来说根本就是一个闭环。
请果断收藏下图。
两地股票市场互联互通生态圈
来源:香港交易所
根据沪港通和深港通的设计,投资者只能通过本地交易所和结算所参与对方市场,由中国结算和香港结算作为彼此的特别结算参与方,各自代表其本地投资者对跨境交易进行结算。
对于使用港股通的内地投资者来说,可以通过内地券商经上交所或深交所,直接在内地购买合资格港股。内地投资者买入港股,将支付人民币,再由中国结算把人民币带到香港,在香港兑换成港币,最后交付给香港结算进行结算。内地投资者卖出港股时,资金也将最终以人民币“原路返回”。
也就是说,港股通套现后的资金只能在本地结算系统沿原路返回,而不会以其他资产形式留存在香港市场。这样做能够有效防范洗钱活动,控制游资无序流动风险。
其次,香港市场是一个由多元投资者自由博弈的市场,有大量的专业机构投资者和散户投资者共同参与,各类做空工具丰富。由于港股通买卖盘均为自动对盘交易,要想通过类似对倒的手法制造虚假市场绝非易事,分分钟面临的是巨大的市场风险和高昂的交易成本。
再者,自沪港通开通以来,两地监管机构不断加强执法协作,严厉打击各类跨境证券违法违规行为。
沪港通和深港通所有的交易行为都在交易所、结算公司的系统内进行,哪个券商在买卖、买卖什么、以什么价位建仓、出仓等都是一目了然,均有清晰记录,能够有效监控市场。
近日中国证监会便与香港证监会紧密合作、果断出击,严惩了首宗利用沪港通对沪股通标的进行跨境操纵的案件。事实证明,互联互通机制下两地执法协作机制有效运行,任何跨境证券违法行为,终将受到法律严惩。
相关阅读:python使用用Wind接口获取全部A股历史交易数据
大奖章|量化投资|量化交易平台|交易接口|金融数据
python使用用Wind接口获取全部A股历史交易数据
14人已关注
果然是中文编码的问题。搞定了,新鲜出炉一个小脚本。谢谢各位大神的解答。
@Author: wenrongli
@Version: V1.0
#!/user/python
# -*- coding: gb2312 -*-
import sys
import getopt
from WindPy import *
from datetime import *
class LoadHisInfo:
def __init__(self):
self.OutputDir=r'E:'
self.StockCodeList=[]
def StartWind(self):
def LoadStockList(self):
res=w.wset(&SectorConstituent&,&date=;sector=全部A股&)
if res.ErrorCode != 0:
print('Error['+str(res.ErrorCode)+'][load stockcode list fail]\n')
sys.exit()
for i in range(0,len(res.Data[0])):
for k in range(0, len(res.Fields)):
if (res.Fields[k]=='date'):
date=res.Data[k ][i]
if(res.Fields[k] == &wind_code&):
code=res.Data[k][i]
if(res.Fields[k] == &sec_name&):
name=res.Data[k][i]
self.StockCodeList.append(code)
def LoadHisInfo(self):
for code in self.StockCodeList:
outputPath=self.OutputDir+code+r'.txt'
data=w.wsd(code, &open,high,low,close&, &&, &&,showblank=0)
if data.ErrorCode != 0:
print('Error['+str(data.ErrorCode)+'][load history info fail]\n')
sys.exit()
fOutputObj=open(outputPath.encode('gbk'),'a')
for i in range(0,len(data.Data[0])):
date=str(data.Times[i])
for k in range(0, len(data.Fields)):
if (data.Fields[k]==&OPEN&):
openPrice=data.Data[k ][i]
if(data.Fields[k] == &LOW&):
lowPrice=data.Data[k][i]
if(data.Fields[k] == &HIGH&):
highPrice=data.Data[k][i]
if(data.Fields[k] == &CLOSE&):
closePrice=data.Data[k][i]
if (openPrice==0)or (lowPrice==0)or(highPrice==0)or(closePrice==0):
result=date[0:10]+&,&+str(openPrice)+&,&+str(highPrice)+&,& +str(lowPrice)+&,&+str(closePrice)+&\n&
fOutputObj.write(result)
fOutputObj.close()
def Run(self):
self.StartWind()
self.LoadStockList()
self.LoadHisInfo()
if __name__=='__main__':
loadInfoObj=LoadHisInfo()
if len(sys.argv) & 3 :
print(&python LoadWindInfo.py -o outPutDir&)
sys.exit()
opts, args = getopt.getopt(sys.argv[1:], &o:&)
for op, value in opts:
if op == &-o&:
loadInfoObj.OutputDir = value
print(&python LoadWindInfo.py -o outPutDir&)
sys.exit()
loadInfoObj.Run()
---------------------------------------------------------------------------------------------------------------------
本来想获取A股股票代码列表,通过文档例子,返回了错误码-103,没找到这个错误码的说明,w.wset(&SectorConstituent&,u&date=;sector=全部 A 股&),现在只能通过同花顺导出股票代码列表,然后通过配置文件的形式来拉数据,哪位大神知道怎么使用这个接口的还请赐教,不胜感激~~
这里分享一个python获取A股历史交易数据的例子。
#!/user/python
# -*- coding: utf-8 -*-
import math
import sys
import getopt
from WindPy import *
from decimal import *
from datetime import *
WorkSpace='E:\\WorkSpace'
dataFilesDir=WorkSpace+'\\data'
configFilePath=WorkSpace+'\\config\\StockConfig.txt'
url=''
fConfigObj=open(configFilePath, &r&)
for line in fConfigObj.readlines():
if len(line) &8:
code=line[2:8]
codeName=line[2:8]+&.&+line[0:2]
outputPath=r'E:/WorkSpace/data/'+code+r'.txt'
data=w.wsd(codeName, &open,high,low,close&, &&, &&,showblank=0)
if data.ErrorCode != 0:
print('error code:'+str(data.ErrorCode)+'\n')
sys.exit()
fOutputObj=open(outputPath.encode('gbk'),'a')
for i in range(0,len(data.Data[0])):
date=str(data.Times[i])
for k in range(0, len(data.Fields)):
if (data.Fields[k]==&OPEN&):
openPrice=data.Data[k ][i]
if(data.Fields[k] == &LOW&):
lowPrice=data.Data[k][i]
if(data.Fields[k] == &HIGH&):
highPrice=data.Data[k][i]
if(data.Fields[k] == &CLOSE&):
closePrice=data.Data[k][i]
if (openPrice==0)or (lowPrice==0)or(highPrice==0)or(closePrice==0):
result=date[0:10]+&,&+str(openPrice)+&,&+str(highPrice)+&,& +str(lowPrice)+&,&+str(closePrice)+&\n&
fOutputObj.write(result)
fOutputObj.close()
fConfigObj.close()
浏览数(10208)
完全没有缩进,第二是代码的质量不高。。从wind python接口获取数据并存储 - 简书
从wind python接口获取数据并存储
转载的别人的资料,yuzhucu@CSDN
# -*- coding:utf-8 -*-
####################################################################################################################
程序:Wind股票数据下载
功能:从Wind终端或者Wind资讯量化接口个人免费版中下载股票相关数据,保存至本地MySQL数据库,以进一步加工处理和分析
创建时间:
V1.01 创建版本,Python2.7
更新历史:
V1.02 从本地文件读取股票代码列表;升级到Python3.5版本
V1.03 封装为函数,便于调试和代码管理
V1.04 封装为类,为后续完善功能准备。自动从Wind中获取股票列表,独立运行;增加日志和参数处理
环境和类库:使用Python 3.5及第三方库pandas、WindPy、sqlalchemy
数据库:MySQL 5.7.16
Wind资讯量化接口 个人版(免费),可从Wind官网或大奖章网站下载安装,注册即可使用
作者:yuzhucu
####################################################################################################################
import pandas as pd
from WindPy import *
from sqlalchemy import create_engine
import datetime,time
class WindStock():
def getCurrentTime(self):
# 获取当前时间
return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))
def AStockHisData(self,symbols,start_date,end_date,step=0):
逐个股票代码查询行情数据
wsd代码可以借助 WindNavigator自动生成copy即可使用;时间参数不设,默认取当前日期,可能是非交易日没数据;
只有一个时间参数时,默认作为为起始时间,结束时间默认为当前日期;如设置两个时间参数则依次为起止时间
print(self.getCurrentTime(),": Download A Stock Starting:")
for symbol in symbols:
#stock=w.wsd(symbol,'trade_code,open,high,low,close,volume,amt',start_date,end_date)
wsd代码可以借助 WindNavigator自动生成copy即可使用;
时间参数不设,默认取当前日期,可能是非交易日没数据;
只有一个时间参数,默认为起始时间到最新;如设置两个时间参数则依次为起止时间
stock=w.wsd(symbol, "trade_code,open,high,low,close,pre_close,volume,amt,dealnum,chg,pct_chg,vwap, adjfactor,close2,turn,free_turn,oi,oi_chg,pre_settle,settle,chg_settlement,pct_chg_settlement, lastradeday_s,last_trade_day,rel_ipo_chg,rel_ipo_pct_chg,susp_reason,close3, pe_ttm,val_pe_deducted_ttm,pe_lyr,pb_lf,ps_ttm,ps_lyr,dividendyield2,ev,mkt_cap_ard,pb_mrq,pcf_ocf_ttm,pcf_ncf_ttm,pcf_ocflyr,pcf_nflyr,trade_status", start_date,end_date)
index_data = pd.DataFrame()
index_data['trade_date']=stock.Times
stock.Data[0]=symbol
index_data['stock_code']=stock.Data[0]
#index_data['stock_code'] =symbol
index_data['open'] =stock.Data[1]
index_data['high'] =stock.Data[2]
index_data['low']
=stock.Data[3]
index_data['close']=stock.Data[4]
index_data['pre_close']=stock.Data[5]
index_data['volume']=stock.Data[6]
index_data['amt']=stock.Data[7]
index_data['dealnum']=stock.Data[8]
index_data['chg']=stock.Data[9]
index_data['pct_chg']=stock.Data[10]
#index_data['pct_chg']=index_data['pct_chg']/100
index_data['vwap']=stock.Data[11]
index_data['adj_factor']=stock.Data[12]
index_data['close2']=stock.Data[13]
index_data['turn']=stock.Data[14]
index_data['free_turn']=stock.Data[15]
index_data['oi']=stock.Data[16]
index_data['oi_chg']=stock.Data[17]
index_data['pre_settle']=stock.Data[18]
index_data['settle']=stock.Data[19]
index_data['chg_settlement']=stock.Data[20]
index_data['pct_chg_settlement']=stock.Data[21]
index_data['lastradeday_s']=stock.Data[22]
index_data['last_trade_day']=stock.Data[23]
index_data['rel_ipo_chg']=stock.Data[24]
index_data['rel_ipo_pct_chg']=stock.Data[25]
index_data['susp_reason']=stock.Data[26]
index_data['close3']=stock.Data[27]
index_data['pe_ttm']=stock.Data[28]
index_data['val_pe_deducted_ttm']=stock.Data[29]
index_data['pe_lyr']=stock.Data[30]
index_data['pb_lf']=stock.Data[31]
index_data['ps_ttm']=stock.Data[32]
index_data['ps_lyr']=stock.Data[33]
index_data['dividendyield2']=stock.Data[34]
index_data['ev']=stock.Data[35]
index_data['mkt_cap_ard']=stock.Data[36]
index_data['pb_mrq']=stock.Data[37]
index_data['pcf_ocf_ttm']=stock.Data[38]
index_data['pcf_ncf_ttm']=stock.Data[39]
index_data['pcf_ocflyr']=stock.Data[40]
index_data['pcf_ncflyr']=stock.Data[41]
index_data['trade_status']=stock.Data[42]
index_data['data_source']='Wind'
index_data['created_date']=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
index_data['updated_date']=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
index_data = index_data[index_data['open'] & 0]
#index_data.fillna(0)
index_data.to_sql('stock_daily_data',engine,if_exists='append');
except Exception as e:
#如果写入数据库失败,写入日志表,便于后续分析处理
error_log=pd.DataFrame()
error_log['trade_date']=stock.Times
error_log['stock_code']=stock.Data[0]
error_log['start_date']=start_date
error_log['end_date']=end_date
error_log['status']=None
error_log['table']='stock_daily_data'
error_log['args']='Symbol: '+symbol+' From '+start_date+' To '+end_date
error_log['error_info']=e
error_log['created_date']=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
error_log.to_sql('stock_error_log',engine,if_exists='append')
print ( self.getCurrentTime(),": SQL Exception :%s" % (e) )
except Exception as e:
#如果读取处理失败,可能是网络中断、频繁访问被限、历史数据缺失等原因。写入相关信息到日志表,便于后续补充处理
error_log=pd.DataFrame()
error_log['trade_date']=stock.Times
error_log['stock_code']=stock.Data[0]
error_log['start_date']=start_date
error_log['end_date']=end_date
error_log['status']=None
error_log['table']='stock_daily_data'
error_log['args']='Symbol: '+symbol+' From '+start_date+' To '+end_date
error_log['error_info']=e
error_log['created_date']=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
error_log.to_sql('stock_error_log',engine,if_exists='append')
print ( self.getCurrentTime(),":index_data %s : Exception :%s" % (symbol,e) )
time.sleep(sleep_time)
print(self.getCurrentTime(),": Downloading [",symbol,"] From "+start_date+" to "+end_date)
print(self.getCurrentTime(),": Download A Stock Has Finished .")
def getAStockCodesFromCsv(self):
获取股票代码清单,链接数据库
file_path=os.path.join(os.getcwd(),'Stock.csv')
stock_code = pd.read_csv(filepath_or_buffer=file_path, encoding='gbk')
Code=stock_code.code
return Code
def getAStockCodesWind(end_date=time.strftime('%Y%m%d',time.localtime(time.time()))):
通过wset数据集获取所有A股股票代码,深市代码为股票代码+SZ后缀,沪市代码为股票代码+SH后缀。
如设定日期参数,则获取参数指定日期所有A股代码,不指定日期参数则默认为当前日期
:return: 指定日期所有A股代码,不指定日期默认为最新日期
#加日期参数取最指定日期股票代码
#stockCodes=w.wset("sectorconstituent","date="+end_date+";sectorid=a000;field=wind_code")
#不加日期参数取最新股票代码
stockCodes=w.wset("sectorconstituent","sectorid=a000;field=wind_code")
return stockCodes.Data[0]
#return stockCodes
def main():
主调函数,可以通过参数调整实现分批下载
global engine,sleep_time,symbols
sleep_time=5
windStock=WindStock()
engine = create_engine('mysql://root:root@localhost/invest?charset=utf8')
#start_date=''
#end_date=''
#symbols=windStock.getAStockCodesFromCsv()#通过文件获取股票代码
#symbols=windStock.getAStockCodesWind()
#通过Wind API获取股票代码,默认取最新的,可以指定取历史某一日所有A股代码
#symbols=['000001.SZ', '000002.SZ', '000004.SZ']#通过直接赋值获取股票代码用于测试
#print (symbols)
#windStock.AStockHisData(symbols,start_date,end_date)
for i in range(,-1):
start_date=str(i)+'0101'
end_date=str(i)+'1231'
print (start_date,end_date,'Starting')
symbols=windStock.getAStockCodesWind()
windStock.AStockHisData(symbols,start_date,end_date)
print (start_date,end_date,'Finished')
def test():
测试脚本,新增和优化功能时使用
symbol='000001.SZ'
start_date=''
end_date=''
#w.start();
#stock=w.wsd(symbol,'trade_code,open,high,low,close')
#stock=w.wsd(symbol, "trade_status,open,high,low,close,pre_close,volume,amt,dealnum,chg,pct_chg,vwap, adjfactor,close2,turn,free_turn,oi,oi_chg,pre_settle,settle,chg_settlement,pct_chg_settlement, lastradeday_s,last_trade_day,rel_ipo_chg,rel_ipo_pct_chg,susp_reason,close3, pe_ttm,val_pe_deducted_ttm,pe_lyr,pb_lf,ps_ttm,ps_lyr,dividendyield2,ev,mkt_cap_ard,pb_mrq,pcf_ocf_ttm,pcf_ncf_ttm,pcf_ocflyr,pcf_nflyr", start_date,end_date)
#stock=w.wsd("000001.SZ", "pre_close,open,high,low,close,volume,amt,dealnum,chg,pct_chg,vwap,adjfactor,close2,turn,free_turn,oi,oi_chg,pre_settle,settle,chg_settlement,pct_chg_settlement,lastradeday_s,last_trade_day,rel_ipo_chg,rel_ipo_pct_chg,trade_status,susp_reason,close3", "", "", "adjDate=0")
#print (stock)
for i in range(,-1):
start_date=str(i)+'0101'
end_date=str(i)+'1231'
print (start_date,end_date)
if __name__ == "__main__":
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
Java 基础思维导图,让 Java 不再难懂 - 工具资源 - 掘金思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具。了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板。 思维导图...
___________________________________________________________________________ 一、小额融资聚集人气
一个网站,要想能够发展起来,必须具备三大因素:定位,流量,资金。三者缺一不可,有创新的定位,足够...
美丽同学,12月3日加入训练营,入营8天进入10期榜,文章《我不是榜样!》,听她专门为你录制的60秒节目《给晚加入的伙伴们-美丽》,日加入享说团,4月1日成为首个精品小班的助教,点击进入她的电台,截止到4月3日,她完成129期节目。 请美丽同学把你点评的过节...
聆听是以语音为载体的语言输入训练,包括三个方面:语言材料的呈现、语言材料的理解和语言材料的记忆。以下为聆听学习的基本操作方法: 一、语言材料的呈现 选取2-5分钟的英语音频片段。先听3遍。不管听不听得懂。听的时候一定要集中注意力。 二、语言材料的理解 (1)将音频材料导入a...
羊皮卷其实很早之前就有朋友向我推存,一直没去看,通过这三天阅读羊皮卷,巜今天我要加倍重视自己的价值》,巜今天我要学会控制情绪》,《坚持不懈,直到成功》,看起来是否很简单但想要把这些道理,或者说是原则测融进自己的个性,让他们成为一种生活习惯,确实非常不易,它不仅仅交给我们怎样...
上邪,我欲与君相知,长命无绝衰,山无棱,江水为竭,冬雷阵阵夏雨雪,天地合,乃敢与君绝。用python如何爬取港股腾讯的所有数据? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。4被浏览233分享邀请回答赞同 添加评论分享收藏感谢收起

我要回帖

更多关于 港股 数据 python 的文章

 

随机推荐