This commit is contained in:
Ichinga Samuel
2024-10-28 06:36:10 +01:00
parent 06061ec917
commit 780d664741
90 changed files with 2230 additions and 636 deletions
+24
View File
@@ -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())
+24
View File
@@ -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