Python基础教程:符号运算与实例演练

版权申诉
0 下载量 156 浏览量 更新于2024-10-14 收藏 8.69MB ZIP 举报
资源摘要信息:"Python初始教程涵盖了Python编程语言的基本知识和入门操作。教程以简单的符号运算是开篇,介绍了Python中的基本算术运算符,如加号(+)、减号(-)、乘号(*)、除号(/)和取余数运算符(%),以及如何使用这些运算符执行基本的数学计算。除此之外,教程还提供了一系列简单的示例,用以帮助初学者理解变量的使用、数据类型、基本的输入输出操作以及简单的条件判断和循环控制结构。这些知识点构成了编程语言的基础,是学习更高级概念之前的必经之路。" Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而著称。它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。 1. Python语法:Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或关键字)。它的语法允许程序员用更少的代码行表达概念。 2. 变量:在Python中,变量无需声明类型即可直接赋值使用。Python是动态类型语言,其数据类型会在程序运行时动态绑定。 3. 数据类型:Python支持多种数据类型,包括整数、浮点数、字符串、列表、元组、字典和集合等。这些基本数据类型和数据结构是处理数据的基础。 4. 输入输出:Python通过内置函数`print()`来输出信息到控制台,通过`input()`函数从用户接收输入。 5. 条件判断:Python使用`if`、`elif`和`else`关键字来处理条件判断逻辑。 6. 循环控制:Python提供了`for`循环和`while`循环两种方式来处理重复执行的代码。`for`循环通常与迭代对象一起使用,而`while`循环则基于条件来重复执行代码块。 7. 符号运算:在Python中,可以通过基本的算术运算符来进行符号运算。这些运算符用于执行加、减、乘、除等数学运算。 8. 示例代码:教程中包含的示例代码展示了如何将上述概念付诸实践,例如,通过计算表达式、存储计算结果到变量中、打印结果等操作,来加深对知识点的理解和掌握。 这个教程适合那些没有任何编程背景,希望开始学习Python编程语言的人。它为初学者提供了一个轻松上手的平台,帮助他们建立起编程的基本概念,为后续深入学习Python及其广泛应用领域(如数据科学、机器学习、网络开发等)打下坚实的基础。

帮我把下面一段C++代码改写成python代码:#include "Trade.h" #include "WPrice.h" #include <algorithm> double normalCDF(double x) // Phi(-∞, x) aka N(x) { return std::erfc(-x / std::sqrt(2)) / 2; //erfc()是互补误差函数,该返回值表示标准正态分布下var小于x的概率,即N(x) } CTrade::CTrade(double tick) : wp_bid(0.01), wp_ask(0.01), m_tick(tick), m_TimeRound(50) { newday(NULL); } CTrade::~CTrade() { } void CTrade::OnBook(const BTRec& btRec) { wp.setGamma(0.1); wp_bid = wp.getWP(&btRec.Bids); wp_ask = wp.getWP(&btRec.Asks); if (wp_mid > 0){ //wp_mid初始化为-1,仅遇到第一条BTRec记录时条件为false double wp_now = (wp_bid + wp_ask) / 2; //updated wp_mid int volume = btRec.volume; //volume between two orderbook records double ratio = normalCDF((wp_now - wp_mid) / (2 * m_tick)); //m_tick = tick = 0.2 double buyvolume = ratio*volume, sellvolume = (1 - ratio)*volume; m_TimeRound.update(buyvolume, sellvolume, btRec.rec_time.timestamp); //volume moving average if (mv_volume < 0) { mv_volume = volume; mv_buyvolume = buyvolume; } else{ mv_volume += 0.002*(volume - mv_volume); mv_buyvolume += 0.002*(buyvolume - mv_buyvolume); } // round trip volatility if (time_ini < 0 || btRec.rec_time.timestamp - time_ini >= time_scale){ if (time_ini>0){ double dp = wp_now - wp_ini; volatility += 0.05*(dp*dp - volatility); } time_scale = m_TimeRound.getTime() * 1000; //in milliseconds time_ini = btRec.rec_time.timestamp; wp_ini = wp_now; } } wp_mid = (wp_bid + wp_ask) / 2; } void CTrade::newday(const char* p) { wp_mid = -1; m_TimeRound.newday(p); volatility = 16 * m_tick*m_tick; time_slapse = -1, time_scale = -1, wp_ini = -1, time_ini = -1; mv_buyvolume = mv_volume = -1; }

2023-05-15 上传

import datetime today = datetime.date.today() ## 获取今天的日期 day1=datetime.date.today()-datetime.timedelta(300) ### 获取300天之前的日期 day2=datetime.datetime.strftime(today,"%Y-%m-%d" ) all_stock = get_all_securities(types=['stock'], date=day2) ### 获取所有股票代码 code=list(all_stock.index) ## 判断是否ST 并且删除st的股票代码 df_st=get_extras('is_st',code,start_date=day1,end_date=day2) for i in code: if any(df_st[i].values): code.remove(i) stock_list=[] for i in code: start_date=get_security_info(i).start_date days=(today-start_date).days if days>300: #### 选出上市满天300的股票 stock_list.append(i) data=dict() for i in stock_list: df=get_price(i,start_date=day1,end_date=day2,frequency='daily', fields=['open','close','high','low']) data[i]=df ### 将数据分成选股数据和回测数据。假设用中间的120根k线,后60根k线回测 code=[] n=45 ## n为回测k线的个数 s设为45 (可以随意调整) for i in stock_list: df=data[i] max_=max(df.high[-190:-n-1]) ### 选140=(190-45)根k线(可以随意调整) min_=min(df.low[-190:-n-1]) max_close=max(df.close[-190:-n-1]) ### 选出平台震荡期间振幅小于50%的,且,最后三天连涨,最后一天突破平台最大收盘价超过5%的所有股票 if all([max_/min_<1.5,df.close[-n-1]>df.close[-n-2]>df.close[-n-3],df.close[-n-1]/max_close>1.05]): code.append(i) ### 买入过程 ## 假设根据上面平台突破选出来的股票作为买入标的 ## 买入原则是 当天选出来的股票第二天以开盘价买入。且把选出来的每只股票以,同等资金额买入 capital=100000 ## 初始资金为 10万元 position=dict() ## 初始持仓手数为一个空字典 def handle(stock_list,capital,posttion,data,n): capital_=0 for i in code: capital_per=capital/len(code) position[i]=int(capital_per/(data[i].open[-n]*100)) capital_+=capital_per-position[i]*data[i].open[-n]*100 return ([position,capital_]) position_result=handle(get_code(),capital,position,data,n)修改上述代码,使能在jupyter里面运行

2023-06-06 上传