elif after:
self.processor.process(action, steps="after")
except Exception as e:
- self.report.log_error("market_process", exception=e)
+ import traceback
+ self.report.log_error("market_process", exception=e, message=traceback.format_exc())
finally:
self.store_report()
if status == "error_disappeared":
self.report.log_error("follow_orders",
message="{} disappeared, recreating it".format(order))
- order.trade.prepare_order(
+ new_order = order.trade.prepare_order(
compute_value=order.trade.tick_actions_recreate(tick))
+ new_order.run()
+ self.report.log_order(order, tick, new_order=new_order)
self.report.log_stage("follow_orders_end")
{
"name": "print_balances",
"number": 1,
- "fetch_balances": ["begin"],
- "fetch_balances_args": { "add_portfolio": True },
+ "fetch_balances_begin": {
+ "log_tickers": True,
+ "add_usdt": True,
+ "add_portfolio": True
+ },
"print_tickers": { "base_currency": "BTC" },
}
],
"number": 2,
"before": False,
"after": True,
- "fetch_balances": ["begin"],
+ "fetch_balances_begin": {},
"prepare_trades": { "compute_value": "average" },
"prepare_orders": { "compute_value": "average" },
},
],
"sell_needed": [
{
- "name": "wait",
+ "name": "print_balances",
"number": 0,
+ "before": True,
+ "after": False,
+ "fetch_balances_begin": {
+ "checkpoint": "end",
+ "log_tickers": True,
+ "add_usdt": True,
+ "add_portfolio": True
+ },
+ },
+ {
+ "name": "wait",
+ "number": 1,
"before": False,
"after": True,
"wait_for_recent": {},
},
{
"name": "sell",
- "number": 1,
+ "number": 2,
"before": False,
"after": True,
- "fetch_balances": ["begin", "end"],
+ "fetch_balances_begin": {},
+ "fetch_balances_end": {},
"prepare_trades": {},
"prepare_orders": { "only": "dispose", "compute_value": "average" },
"run_orders": {},
},
{
"name": "buy",
- "number": 2,
+ "number": 3,
"before": False,
"after": True,
- "fetch_balances": ["begin", "end"],
+ "fetch_balances_begin": {},
+ "fetch_balances_end": {
+ "checkpoint": "begin",
+ "add_usdt": True,
+ "log_tickers": True
+ },
"prepare_trades": { "only": "acquire", "available_balance_only": True },
"prepare_orders": { "only": "acquire", "compute_value": "average" },
"move_balances": {},
"number": 1,
"before": True,
"after": False,
- "fetch_balances": ["begin", "end"],
+ "fetch_balances_begin": {
+ "checkpoint": "end",
+ "log_tickers": True,
+ "add_usdt": True,
+ "add_portfolio": True
+ },
+ "fetch_balances_end": {},
"prepare_trades": { "repartition": { "base_currency": (1, "long") } },
"prepare_orders": { "compute_value": "average" },
"run_orders": {},
"number": 3,
"before": False,
"after": True,
- "fetch_balances": ["begin", "end"],
+ "fetch_balances_begin": {},
+ "fetch_balances_end": {
+ "checkpoint": "begin",
+ "add_usdt": True,
+ "log_tickers": True
+ },
"prepare_trades": { "available_balance_only": True },
"prepare_orders": { "compute_value": "average" },
"move_balances": {},
process_name = "process_{}__{}_{}".format(scenario_name, step["number"], step["name"])
self.market.report.log_stage("{}_begin".format(process_name))
- fetch_args = step.get("fetch_balances_args", {})
- if "begin" in step.get("fetch_balances", []):
+ if "fetch_balances_begin" in step:
self.market.balances.fetch_balances(tag="{}_begin".format(process_name),
- log_tickers=True, **fetch_args)
+ **step["fetch_balances_begin"])
for action in self.ordered_actions:
if action in step:
self.run_action(action, step[action], kwargs)
- if "end" in step.get("fetch_balances", []):
+ if "fetch_balances_end" in step:
self.market.balances.fetch_balances(tag="{}_end".format(process_name),
- log_tickers=True, **fetch_args)
+ **step["fetch_balances_end"])
+
self.market.report.log_stage("{}_end".format(process_name))
def method_arguments(self, action):