日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python海龟交易策略_【手把手教你】用Python量化海龟交易法则 - 简书

發(fā)布時間:2023/12/8 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python海龟交易策略_【手把手教你】用Python量化海龟交易法则 - 简书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面使用簡化版的海龜交易法則進行歷史回測,即不考慮倉位管理和動態(tài)止損/止盈條件,以唐奇安通道突破作為買入賣出信號。

交易規(guī)則為:

(1)當今天的收盤價,大于過去20個交易日中的最高價時,以收盤價買入;

(2)買入后,當收盤價小于過去10個交易日中的最低價時,以收盤價賣出。

def?my_strategy(data):

x1=data.close>data.up

x2=data.close.shift(1)

x=x1&x2

y1=data.close

y2=data.close.shift(1)>data.down.shift(1)

y=y1&y2

data.loc[x,'signal']='buy'

data.loc[y,'signal']='sell'

buy_date=(data[data.signal=='buy'].index).strftime('%Y%m%d')

sell_date=(data[data.signal=='sell'].index).strftime('%Y%m%d')

buy_close=data[data.signal=='buy'].close.round(2).tolist()

sell_close=data[data.signal=='sell'].close.round(2).tolist()

return?(buy_date,buy_close,sell_date,sell_close)

#對K線圖和唐奇安通道進行可視化

from?pyecharts?import?*

grid?=?Grid()

attr=[str(t)?for?t?in?hs.index.strftime('%Y%m%d')]

v1=np.array(hs.loc[:,['open','close','low','high']])

v2=np.array(hs.up)

v3=np.array(hs.down)

kline?=?Kline("滬深300唐奇安通道",title_text_size=15)

kline.add("K線圖",?attr,?v1.round(1),is_datazoom_show=True,)

#?成交量

bar?=?Bar()

bar.add("成交量",?attr,?hs['vol'],tooltip_tragger="axis",?is_legend_show=False,

is_yaxis_show=False,?yaxis_max=5*max(hs["vol"]))

line?=?Line()

line.add("上軌線",?attr,?v2.round(1),is_datazoom_show=True,

is_smooth=True,is_symbol_show=False,line_width=1.5)

line.add("下軌線",?attr,?v3.round(1),is_datazoom_show=True,

is_smooth=True,is_symbol_show=False,line_width=1.5)

#添加買賣信號

bd,bc,sd,sc=my_strategy(hs)

es?=?EffectScatter("buy")

es.add(?"sell",?sd,?sc,?)

es.add("buy",?bd,?bc,symbol="triangle",)

overlap?=?Overlap(width=2000,?height=600)

overlap.add(kline)

overlap.add(line)

overlap.add(bar,yaxis_index=1,?is_add_yaxis=True)

overlap.add(es)

grid.add(overlap,?grid_right="10%")

grid

(注:運行上述代碼得到的是動態(tài)交互圖,可調整時間區(qū)間)

#關掉pandas的warnings

pd.options.mode.chained_assignment?=?None

def?strategy(stock,start,end,N1=20,N2=10):

df=get_daily_data(stock,start,end)

#最近N1個交易日最高價

df['H_N1']=ta.MAX(df.high,timeperiod=N1)

#最近N2個交易日最低價

df['L_N2']=ta.MIN(df.low,timeperiod=N2)

#當日收盤價>昨天最近N1個交易日最高點時發(fā)出信號設置為1

buy_index=df[df.close>df['H_N1'].shift(1)].index

df.loc[buy_index,'收盤信號']=1

#將當日收盤價

sell_index=df[df.close

df.loc[sell_index,'收盤信號']=0

df['當天倉位']=df['收盤信號'].shift(1)

df['當天倉位'].fillna(method='ffill',inplace=True)

d=df[df['當天倉位']==1].index[0]-timedelta(days=1)

df1=df.loc[d:].copy()

df1['ret'][0]=0

df1['當天倉位'][0]=0

#當倉位為1時,買入持倉,當倉位為0時,空倉,計算資金凈值

df1['策略凈值']=(df1.ret.values*df1['當天倉位'].values+1.0).cumprod()

df1['指數凈值']=(df1.ret.values+1.0).cumprod()

df1['策略收益率']=df1['策略凈值']/df1['策略凈值'].shift(1)-1

df1['指數收益率']=df1.ret

total_ret=df1[['策略凈值','指數凈值']].iloc[-1]-1

annual_ret=pow(1+total_ret,250/len(df1))-1

dd=(df1[['策略凈值','指數凈值']].cummax()-df1[['策略凈值','指數凈值']])/df1[['策略凈值','指數凈值']].cummax()

d=dd.max()

beta=df1[['策略收益率','指數收益率']].cov().iat[0,1]/df1['指數收益率'].var()

alpha=(annual_ret['策略凈值']-annual_ret['指數凈值']*beta)

exReturn=df1['策略收益率']-0.03/250

sharper_atio=np.sqrt(len(exReturn))*exReturn.mean()/exReturn.std()

TA1=round(total_ret['策略凈值']*100,2)

TA2=round(total_ret['指數凈值']*100,2)

AR1=round(annual_ret['策略凈值']*100,2)

AR2=round(annual_ret['指數凈值']*100,2)

MD1=round(d['策略凈值']*100,2)

MD2=round(d['指數凈值']*100,2)

S=round(sharper_atio,2)

df1[['策略凈值','指數凈值']].plot(figsize=(15,7))

plt.title('海龜交易策略簡單回測',size=15)

bbox?=?dict(boxstyle="round",?fc="w",?ec="0.5",?alpha=0.9)

plt.text(df1.index[int(len(df1)/5)],?df1['指數凈值'].max()/1.5,?f'累計收益率:\

策略{TA1}%,指數{TA2}%;\n年化收益率:策略{AR1}%,指數{AR2}%;\n最大回撤:??策略{MD1}%,指數{MD2}%;\n\

策略alpha:?{round(alpha,2)},策略beta:{round(beta,2)};?\n夏普比率:??{S}',size=13,bbox=bbox)

plt.xlabel('')

ax=plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

plt.show()

#return?df1.loc[:,['close','ret','H_N1','L_N2','當天倉位','策略凈值','指數凈值']]

下面對上證綜指、滬深300、創(chuàng)業(yè)板指數、中國平安、東方通信和貴州茅臺進行簡單回測,看看海龜交易規(guī)則唐奇安的擇時效果如何,具體指標看圖。

strategy('上證綜指','20050101','')

4 結語

本文簡要介紹了海龜交易法則的基本原理,使用Python對其買賣信號進行了可視化分析,并利用Pandas對相關指數和個股運用簡化版的海龜交易規(guī)則進行了歷史回測。由回測結果可看出,該簡化的趨勢追蹤策略對于某些標的在某些區(qū)間效果表現不錯,但對于某些標的或某些時期則效果不佳。當然,本文旨在回顧經典策略,展示Pandas在金融量化分析的綜合運用,為Python在金融量化中的運用起到拋磚引玉的效果,不作出任何選股或策略推薦。值得注意的是,

任何策略都具有一定的局限性,尤其是知道和使用該策略的交易者多了,其作用自然比該理念剛出現的的效果差得多

。正如技術分析指標,剛出現的時候很有效,但被大家所熟知或應用后,自然效用就大打折扣(相對于多因子模型中的Alpha被大家挖掘后漸漸成了risk factor)。但

所謂新理念、新策略一定是站在前人的肩膀上,因此不能因為經典策略回測效果不佳而全盤否定,如何改進、細化和升級,使之更適合當下的市場才是我們要面對的問題

關于Python金融量化

專注于分享Python在金融量化領域的應用。加入知識星球,可以免費獲取30多g的量化投資視頻資料、量化金融相關PDF資料、公眾號文章Python完整源碼、量化投資前沿分析框架,與博主直接交流、結識圈內朋友等。

總結

以上是生活随笔為你收集整理的python海龟交易策略_【手把手教你】用Python量化海龟交易法则 - 简书的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产91精品一区 | 51精品国产人成在线观看 | 久草久热 | 人妻少妇无码精品视频区 | 久久性色 | 国产精品1024| 久久久国产精品一区 | 亚洲精品日产精品乱码不卡 | 精品国产大片大片大片 | 欧美激情一区二区三区蜜桃视频 | aaa黄色片 | 久久久久久久久久影院 | 午夜特级毛片 | 潘金莲三级野外 | 91久久精品国产 | a级在线观看 | 国产麻豆免费视频 | 午夜色大片 | www.蜜桃av.com| 免费观看已满十八岁 | 福利色导航 | 亚洲精品国产精品国自产网站 | 三级免费毛片 | 亚洲综合婷婷 | 在线播放免费av | 性色国产成人久久久精品 | 素人女裸体 | 黄色片在线播放 | 女性女同性aⅴ免费观女性恋 | 99久久精品国产一区色 | 91免费看黄 | 日韩新片王网 | 欧美日韩一卡二卡三卡 | 亚洲精品国产精品国自产在线 | av黄色片| 精品久久久久久久久久久久久久久久 | 韩国一级淫片 | 自拍一级片 | 一级特黄色片 | 黄片毛片 | 星空无限mv国产剧入选 | 欧美视频免费看欧美视频 | 天天干天天色综合 | 日日躁夜夜躁狠狠久久av | 亚洲欧美一区二区三区不卡 | 午夜影院免费 | 99久久精品免费看国产交换 | 一本色道久久88亚洲精品综合 | 免费一区二区三区 | 一级欧美视频 | 国产成人毛片 | 一区视频 | 国产理论片在线观看 | 亚洲一级黄色片 | 四虎黄色片 | 欧美一区二区激情视频 | 国产欧美精品区一区二区三区 | 国产女女调教女同 | 天堂网av在线 | 综合激情网| 蜜臀av免费在线观看 | 欧美日韩色图片 | 丁香花激情网 | h视频在线免费观看 | 99国产精品无码 | 国产裸体永久免费视频网站 | 麻豆成人精品国产免费 | 欧美综合一区 | 少妇人妻偷人精品无码视频 | 国产有码在线观看 | 操色网 | 久草久草久草 | 亚洲黄a | 少妇高潮露脸国语对白 | 曰本无码人妻丰满熟妇啪啪 | 黄色片hd | 成人短视频在线免费观看 | 亚洲男人影院 | 肉丝超薄少妇一区二区三区 | 久久久久99精品成人片我成大片 | 鲁一鲁一鲁一鲁一av | av中文在线观看 | 精品视频免费观看 | 国产做受91 | 久久久7777 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 久久久久久久极品内射 | 久久精品视频在线免费观看 | 中文字幕高清 | 一及黄色大片 | 亚洲av无码国产在丝袜线观看 | www.伊人.com | 久久久久亚洲av无码a片 | 国产精品无码在线 | 6680新视觉电影免费观看 | 久久裸体视频 | 成人福利影院 | 一级黄色大片网站 | 亚洲女成人图区 |