HML5day01

作者:gqk

一:什么是HTML5:

 

1.H5并不是新的语言,而是html语言的第五次重大修改--版本

 

2.支持:所有的主流浏览器都支持h5.(chrome,firefox,safari。。。)。IE9及以上支持h5(有选择的支持,并不会全部支持),但是ie8及以下不支持h5.

 

3.改变了用户与文档的交互方式:多媒体:video  audio canvas

 

4.增加了其它的新特性:语义特性,本地存储特性,网页多媒体,二维三维,特效(过渡,动画)

 

5.相对于h4:
      1.进步:抛弃了一些不合理不常用的标记和属性
   2.新增了一些标记和属性--表单
   3.从代码角度而言,h5的网页结构代码更简洁。

6. 缺点:该标准并未能很好的被Pc端浏览器所支持。因新标签的引入,各浏览器之间将缺少一种统一的数据描述格式,造成用户体验不佳。

7.      未来趋势

  a)       移动优先

  b)       游戏开发者领衔“主演

二:语义和结构

标签

描述

<article>

定义页面的侧边栏内容

<aside>

定义页面内容之外的内容。

<main>

文档的主要内容

<footer>

定义 section 或 document 的页脚。

<header>

定义了文档的头部区域

<nav>

定义运行中的进度(进程)。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<header>头部</header>
<nav>导航</nav>
<main>
    <article>左边</article>
    <aside>右边</aside>
</main>
<footer>底部</footer>
</body>
</html>

 三:语意标签的兼容性:

 谷歌,火狐,都支持html5的语意标签:

  1.      在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只需要将其转换成块元素(block)即可使用,但是在IE9版本以下,并不能正常解析这些新标签,但是却可以识别通过document.createElement('tagName')创建的自定义标签,于是我们的解决方案就是将HTML5的新标签全部通过document.createElement('tagName')来创建一遍,这样IE低版本也能正常解析HTML5新标签了。

  2.      处理方式:在实际开发中我们更多采用的是通过检测IE浏览器的版本来加载三方的一个JS库来解决兼容问题(测试在IE下面的兼容性:ieTester软件的使用)

<script src="../js/html5shiv.min.js"></script>

四:h5中表单新增的标签:
<form action="">
    用户名:<input type="text" name="userName"> <br>
    密码:<input type="password" name="userPwd"> <br>
    <!--email提供了默认的电子邮箱的完整验证:要求必须包含@符号,同时必须包含服务器名称,如果不能满足验证,则会阻止当前的数据提交-->
    邮箱:<input type="email"> <br>
    <!--tel它并不是来实现验证。它的本质目的是为了能够在移动端打开数字键盘。意味着数字键盘限制了用户只能输入数字。  如何查看效果:qq发送文件>>手机端使用qq来接收>>使用手机浏览器查看-->
    电话:<input type="tel"> <br>
    <!--验证只能输入合法的网址:必须包含http://-->
    网址:<input type="url"> <br>
    <!--number:只能输入数字(包含小数点),不能输入其它的字符
    max:最大值
    min:最小值
    value:默认值-->
    数量:<input type="number" value="60" max="100" min="0"> <br>
    <!--search:可以提供更人性化的输入体验-->
    请输入商品名称:<input type="search"> <br>
    <!--range:范围-->
    范围:<input type="range" max="100" min="0" value="50"> <br>
    颜色:<input type="color"> <br>
    <!--日期时间相关-->
    <!--time:时间:时分秒-->
    时间:<input type="time"> <br>
    <!--date:日期:年月日-->
    日期:<input type="date"> <br>
    <!--datetime:大多数浏览器不能支持datetime.用于屏幕阅读器-->
    日期时间:<input type="datetime"><br>
    <!--datetime-local:日期和时间-->
    日期时间:<input type="datetime-local"> <br>
    月份:<input type="month"> <br>
    星期:<input type="week">
    <!--提交-->
    <input type="submit">
</form>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" id="myForm">
    <!--placeholder:提示文本,提示占位-->
    <!--autofocus:自动获取焦点-->
    <!--autocomplete:自动完成:on:打开  off:关闭
    1.必须成功提交过:提交过才会记录
    2.当前添加autocomplete的元素必须有name属性-->
    用户名:<input type="text" name="userName" placeholder="请输入用户名" autofocus autocomplete="on"> <br>
    <!--tel并不会实现验证,仅仅是在移动端能够弹出数字键盘-->
    <!--required:必须输入,如果没有输入则会阻止当前数据提交-->
    <!--pattern:正则表达式验证
    *:代表任意个
    ?:代表0个或1个
    +:代表1个或多个-->
    手机号:<input type="tel" name="userPhone" required pattern="^(\+86)?1\d{10}$"> <br>
    <!--multiple:可以选择多个文件-->
    文件:<input type="file" name="photo" multiple> <br>
    <!--email:有默认验证  在email中,multiple允许输入多个邮箱地址,以逗号分隔-->
    邮箱:<input type="email" name="email" multiple><br>
    
    <!--提交:-->
    <input type="submit"> <br>
</form>
<!--下面这个表单元素并没有包含在form中:默认情况下面表单元素的数据不会进行提交-->
<!--form:指定表单id,那么在将来指定id号的表单进行数据提交的时候,也会将当前表单元素的数据一起提交-->
地址:<input type="text" name="address" form="myForm">
</body>
</html>

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="">
    <!--专业:
    <select name="" id="">
        <option value="1">前端与移动开发</option>
        <option value="2">java</option>
        <option value="3">javascript</option>
        <option value="4">c++</option>
    </select>-->
    <!--不仅可以选择,还应该可以输入-->
    <!--建立输入框与datalist的关联  list="datalist的id号"-->
    专业:<input type="text" list="subjects"> <br>
    <!--通过datalist创建选择列表-->
    <datalist id="subjects">
        <!--创建选项值:value:具体的值 label:提示信息,辅助值-->
        <!--option可以是单标签也可以是双标签-->
        <option value="英语" label="不会"/>
        <option value="前端与移动开发" label="前景非常好"></option>
        <option value="java" label="使用人数多"></option>
        <option value="javascript" label="做特效"></option>
        <option value="c" label="不知道"></option>
    </datalist>

    网址:<input type="url" list="urls">
    <datalist id="urls">
        <!--如果input输入框的type类型是url,那么value值必须添加http://-->
        <option value="http://www.baidu.com" label="百度"></option>
        <option value="http://www.sohu.com"></option>
        <option value="http://www.163.com"></option>
    </datalist>
</form>
</body>
</html>

  HTML5新增事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="">
    用户名:<input type="text" name="userName" id="userName"><br>
    电话:<input type="tel" name="userPhone" id="userPhone" pattern="^1\d{10}$"> <br>
    <input type="submit">
</form>
<script>
    /*1.oninput:监听当前指定元素内容的改变:只要内容改变(添加内容,删除内容),就会触发这个事件*/
    document.getElementById("userName").oninput=function(){
        console.log("oninput:"+this.value);
    }

    /*onkeyup:键盘弹起的时候触发:每一个键的弹起都会触发一次*/
    document.getElementById("userName").onkeyup=function(){
        console.log("onkeyup:"+this.value);
    }

    /*oninvalid:当验证不通过时触发*/
    document.getElementById("userPhone").oninvalid=function(){
        /*设置默认的提示信息*/
        this.setCustomValidity("请输入合法的11位手机号");
   }
</script>
</body>
</html>

  HTML 进度条

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--max:最大值
value:当前进度值-->
<progress max="100" value="100"></progress>

<!--度量器:衡量当前进度值-->
<!--high:规定的较高的值
low:规定的较低的值
max:最大值
min:最小值
value:当前度量值-->
<meter max="100" min="0" high="80" low="40" value="30"></meter>
<meter max="100" min="0" high="80" low="40" value="60"></meter>
<meter max="100" min="0" high="80" low="40" value="100" name="level"></meter>
</body>
</html>

  音频标签:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--embed:可以直接插入音频视频,本质是通过本机安装的音频视频播放软件来播放的。要求必须已经安装了这些软件  兼容性-->

<!--flash:  1.先学习flash,增加使用成本  2.iphone,ipd,不支持flash-->

<!--audio:音频-->
<!--
src:播放文件的路径
controls:音频播放器的控制器面板
autoplay:自动播放
loop:循环播放-->
<!--<audio src="../mp3/aa.mp3" controls></audio>-->

<!--video:视频-->
<!--
src:播放文件的路径
controls:音频播放器的控制器面板
autoplay:自动播放
loop:循环播放
poster:指定视频还没有完全下载完毕,或者用户没有点击播放前显示的封面。 默认显示当前视频文件的第一副图像
width:视频的宽度
height:视频的高度
-->
<!--注意事项:视频始终会保持原始的宽高比。意味着如果你同时设置宽高,并不是真正的将视频的画面大小设置为指定的大小,而只是将视频的占据区域设置为指定大小,除非你设置的宽高刚好就是原始的宽高比例。所以建议:在设置视频宽高的时候,一般只会设置宽度或者高度,让视频文件自动缩放-->
<!--<video src="../mp3/mp4.mp4" poster="../images/l1.jpg" controls  height="600"></video>-->

<!--source:因为不同的浏览器所支持的视频格式不一样,为了保证用户能够看到视频,我们可以提供多个视频文件让浏览器自动选择-->
<!--<video src="../mp3/flv.flv" controls></video>-->
<video controls>
    <!--视频源,可以有多个源-->
    <source src="../mp3/flv.flv" type="video/flv">
    <source src="../mp3/mp4.mp4" type="video/mp4">
</video>
</body>
</html>

  




转载于:https://www.cnblogs.com/520gqk/p/9470194.html

``` import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import statsmodels.api as sm plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False code_name = {"002581": "未名医药", "002793": "罗欣药业"} code_list = list(code_name.keys()) start_date = '2020-01-01'; end_date = '2021-09-30' import akshare as ak def get_stock_data(stock_code, start_date, end_date): stock_df = ak.stock_zh_a_hist(symbol=stock_code,period="daily",start_date=start_date.replace('-', ''),end_date=end_date.replace('-', ''),adjust="qfq") stock_df['收益率'] = stock_df['收盘'].pct_change() return stock_df.dropna() return_dict = {} for code in code_list: try: start_clean = start_date.replace('-', '') end_clean = end_date.replace('-', '') return_dict[code] = get_stock_data(code, start_clean, end_clean)[['日期', '收盘', '收益率']].set_index('日期') except Exception as e: print(f"股票{code}获取失败: {str(e)}") import baostock as bs factors = pd.read_csv('D:\pycharm\PyCharm 2024.3.5\fivefactor_daily.csv', index_col='trddy') factors.index = pd.to_datetime(factors.index) three_factors = factors.loc['2020-01-01':'2021-09-30', ['mkt_rf', 'rf', 'smb', 'hml']] def sum_return_ratio(price_list): '''实际总收益率''' price_list=price_list.to_numpy() return (price_list[-1]-price_list[0])/price_list[0] def MaxDrawdown(price_list): '''最大回撤率''' i = np.argmax((np.maximum.accumulate(price_list) - price_list) / np.maximum.accumulate(price_list)) # 结束位置 if i == 0: return 0 j = np.argmax(price_list[:i]) # 开始位置 return (price_list[j] - price_list[i]) / (price_list[j]) def sharpe_ratio(price_list,rf=0.000041): '''夏普比率''' #公式 夏普率 = (回报率均值 - 无风险率) / 回报率的标准差 # pct_change()是pandas里面的自带的计算每日增长率的函数 daily_return = price_list.pct_change() return daily_return.mean()-rf/ daily_return.std() def Information_Ratio(price_list,rf=0.000041): '''信息比率''' chaoer=sum_return_ratio(price_list)-((1+rf)**365-1) return chaoer/np.std(price_list.pct_change()-rf) def deal(code='', mode='五因子'): day_return = return_dict[code] # ['收益率'] day_return.index = pd.to_datetime(day_return.index) 实际总收益率 = sum_return_ratio(day_return['收盘']) 最大回测率 = MaxDrawdown(day_return['收盘']) 夏普比率 = sharpe_ratio(day_return['收盘']) 信息比率 = Information_Ratio(day_return['收盘']) zgpa_threefactor = pd.merge(three_factors, day_return, left_index=True, right_index=True) if mode == '五因子': result = sm.OLS(zgpa_threefactor['收益率'], sm.add_constant(zgpa_threefactor.loc[:, ['mkt_rf', 'smb', 'hml', 'rmw', 'cma']])).fit() betas = result.params return pd.DataFrame( {'阿尔法': betas[0], '市场风险因子MKT': betas[1], '市值因子SMB': betas[2], '账面市值因子HML': betas[3],'盈利能力因子RMW': betas[4], '投资风格因子CMA': betas[5],'实际总收益率': 实际总收益率, '最大回测率': 最大回测率, '夏普比率': 夏普比率, '信息比率': 信息比率,'股票代码': code}, index=[0]) else: # zgpa_threefactor = pd.merge(three_factors, day_return,left_index=True, right_index=True) result = sm.OLS(zgpa_threefactor['收益率'],sm.add_constant(zgpa_threefactor.loc[:, ['mkt_rf', 'smb', 'hml']])).fit() betas = result.params return pd.DataFrame({'阿尔法': betas[0], '市场风险因子MKT': betas[1], '市值因子SMB': betas[2], '账面市值因子HML': betas[3],'实际总收益率': 实际总收益率, '最大回测率': 最大回测率, '夏普比率': 夏普比率, '信息比率': 信息比率,'股票代码': code}, index=[0]) df_results = pd.DataFrame() for code, df_one in return_dict.items(): result = deal(code=code,mode='五因子'); result['股票名称'] = code_name[code] df_results = pd.concat([df_results, result], axis=0, ignore_index=True) df_results=df_results[['股票代码', '股票名称','阿尔法', '市场风险因子MKT', '市值因子SMB', '账面市值因子HML', '实际总收益率', '最大回测率', '夏普比率', '信息比率']].sort_values(by='阿尔法',ascending=False) df_results ### 储存结果 df_results.to_csv('五因子结果.csv',index=False)```代码运行不成功,是前后的错误,还是运行的错误
04-01
``` import baostock as bs import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.rcParams ['font.sans-serif'] ='SimHei' #显示中文 plt.rcParams ['axes.unicode_minus']=False #显示负号 three_factors=pd.read_csv('fivefactor_daily.csv')[['trddy','mkt_rf','smb','hml','rmw','cma']].rename(columns={'trddy':'日期'}).set_index('日期') three_factors=three_factors.loc['2023-04-01':'2024-03-31',:] three_factors.index=pd.to_datetime(three_factors.index) three_factors.head(3) def sum_return_ratio(price_list): '''实际总收益率''' price_list=price_list.to_numpy() return (price_list[-1]-price_list[0])/price_list[0] def MaxDrawdown(price_list): '''最大回撤率''' i = np.argmax((np.maximum.accumulate(price_list) - price_list) / np.maximum.accumulate(price_list)) # 结束位置 if i == 0: return 0 j = np.argmax(price_list[:i]) # 开始位置 return (price_list[j] - price_list[i]) / (price_list[j]) def sharpe_ratio(price_list,rf=0.000041): '''夏普比率''' #公式 夏普率 = (回报率均值 - 无风险率) / 回报率的标准差 # pct_change()是pandas里面的自带的计算每日增长率的函数 daily_return = price_list.pct_change() return daily_return.mean()-rf/ daily_return.std() def Information_Ratio(price_list,rf=0.000041): '''信息比率''' chaoer=sum_return_ratio(price_list)-((1+rf)**365-1) return chaoer/np.std(price_list.pct_change()-rf) def deal(code='', mode='五因子'): day_return = return_dict[code] # ['收益率'] day_return.index = pd.to_datetime(day_return.index) 实际总收益率 = sum_return_ratio(day_return['收盘']) 最大回测率 = MaxDrawdown(day_return['收盘']) 夏普比率 = sharpe_ratio(day_return['收盘']) 信息比率 = Information_Ratio(day_return['收盘']) zgpa_threefactor = pd.merge(three_factors, day_return, left_index=True, right_index=True) if mode == '五因子': result = sm.OLS(zgpa_threefactor['收益率'], sm.add_constant(zgpa_threefactor.loc[:, ['mkt_rf', 'smb', 'hml', 'rmw', 'cma']])).fit() betas = result.params return pd.DataFrame( {'阿尔法': betas[0], '市场风险因子MKT': betas[1], '市值因子SMB': betas[2], '账面市值因子HML': betas[3], '盈利能力因子RMW': betas[4], '投资风格因子CMA': betas[5], '实际总收益率': 实际总收益率, '最大回测率': 最大回测率, '夏普比率': 夏普比率, '信息比率': 信息比率, '股票代码': code}, index=[0]) else: # zgpa_threefactor = pd.merge(three_factors, day_return,left_index=True, right_index=True) result = sm.OLS(zgpa_threefactor['收益率'], sm.add_constant(zgpa_threefactor.loc[:, ['mkt_rf', 'smb', 'hml']])).fit() betas = result.params return pd.DataFrame( {'阿尔法': betas[0], '市场风险因子MKT': betas[1], '市值因子SMB': betas[2], '账面市值因子HML': betas[3], '实际总收益率': 实际总收益率, '最大回测率': 最大回测率, '夏普比率': 夏普比率, '信息比率': 信息比率, '股票代码': code}, index=[0]) df_results = pd.DataFrame() for code, df_one in return_dict.items(): result = deal(code=code,mode='五因子'); result['股票名称'] = code_name[code] df_results = pd.concat([df_results, result], axis=0, ignore_index=True) df_results=df_results[['股票代码', '股票名称','阿尔法', '市场风险因子MKT', '市值因子SMB', '账面市值因子HML', '实际总收益率', '最大回测率', '夏普比率', '信息比率']].sort_values(by='阿尔法',ascending=False) df_results ### 储存结果 df_results.to_csv('五因子结果.csv',index=False)```代码运行错误怎样更改
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值