網(wǎng)站內(nèi)頁banner一般做多高百度一下搜索引擎
海龜們使用兩種資金管理方法。首先,我們把頭寸分成一個(gè)個(gè)小塊。這樣,即使一筆交易賠了錢,我們損失的也只是一個(gè)頭寸的一部分。里奇和比爾把這些小塊稱作頭寸單位。其次,我們使用里奇和比爾發(fā)明的一種創(chuàng)新性的頭寸規(guī)模決定方法。這種方法以市場的每日上下波動為基礎(chǔ),而波動幅度是以不變美元價(jià)衡量的。他們會為每一個(gè)市場計(jì)算出一個(gè)特定的合約數(shù)量,目的是讓所有市場的絕對波動幅度大致相等。里奇和比爾把他們的波動性指標(biāo)稱為N,盡管現(xiàn)在的人更習(xí)慣稱它為真實(shí)波動幅度均值(average true range,ATR)。
在量化投資平臺聚寬上面,可以用下面的代碼來計(jì)算:
# 本文用于測算ATR,ATR是用于測算波動率的重要指標(biāo),其定義為:
# 1、昨日收盤價(jià)-當(dāng)日最高價(jià)
# 2、昨日收盤價(jià)-當(dāng)日最低價(jià)
# 3、當(dāng)日最高價(jià)-當(dāng)日最低價(jià)
# 三者的最大值
import pandas as pd
#顯示所有列
pd.set_option('display.max_columns', None)
#顯示所有行
pd.set_option('display.max_rows', None)
#設(shè)置value的顯示長度為100,默認(rèn)為50
pd.set_option('max_colwidth',100)
def get_ATR(stockname, begindate, enddate):
????# 獲取行情數(shù)據(jù)
????df_stockdata = get_price(stockname, start_date=begindate, end_date=enddate, frequency='daily')
????df_stockdata = df_stockdata.reset_index()
????df_stockdata.rename(columns={'index':'stockdate'}, inplace=True)
# ????print(df_stockdata)
????if type(df_stockdata) == int:
????????print(stockname, '在這段時(shí)間內(nèi),沒有數(shù)據(jù)!')
????????return -1
????# 數(shù)據(jù)清理,首先要?jiǎng)h掉空格行
????df_stockdata = df_stockdata.replace(0, np.nan)
????df_stockdata = df_stockdata.dropna()
????df_stockdata = df_stockdata.reset_index(drop=True)
????# 獲取昨日收盤價(jià)
????df_yesterday_close = df_stockdata.loc[0:len(df_stockdata) - 2, 'close']
????df_yesterday_close.index = df_yesterday_close.index + 1
????df_yesterday_close.rename('yesterday_Close', inplace=True) ?# 更新Series的名字,一定要加 inplace=True,否則改不過來
????# print(type(df_yesterday_close))
????df_stockdata = pd.concat([df_stockdata, df_yesterday_close], axis=1)
????df_stockdata = df_stockdata.dropna(axis=0) ?# 刪掉空值數(shù)據(jù)
????df_stockdata = df_stockdata.reset_index(drop=True)
????df_stockdata['ATR_3'] = (df_stockdata['high'] - df_stockdata['low']) ?# 當(dāng)日最高價(jià)-當(dāng)日最低價(jià)
????df_stockdata['ATR_2'] = abs(df_stockdata['yesterday_Close'] - df_stockdata['low']) ?# 昨日收盤價(jià)-當(dāng)日最低價(jià)
????df_stockdata['ATR_1'] = abs(df_stockdata['yesterday_Close'] - df_stockdata['high']) ?# 昨日收盤價(jià)-當(dāng)日最低價(jià)
????# 重新構(gòu)建一個(gè)臨時(shí)DataFrame,用于取最大值
????df_temp_atr = df_stockdata[['ATR_3', 'ATR_2', 'ATR_1']]
????df_atr = df_temp_atr.max(axis=1)
????df_atr.rename('ATR', inplace=True) ???# 重命名
????
????df_stockdata = pd.concat([df_stockdata, df_atr], axis=1)
????return df_stockdata
get_ATR('300144.XSHE', '2022-02-01', '2022-02-18')