我正在构建一个交易机器人,该机器人查看价格的df并根据相对于边界的价格进行买卖,通过或传递。每笔交易都会使用所有可用的资金,因此另一个限制是您必须拥有银行中的股票才能执行销售,反之亦然。最后,我想在发生交易时将相关的交易详细信息添加到日志中。这很直观,但是有没有更有效的方法呢?特别是我要努力跟踪两家银行并在交易后更新它们,因此以后的交易仅在我们使用正确的面额时才发生(假设df按日期升序排序)。这是正常但缓慢的迭代版本的代码段。
stock_bank = 1000
usd_bank = 0
trade_log = pd.DataFrame()
prices = pd.DataFrame({'buy_price': [9, 11, 12, 13, 12],
'sell_price': [10, 10, 11, 12, 12],
'lower_bound': [10, 11, 11, 10, 9],
'upper_bound': [12, 13, 13, 12, 11]})
for (i, row) in prices.iterrows():
# Sell stock if own stock and sell price above upper bound
if row['sell_price'] > row['upper_bound'] and stock_bank != 0:
usd_bank = stock_bank * (row['sell_price'])
stock_bank = 0
# trade_entry = (relevant trade details)
# trade_log = trades.append(trade_entry)
# Repeat for Buys
# Buy stock if have USD and buy price below lower bound
# etc
答案 0 :(得分:0)
我建议使用$data = array_merge(
$request->except(['_token','files','outcomes','requirements']),
$images
);
$id = auth()->user()->course()->create($data)->id;
函数,该函数通常非常快,尤其是在条件和操作不是很复杂的情况下。对于您的示例,它看起来像这样:
[numpy.where()][1]
在那之后,很容易直接将列的总和求和,然后检查是否有任何值大于0来将stock_bank设置为0。