以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 关于python条件选股 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=184894) |
-- 作者:tan901002 -- 发布时间:2021/3/25 22:39:10 -- 关于python条件选股 # 该Python代码用于提供给Pel公式调用。 # 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。 # 如果Python计算量大则不建议在图表的Pel公式中调用,应该放在后台执行。 # 需要注意: # 1、Python引用模式下,仅支持 pel_history_bars,log_debug_info,settimer,killtimer # 这4个金字塔API函数的调用,其他的API均不可以使用(Python及库函数不影响)。 # 2、可以在PEL中传递所需要的数据,参考下面的范例和PEL范例。 from PythonApi import * # init函数会在PEL公式首次启用时被调用。 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。 def init(context): pass # Pel公式中调用FIREPYHANDLEBAR函数将触发该方法的调用 def handle_bar(context): # 开始编写你的主要的算法逻辑 def num_get_blocks(): #留下有效的上证股票代码 begin_date = \'20210201\' #计算的时间周期 end_date = \'20210226\' index_num = \'上海A股\' new_list = [] for i in get_blocks(index_num,0): close_star = pel_history_bars(i,begin_date,begin_date,\'1d\',\'close\') #把股票代码传到这个变量中获取区间第一天的收盘价 close_end = pel_history_bars(i,end_date,end_date,\'1d\',\'close\') ##把股票代码传到这个变量中获取区间最后一天的收盘价 if close_star and close_end: new_list.append(i) return new_list begin_date = \'20210201\' #计算的时间周期 end_date = \'20210226\' index_num = \'sh000001\' #上证指数 index_close = pel_history_bars(index_num,begin_date,end_date,\'1d\',\'close\') #得到上证指数的区间收盘价 num1 = (index_close[-1] - index_close[0])/ index_close[0] * 100 #计算上证指数的区间涨跌幅 index_num1 = round(float(num1),2) #保留计算结果的两位小数 context.num_blocks_list = [] for i in num_get_blocks(): #遍历留下的有效股票代码 close_star = pel_history_bars(i,begin_date,begin_date,\'1d\',\'close\') #计算开始的时间收盘价 close_end = pel_history_bars(i,end_date,end_date,\'1d\',\'close\') #计算结束时间收盘价 ret1 = (close_end - close_star)/close_star * 100 #计算有效列表的区间涨跌幅 ret = (round(float(ret1),2)) #个股涨跌幅保留两位小数点 if ret > index_num1: num_blocks_list.append(i) context.num_blocks_list = num_blocks_list else: pass #调取收盘价数据,这里的CallMe是主图K线数据,方便不同品种使用,提高运行效率 #close = pel_history_bars(context.long_period+1 ,\'close\') #调试打印输出 # log_debug_info(\'d:\\pel_test_log.txt\',str(close)) #计算2根均线,返回值放在context对象中。 #context.ma5 = close[-context.short_period:].sum() / context.short_period #context.ma10 = close[-context.long_period:].sum() / context.long_period pass # exit函数会在公式结束时被调用,整个过程只会被调用一次 def exit(context): pass 以上是我在python中的代码~ //引用Python代码模块 "PelMaDemo", 需要注意大小写敏感 Py_Import xdqd; FIREPYHANDLEBAR; MM:GETPYTHONVAL(\'num_blocks_list\'); 这个是我在条件选股公式中写的代码~~~ 我写的这个代码为什么在条件选股中没有选到股票呢? 求大神帮助,帮忙看看我错在哪里了,万分感谢!!! 以上代码主要的目的是想选出某段时间走的比大盘好的个股~ |
-- 作者:yukizzc -- 发布时间:2021/3/26 9:07:52 -- 返回值不能是list这种类型的,只能是单值数值类型 pel本身不是专门计算机语言,大部分我们处理的都是单数字这种 [此贴子已经被作者于2021/3/26 9:09:08编辑过]
|