diff --git a/ZfAbsMean.py b/ZfAbsMean.py new file mode 100644 index 0000000000000000000000000000000000000000..77b654bc45a3f2d71adcf2522704db9ed612445a --- /dev/null +++ b/ZfAbsMean.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +""" +中性策略框架 | 邢不行 | 2024分享会 +author: 邢不行 +微信: xbx6660 +""" +import numpy as np + +""" +波动因子 +""" +def signal(*args): + df = args[0] + n = args[1] + factor_name = args[2] + + df['均价'] = (df['close'] + df['high'] + df['low']) / 3 + + df['涨跌幅'] = df['均价'].pct_change() + df['振幅'] = (df['high'] - df['low']) / df['open'] + df['振幅'] = np.where(df['涨跌幅'] > 0, df['振幅'], 0) + df['振幅均值'] = df['振幅'].rolling(n, min_periods=1).mean() + + df[factor_name] = df['振幅均值'].rolling(n, min_periods=1).rank(ascending=True, pct=True) + + return df diff --git a/faster/.keep b/faster/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/faster/Shift_ILLQStd.py b/faster/Shift_ILLQStd.py new file mode 100644 index 0000000000000000000000000000000000000000..4b91dfa239b95f966de0fb43da05741d6ca85359 --- /dev/null +++ b/faster/Shift_ILLQStd.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" +轮动策略框架 | 邢不行 | 2024分享会 +author: 邢不行 +微信: xbx6660 +""" +import os +import program.Config as Cfg +import program.Functions as Func + +# 取出策略文件名中_后的部分 +stg_name = os.path.basename(__file__).split('.')[0].split('_')[1] + +# 配置子策略文件 +# key为子策略文件名,value为一个列表,可以从 多空资金曲线、多头资金曲线、空头资金曲线 选择N个 +# 各个Strategy之间需要保证 hold_period和offset 保持一致 +base_strategy_dict = { + # 'Strategy_QuoteVolumeMean': ['多空资金曲线', '多头资金曲线'], + 'Strategy_ILLQStd': ['多空资金曲线', '多头资金曲线'], +} + +# 因子信息列表 +factor_list = [('MaBias', False, 168, 1)] # 指定因子列表,可以配置多因子,和选币时的用法一致 + +# 选策略的数量 +select_num = 1 # 指定选择策略的数量;指定的数量大于1时,不会生成第二张资金曲线图 + +# 获取指定策略的hold_period、offset和资金曲线文件equity_file +hold_period, offset, if_use_spots, all_equity_file = Func.get_equity_path(base_strategy_dict, Cfg.base_config_path) diff --git a/faster/ttt/.keep b/faster/ttt/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/faster/ttt/BbiBiasTradeNumStd.py b/faster/ttt/BbiBiasTradeNumStd.py new file mode 100644 index 0000000000000000000000000000000000000000..b7b5beb9ce8cf8d762af857dc036ea61d392ba9c --- /dev/null +++ b/faster/ttt/BbiBiasTradeNumStd.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +""" +中性策略框架 | 邢不行 | 2024分享会 +author: 邢不行 +微信: xbx6660 +""" + + +def signal(*args): + df = args[0] + n = args[1] + factor_name = args[2] + + ma1 = df['close'].rolling(n, min_periods=1).mean() + ma2 = df['close'].rolling(2 * n, min_periods=1).mean() + ma3 = df['close'].rolling(4 * n, min_periods=1).mean() + ma4 = df['close'].rolling(8 * n, min_periods=1).mean() + df['bbi'] = (ma1 + ma2 + ma3 + ma4) / 4 + df['bbi_bias'] = df['close'] / df['bbi'] + + df['振幅'] = (df['high'] - df['low']) / df['open'] + df['factor'] = df['trade_num'] / df['振幅'] + df[factor_name] = df['factor'].rolling(n, min_periods=1).std() * df['bbi_bias'] + + return df