我正在尝试使用python构建一个简单的回测器,该回测器通过在一定时间内比较2个值来工作,例如(在时间x检查indicator_value> ohlc_value:order_type = 1;否则订单类型将为0) / p>
data = {'time':[0, 1, 2, 3, 4, 5], 'ohlc':[1.1, 1.2, 1.3, 1.4, 1.5,1.66], 'indicator':[1.05, 1.22, 1.4, 1.55, 1.6,1.77]}
df = pd.DataFrame(data)
如何设置这些值?
if data['ohlc'] > data['indicator']:
data['order_type'] = 1
else:
data['order_type'] = 0
我知道我不能像这样循环数据帧。
答案 0 :(得分:1)
您在这里:
df['order_type'] = (df['ohlc'] > df['indicator']).astype(int)
print(df)
输出:
time ohlc indicator order_type
0 0 1.10 1.05 1
1 1 1.20 1.22 0
2 2 1.30 1.40 0
3 3 1.40 1.55 0
4 4 1.50 1.60 0
5 5 1.66 1.77 0
如果您要根据不同的条件分配自定义值,则可以采用以下一种方法(默认值为0
)
import numpy as np
conditions = [df['ohlc'] > df['indicator']]
choices = [-1]
df['order_type'] = np.select(conditions, choices)
print(df)
输出:
time ohlc indicator order_type
0 0 1.10 1.05 -1
1 1 1.20 1.22 0
2 2 1.30 1.40 0
3 3 1.40 1.55 0
4 4 1.50 1.60 0
5 5 1.66 1.77 0
答案 1 :(得分:0)
您也可以尝试
def fun(row):
return 1 if row['ohlc']>row['indicator'] else 0
df['order_type']=df.apply(fun,axis=1)
df