# 该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');
这个是我在条件选股公式中写的代码~~~
我写的这个代码为什么在条件选股中没有选到股票呢?
求大神帮助,帮忙看看我错在哪里了,万分感谢!!!
以上代码主要的目的是想选出某段时间走的比大盘好的个股~
返回值不能是list这种类型的,只能是单值数值类型
pel本身不是专门计算机语言,大部分我们处理的都是单数字这种
[此贴子已经被作者于2021/3/26 9:09:08编辑过]