in backtesting, ensure we don't buy before we sell

This commit is contained in:
qbi 2017-11-24 09:22:02 +01:00
parent 82913cd3f4
commit e3c6b7c16e

View File

@ -100,7 +100,10 @@ def backtest(config: Dict, processed, mocker, max_open_trades=0):
pair_data['buy'], pair_data['sell'] = 0, 0 pair_data['buy'], pair_data['sell'] = 0, 0
ticker = populate_sell_trend(populate_buy_trend(pair_data)) ticker = populate_sell_trend(populate_buy_trend(pair_data))
# for each buy point # for each buy point
lock_pair_until = None
for row in ticker[ticker.buy == 1].itertuples(index=True): for row in ticker[ticker.buy == 1].itertuples(index=True):
if lock_pair_until is not None and row.Index <= lock_pair_until:
continue
if max_open_trades > 0: if max_open_trades > 0:
# Check if max_open_trades has already been reached for the given date # Check if max_open_trades has already been reached for the given date
if not trade_count_lock.get(row.date, 0) < max_open_trades: if not trade_count_lock.get(row.date, 0) < max_open_trades:
@ -125,6 +128,7 @@ def backtest(config: Dict, processed, mocker, max_open_trades=0):
if min_roi_reached(trade, row2.close, row2.date) or row2.sell == 1: if min_roi_reached(trade, row2.close, row2.date) or row2.sell == 1:
current_profit = trade.calc_profit(row2.close) current_profit = trade.calc_profit(row2.close)
lock_pair_until = row2.Index
trades.append((pair, current_profit, row2.Index - row.Index)) trades.append((pair, current_profit, row2.Index - row.Index))
break break