现在,我正在手动模拟通过运行我的数据和包含交易费用的模拟交易,我将获得多少利润。我想知道有没有一种数学上等价的方法来计算利润
前
def get_profit(peak_indexes, valley_indexes, trade_penalty):
usdt, btc = 1, 0
first_usdt, last_usdt = None, usdt
holding = False
trades = 0
for idx, kline in enumerate(df['Close'].values):
if idx in peak_indexes and holding:
usdt = (btc * df['Close'].values[idx]) * (1 - trade_penalty)
last_usdt = usdt
if first_usdt is None:
first_usdt = usdt
btc = 0
holding = False
trades += 1
elif idx in valley_indexes and not holding:
btc = (usdt / df['Close'].values[idx]) * (1 - trade_penalty)
usdt = 0
holding = True
market_chg = last_usdt / first_usdt - 1
risk_free = last_usdt - 1
prof = risk_free - market_chg
return prof
需要注意的一件事是,我不一定关心复利,但我确实想要考虑交易数量的东西。例如,3笔交易各占5%比2笔交易各占5%要好。我想我想要一个交易的平均回报减去风险乘以交易数量的值。这是不是像这样简单:
avg_sell = np.mean(np.take(close_prices, peak_indexes))
avg_buy = np.mean(np.take(close_prices, valley_indexes))
avg_profit = avg_sell / avg_buy - 1
avg_profit -= trade_penalty
num_trades = min(len(peak_indexes), len(valley_indexes))
overall_profit = avg_profit * num_trades
这是我需要它做的,还是我需要迭代我的数据
目前没有回答
相关问题 更多 >
编程相关推荐