mirror of
https://github.com/Ichinga-Samuel/aiomql.git
synced 2026-08-20 07:18:08 +00:00
v4
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# noinspection PyTestUnpassedFixture
|
||||
async def test_deals_manager(backtest_engine, sell_order, buy_order, period, positions):
|
||||
backtest_engine.reset(clear_data=True)
|
||||
await backtest_engine.setup_account(balance=100)
|
||||
backtest_engine.fast_forward(steps=100)
|
||||
await backtest_engine.order_send(request=sell_order)
|
||||
bo = await backtest_engine.order_send(request=buy_order)
|
||||
start = period['start']
|
||||
end = period['end']
|
||||
all_deals = backtest_engine.deals.get_deals_range(date_from=start, date_to=end)
|
||||
assert len(all_deals) == 2
|
||||
backtest_engine.fast_forward(steps=10_000)
|
||||
start2 = backtest_engine.cursor.time
|
||||
bo2 = await backtest_engine.order_send(request=buy_order)
|
||||
backtest_engine.fast_forward(steps=50)
|
||||
end2 = backtest_engine.cursor.time
|
||||
deals = backtest_engine.deals.history_deals_get(date_from=start2, date_to=end2)
|
||||
assert len(deals) == 1
|
||||
assert deals[0].order == bo2.order
|
||||
await positions.close_position_by_ticket(ticket=bo.order)
|
||||
deals = backtest_engine.deals.history_deals_get(position=bo.order)
|
||||
assert len(deals) <= 2
|
||||
orders = backtest_engine.deals.get_deals_range(date_from=start, date_to=end)
|
||||
assert len(orders) == backtest_engine.deals.history_deals_total(date_from=start, date_to=end) == len(backtest_engine.deals._data.keys())
|
||||
@@ -0,0 +1,24 @@
|
||||
# noinspection PyTestUnpassedFixture
|
||||
async def test_orders_manager(backtest_engine, sell_order, buy_order, period, positions):
|
||||
backtest_engine.reset(clear_data=True)
|
||||
await backtest_engine.setup_account(balance=100)
|
||||
backtest_engine.fast_forward(steps=100)
|
||||
await backtest_engine.order_send(request=sell_order)
|
||||
bo = await backtest_engine.order_send(request=buy_order)
|
||||
start = period['start']
|
||||
end = period['end']
|
||||
all_orders = backtest_engine.orders.get_orders_range(date_from=start, date_to=end)
|
||||
assert len(all_orders) == 2
|
||||
backtest_engine.fast_forward(steps=10_000)
|
||||
start2 = backtest_engine.cursor.time
|
||||
bo2 = await backtest_engine.order_send(request=buy_order)
|
||||
backtest_engine.fast_forward(steps=50)
|
||||
end2 = backtest_engine.cursor.time
|
||||
orders = backtest_engine.orders.history_orders_get(date_from=start2, date_to=end2)
|
||||
assert len(orders) == 1
|
||||
assert orders[0].ticket == bo2.order
|
||||
await positions.close_position_by_ticket(ticket=bo.order)
|
||||
orders = backtest_engine.orders.history_orders_get(position=bo.order)
|
||||
assert len(orders) <= 2
|
||||
orders = backtest_engine.orders.get_orders_range(date_from=start, date_to=end)
|
||||
assert len(orders) == backtest_engine.orders.history_orders_total(date_from=start, date_to=end) == len(backtest_engine.orders._data.keys())
|
||||
@@ -0,0 +1,17 @@
|
||||
# noinspection PyTestUnpassedFixture
|
||||
async def test_positions_manager(backtest_engine, sell_order, buy_order):
|
||||
backtest_engine.reset(clear_data=True)
|
||||
await backtest_engine.setup_account(balance=100)
|
||||
backtest_engine.fast_forward(steps=100)
|
||||
so = await backtest_engine.order_send(request=sell_order)
|
||||
bo = await backtest_engine.order_send(request=buy_order)
|
||||
all_pos = backtest_engine.positions.positions_get()
|
||||
assert len(all_pos) == 2
|
||||
so_positions = backtest_engine.positions.positions_get(ticket=so.order)
|
||||
so_position = so_positions[0]
|
||||
assert so_position.ticket == so.order
|
||||
btc_positions = backtest_engine.positions.positions_get(symbol='BTCUSD')
|
||||
assert len(btc_positions) == 2
|
||||
assert backtest_engine.positions.positions_total() == 2
|
||||
backtest_engine.positions.close(ticket=bo.order)
|
||||
assert backtest_engine.positions.positions_total() == 1
|
||||
Reference in New Issue
Block a user