A. 怎样用 Python 写一个股票自动交易的程序
概率炒股法:
下面方法买涨不买跌,同时避免被套,缺点,手续费比较高,但完全可以吃完整个牛市,熊市不会被套。
用python获取股票价格,如tushare,如果发现股票当天涨幅在大盘之上(2点30到2点50判断),买入持有一天,下跌当天就别买,你可以用概率论方法,根据资金同时持有5支,10支或20支,这样不怕停盘影响,理论上可以跑赢大盘。好处:避免人为冲动,缺点手续费高
还有一种是操作etf,如大盘50etf,etf300,中小板etf,创业板etf,当天2.30分判断那个etf上涨就买入那支,买入涨幅最大的,不上涨什么都不买,持有一天,第二天上午判断一下,如果下跌超过2%卖掉。好处:不会踩地雷,缺点:涨随大盘,我比较推荐这个方法,外围的风险比较小。
具体的python程序我有,比上面复杂,有止赢止损位,资金管理,监视管理,我用在实盘当中,自动化下单也已解决。
我觉得程序的成败不在一日之功,在于长期稳定赚钱,如运行十年,过多的数据分析也无意义,因为预测未来永远是一个概率问题,不是百分之百确定的,如果你的程序能在长时间多次数上战胜市场,你的程序就能趋向大数定理。
否则一时的回撤会让你停止程序自动执行,而无法趋向大数定理中的稳定概率。
如果有一个程序能百分之99确定,那么基本上肯定是分析了内幕交易数据,和徐x一样,每次重仓一支股,这种手法应该是得到了内幕,也就不需要什么程序来交易了。
巴菲特的交易模式实质上也是内幕交易的一种,因为他靠的是外在分析,实地考查,估计这是寻找内幕的手段,现在做大了,这种效果就不灵了,收益也下降了,美国经济也下滑了,所以巴菲特的未来是必定是暗淡的,因为内幕交易的池子有限,资金量大了不好操作。
想想如果巴菲特生在苏联,印度,日本等等其他国家,他可能在街头要饭,美国二战后经济环境加倾向内幕造就了他,而不是炒股技术有多神。所以巴菲特不屑于程序化交易。
巴菲特及不少美国式的股神实际上是幸存者偏差造成的,你想想苏联的股神在那里?为什么一个都没有?(“沉默的数据”、“死人不会说话”)
我觉得未来真正能成股神必定是程序,不是人,因为一个好的程序策略可以用一辈子,实现长期稳定增长,当然前提是社会经济环境稳定,不会出现类似苏联的动乱,也不会出现日本式的恶性通胀(对货币m2有点担心)。
太多的股票让股民每天沉浸在选股的游戏中,选股造就了券商的行情软件,实际上很多数据都是没有用的,所有的关键是按操作方法永远执行下去才能趋向稳定概率,否则今天换一种明天换一种方法,今天按kdj,明天按macd,后天按boll,大后天按ddx,大大后天按自编指标,多条件选股,最后钱都交手续费或止损不及时被套牢了。这时券商收佣金的目的也就达到了,每年券商收的佣金比股市分红要高。不管行情如何,只要多请几个股评员,总有方向说对的,玩个概率游戏让大家频繁交易,券商的收入只会增不会降。所以千万别信股评,玩的是概率游戏,如同预测硬币的正反,请十个股评师必定有个能预测三次正确的神股评。你信这个神股评,后面可能是三次都不准,呵呵。所以券商和行情软件总会在收盘或午休时弹出各种消息或评价,说实在的这种东西没有一分钱的价值。可能早就写好了上涨的说法是模块a,下跌的说法是模板b,平市的说法是模板c,只是填上当天数据即可,都是八股文,都是马后炮,一样的事件上午说成是上涨理由,下午说成是下跌理由。
程序的策略经过测试后的关键在于稳定执行,长期稳定执行,长期长期稳定稳定执行执行,重要的事说三遍。
人性无法战胜的弱点是执行力,小学生都懂的天天向上,每日进步,世间有几人能做到?而稳定几十年执行更是难上加难,如同背英语单词一样,理论上一天背一百个,一百天就可以一万词,但十年,二十年过去了,你可能还是三千词以下。
用程序的目的就是百分之百执行到位,没有折扣,真正战胜人性的弱点,和t+1没有关系。
另外通过一定方法降低手续费也可以使你的资金活得更久,如把上面的日模型改为周或月模型。
B. 如何用Python炒股
如果想直接执行python程序的话可以写一个.bat新建一个记事本,然后写一段下面的代码,专最后存属成.bat文件,以后直接执行这段代码就可以了。其实也可以直接执行.py文件c:\program files\python file.py
C. 怎样用python处理股票
用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库回:tushare;一个国内股答票数据获取包。可以在网络中搜索“Python tushare”来查询相关资料,或者在tushare的官网上查询说明文档。
D. 怎样用 Python 写一个股票自动交易的程序
方法一来
前期的数据抓自取和分析可能python都写好了,所以差这交易指令接口最后一步。对于股票的散户,正规的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。
方法二
是wind这样的软件也有直接的接口,支持部分券商,但也贵,几万一年是要的。
方法三
鼠标键盘模拟法,很复杂的,就是模拟键盘鼠标去操作一些软件,比如券商版交易软件和大智慧之类的。
方法四
就是找到这些软件的关于交易指令的底层代码并更改,不过T+1的规则下,预测准确率的重要性高于交易的及时性,花功夫做数据分析就好,交易就人工完成吧
E. 如何用Python和机器学习炒股赚钱
相信很多人都想过让人工智能来帮你赚钱,但到底该如何做呢?瑞士日内瓦的一位金融数据顾问 Gaëtan Rickter 近日发表文章介绍了他利用 Python 和机器学习来帮助炒股的经验,其最终成果的收益率跑赢了长期处于牛市的标准普尔 500 指数。虽然这篇文章并没有将他的方法完全彻底公开,但已公开的内容或许能给我们带来如何用人工智能炒股的启迪。
我终于跑赢了标准普尔 500 指数 10 个百分点!听起来可能不是很多,但是当我们处理的是大量流动性很高的资本时,对冲基金的利润就相当可观。更激进的做法还能得到更高的回报。
这一切都始于我阅读了 Gur Huberman 的一篇题为《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的论文。该研究描述了一件发生在 1998 年的涉及到一家上市公司 EntreMed(当时股票代码是 ENMD)的事件:
「星期天《纽约时报》上发表的一篇关于癌症治疗新药开发潜力的文章导致 EntreMed 的股价从周五收盘时的 12.063 飙升至 85,在周一收盘时接近 52。在接下来的三周,它的收盘价都在 30 以上。这股投资热情也让其它生物科技股得到了溢价。但是,这个癌症研究方面的可能突破在至少五个月前就已经被 Nature 期刊和各种流行的报纸报道过了,其中甚至包括《泰晤士报》!因此,仅仅是热情的公众关注就能引发股价的持续上涨,即便实际上并没有出现真正的新信息。」
在研究者给出的许多有见地的观察中,其中有一个总结很突出:
「(股价)运动可能会集中于有一些共同之处的股票上,但这些共同之处不一定要是经济基础。」
我就想,能不能基于通常所用的指标之外的其它指标来划分股票。我开始在数据库里面挖掘,几周之后我发现了一个,其包含了一个分数,描述了股票和元素周期表中的元素之间的「已知和隐藏关系」的强度。
我有计算基因组学的背景,这让我想起了基因和它们的细胞信号网络之间的关系是如何地不为人所知。但是,当我们分析数据时,我们又会开始看到我们之前可能无法预测的新关系和相关性。
如果你使用机器学习,就可能在具有已知和隐藏关系的上市公司的寄生、共生和共情关系之上抢占先机,这是很有趣而且可以盈利的。最后,一个人的盈利能力似乎完全关乎他在生成这些类别的数据时想出特征标签(即概念(concept))的强大组合的能力。
我在这类模型上的下一次迭代应该会包含一个用于自动生成特征组合或独特列表的单独算法。也许会基于近乎实时的事件,这可能会影响那些具有只有配备了无监督学习算法的人类才能预测的隐藏关系的股票组。
F. 怎样用 Python 写一个股票自动买卖的程序
方法一来
前期的数据源抓取和分析可能python都写好了,所以差这交易指令接口最后一步。对于股票的散户,正规的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。
方法二
是wind这样的软件也有直接的接口,支持部分券商,但也贵,几万一年是要的。
方法三
鼠标键盘模拟法,很复杂的,就是模拟键盘鼠标去操作一些软件,比如券商版交易软件和大智慧之类的。
方法四
就是找到这些软件的关于交易指令的底层代码并更改,不过T+1的规则下,预测准确率的重要性高于交易的及时性,花功夫做数据分析就好,交易就人工完成吧
G. python 怎么下单炒股票
前期的数据抓取和分析可能python都写好了,所以差这交易指令接口最后一步。版对于股票的散户,正规权的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。
H. python模拟用户登录系统,如何两个用户输入各自的密码才能登入
#我可以把我自己的成果送你,你来研究研究
import json #用来存储数据的模块
import os #用来进行文件操作
import sys #获取脚本所在目录用
import re #用来进行字符串操作
script_path = os.path.realpath(__file__)
PATH = os.path.dirname(script_path)
contents_list = []
if not os.path.exists(PATH+'\\'+'user_information'):
os.mkdir(PATH+'\\'+'user_information')
#主体函数,是主要的内容
def main(user_name):
obj = input('你现在想要干什么?\n1.新建一个文件 2.查看一个文件 3.更改密码 4.更改用户名\n')
if obj == '1':
file_name = input('请输入文件名(不用带后缀名):')
print('请输入文件内容(如果完成输入的话就新建一行,然后输入“输入已完成”并回车来完成输入,如:\n这是第一行\n这是第二行\n这是第\
三行\n这是文件的最后一行\n输入已完成\n\n请输入:')
while True:
contents = input()
if contents == '输入已完成':
break
else:
contents_list.append(contents)
with open(PATH+'\\'+user_name+'.mmwj','r') as f:
file_names = f.readlines()
if file_name+'\n' in file_names:
print('害!写了半天,你文件名还是重复了,害!')
input('按回车键退出……')
else:
with open(PATH+'\\'+user_name+'\\'+file_name+'.json','w') as f:
json.mp(contents_list,f)
with open(PATH+'\\'+user_name+'.mmwj','a') as f:
f.write(file_name+'\n')
print('已成功!')
input('按回车键退出……')
elif obj == '2':
with open(PATH+'\\'+user_name+'.mmwj','r') as f:
file_name_list = f.readlines()
temporary_file_name_list = []
for i in file_name_list:
i = re.sub('\"|\'','',i)
i = re.sub('\n','',i)
temporary_file_name_list.append(i)
file_name_list = temporary_file_name_list
if not file_name_list == []:
print('这是你存过的所有的文件的列表:')
for i in file_name_list:
print(i)
user_file_name = input('请输入你想要查看的文件的文件名(不用带后缀):')
if user_file_name in file_name_list:
with open(PATH+'\\'+user_name+'\\'+user_file_name+'.json','r') as f:
cont = json.load(f)
for i in cont:
print(i)
input('按回车键退出……')
else:
print('未找到此文件!')
input('按回车键退出……')
else:
print('空空如也……')
input('按回车键退出……')
elif obj == '3':
with open(PATH+'\\'+'user_information\\user_name_list.json','r') as n:
user_name_list_change = n.readlines()
tm_name_change = []
for i in user_name_list_change:
i = re.sub('\"\'','',i)
i = re.sub('\n','',i)
tm_name_change.append(i)
user_name_list_change = tm_name_change
with open(PATH+'\\'+'user_information\\user_password_list.json','r') as p:
user_password_list_change = p.readlines()
tm_password_change = []
for i in user_password_list_change:
i = re.sub('\"\'','',i)
i = re.sub('\n','',i)
tm_password_change.append(i)
user_password_list_change = tm_password_change
xyz = user_name_list_change.index('"'+user_name+'"')
old_right_password = user_password_list_change[xyz]
old_password = input('请输入旧密码:')
if '"' + old_password + '"' == old_right_password:
new_password = input('请输入新密码(不要带引号或中文!):')
user_password_list_change[xyz] = new_password
with open(PATH+'\\'+'user_information\\user_password_list.json','w') as np:
for i in user_password_list_change:
np.write('"'+i+'"'+'\n')
print('密码已更改!')
input('按回车键退出……')
else:
print('对不起,旧密码错误。')
input('按回车键退出……')
elif obj == '4':
with open(PATH+'\\'+'user_information\\user_name_list.json','r') as n:
user_name_list_change = n.readlines()
tm_name_change = []
for i in user_name_list_change:
i = re.sub('\"\'','',i)
i = re.sub('\n','',i)
tm_name_change.append(i)
user_name_list_change = tm_name_change
xyz = user_name_list_change.index('"'+user_name+'"')
new_name = input('请输入新用户名:')
if '"' + new_name + '"' in user_name_list_change:
print('用户名已存在。')
input('按回车键退出……')
else:
user_name_list_change[xyz] = '"' + new_name + '"'
os.rename(PATH+'\\'+user_name+'.mmwj',PATH+'\\'+new_name+'.mmwj')
os.rename(PATH+'\\'+user_name,PATH+'\\'+new_name)
with open(PATH+'\\'+'user_information\\user_name_list.json','w') as np:
for i in user_name_list_change:
np.write(i+'\n')
print('用户名已更改!')
input('按回车键退出……')
#注册函数
def sign_up():
user_name = input('请输入用户名(不要带引号或中文!):')
user_password = input('请输入密码(不要带引号或中文!):')
if user_name == 'user_information':
print('用户名无效!')
input('按回车键退出……')
if not os.path.exists(PATH+'\\'+'user_information\\user_name_list.json'):
with open(PATH+'\\'+'user_information\\user_name_list.json','w') as con:
json.mp(user_name,con)
con.write('\n')
with open(PATH+'\\'+'user_information\\user_password_list.json','w') as con:
json.mp(user_password,con)
con.write('\n')
os.mkdir(PATH+'\\'+user_name)
with open(PATH+'\\'+user_name+'.mmwj','w') as f:
pass
print('账户创建成功 !')
main(user_name)
else:
with open(PATH+'\\'+'user_information\\user_name_list.json','r') as f:
unsul = f.readlines()
if '"' + user_name + '"\n' in unsul:
print('用户名已存在。')
input('按回车键退出……')
else:
with open(PATH+'\\'+'user_information\\user_name_list.json','a') as con:
json.mp(user_name,con)
con.write('\n')
with open(PATH+'\\'+'user_information\\user_password_list.json','a') as con:
json.mp(user_password,con)
con.write('\n')
os.mkdir(PATH+'\\'+user_name)
with open(PATH+'\\'+user_name+'.mmwj','w') as f:
pass
print('账户创建成功 !')
main(user_name)
#内容函数
def content():
user_obj = input('请问你是想登录,还是想注册?(输入1或2):')
if user_obj == '1':
if not os.path.exists(PATH+'\\'+'user_information\\user_name_list.json'):
print('对不起,你现在还没有任何账户。')
yes_or_no = input('请问你要注册一个账户吗?(输入要或不要):')
if yes_or_no == '要':
sign_up()
if yes_or_no == '不要':
input('按回车键退出……')
else:
with open(PATH+'\\'+'user_information\\user_name_list.json','r') as n:
name_list = n.readlines()
temporary_name_list = []
for i in name_list:
i = re.sub('\"|\'','',i)
i = re.sub('\n','',i)
temporary_name_list.append(i)
name_list = temporary_name_list
with open(PATH+'\\'+'user_information\\user_password_list.json','r') as p:
password_list = p.readlines()
temporary_password_list = []
for i in password_list:
i = re.sub('\"|\'','',i)
i = re.sub('\n','',i)
temporary_password_list.append(i)
password_list = temporary_password_list
contrast = dict(zip(name_list,password_list))
user_name = input('请输入用户名:')
if user_name not in name_list:
print('未找到此用户名!')
input('按回车键退出……')
else:
password = input('请输入密码:')
xpassword = contrast[user_name]
if xpassword == password:
print('登录成功!')
main(user_name)
else:
print('密码输入错误。')
input('按回车键退出……')
elif user_obj == '2':
sign_up()
content()
I. 如何用python获取股票数据
在Python的QSTK中,是通过抄s_datapath变量袭,定义相应股票数据所在的文件夹。一般可以通过QSDATA这个环境变量来设置对应的数据文件夹。具体的股票数据来源,例如沪深、港股等市场,你可以使用免费的WDZ程序输出相应日线、5分钟数据到s_datapath变量所指定的文件夹中。然后可使用Python的QSTK中,qstkutil.DataAccess进行数据访问。
J. 用python解决用户登录的验证程序