⼤智慧、通达信winner函数python代码实现
⼤智慧、通达信软件,公式中有⼀个winner函数,函数的作⽤是计算收盘获利⽐率。即计算按照⽬前收盘价,计算有多少⽐例持仓是盈利
的。要计算获利⽐率,⾸先得计算筹码分布,就是持仓价格分布。由于⽆法知道真实的交易情况,只能⼤致的估计。⾸先举个例⼦,假如某
只股票有1000万股,第⼀天平均交易价格10元,第⼆天换⼿率20%,平均交易价格11元,那第⼆天的筹码分布为,10元:1000 * (1 -
0.2)=800万,11元:1000 * 0.2 = 200万。第三天换⼿率30%,平均交易价格12元,那第三天的筹码分布为,10元:1000 * (1 -
0.2)* (1 - 0.3)= 560万,11元:1000 * 0.2 * (1 - 0.3) = 140万,12元:1000 * 0.3 = 300万,以此类推。代码如下:
def winner_core(ContextInfo, close):
close_price = close[-1]
#获取上市⽇期
#ipo_date = _open__universe()[0])
df = _market_data(['volume', 'amount'], stock_code = _universe(), skip_paused = True, period = '1d', dividend_type = 'front', end_t  df = df.loc[df['volume'] != 0]
df['mean'] = df['amount'] / df['volume'] / 100
turnover_rate = _turnover__universe(), df.index[0], df.index[-1])
df['turnover'] = turnover_rate['000001.SZ'].values
df['turnover'][0] = 0
python新手代码例子#1减去换⼿率
df['1_turnover'] = 1 - df['turnover']
df['2_turnover'] = df['1_turnover'][::-1].values
df['3_turnover'] = df['2_turnover'].shift(periods = 1)
df['3_turnover'][0] = 1
#print(df[['1_turnover', '2_turnover', '3_turnover']])
df['4_turnover'] = df['3_turnover'].cumprod()[::-1].values
df['turnover'][0] = 1
df['chouma'] = df['turnover'] * df['4_turnover']
return df.loc[df['mean'] < close_price]['chouma'].sum()
def winner(ContextInfo, close):
result = []
n = len(close)
for i in range(n):
res = winner_core(ContextInfo, close[: i + 1])
result.append(res)
return pd.Series(result, index = close.index)
以上是000001计算出来的收盘获利⽐率,跟同花顺对⽐,还是很相近的。
注意:以上计算都是估算值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。