from aiomql.lib.symbol import Symbol import pytest @pytest.fixture(scope="function") def btc_usd(): return Symbol(name="BTCUSD") @pytest.fixture(scope="function") async def buy_order(btc_usd): sym = btc_usd sym_info = await sym.mt5.symbol_info(sym.name) dsl = (sym_info.trade_stops_level + sym_info.spread) * 2 * sym_info.point sl = sym_info.ask - dsl tp = sym_info.ask + dsl return { "action": sym.mt5.TRADE_ACTION_DEAL, "symbol": sym.name, "volume": sym_info.volume_min, "type": sym.mt5.ORDER_TYPE_BUY, "price": sym_info.ask, "sl": sl, "tp": tp, } @pytest.fixture(scope="function") async def sell_order(btc_usd): sym = btc_usd sym_info = await sym.mt5.symbol_info(sym.name) return { "action": sym.mt5.TRADE_ACTION_DEAL, "symbol": sym.name, "volume": sym_info.volume_min, "type": sym.mt5.ORDER_TYPE_SELL, "price": sym_info.bid, } @pytest.fixture(scope="class") async def make_buy_sell_orders(): sym = Symbol(name="BTCUSD") sym_info = await sym.mt5.symbol_info(sym.name) dsl = (sym_info.trade_stops_level + sym_info.spread) * 2 * sym_info.point sl = sym_info.ask - dsl tp = sym_info.ask + dsl req = { "action": sym.mt5.TRADE_ACTION_DEAL, "symbol": sym.name, "volume": sym_info.volume_min, "type": sym.mt5.ORDER_TYPE_BUY, "price": sym_info.ask, "sl": sl, "tp": tp, } await sym.mt5.order_send(req) req["type"] = sym.mt5.ORDER_TYPE_SELL req["price"] = sym_info.bid req["sl"] = sym_info.bid + dsl req["tp"] = sym_info.bid - dsl await sym.mt5.order_send(req)