UniswapV3ExecutionModel#
tradeexecutor.ethereum.uniswap_v3.uniswap_v3_execution.UniswapV3ExecutionModel Python class in Trading Strategy framework.
- class UniswapV3ExecutionModel[source]#
Bases:
EthereumExecutionModel
Run order execution on a single Uniswap v3 style exchanges.
- __init__(tx_builder, min_balance_threshold=Decimal('0.5'), confirmation_block_count=6, confirmation_timeout=datetime.timedelta(seconds=300), max_slippage=0.01, stop_on_execution_failure=True, swap_gas_fee_limit=2000000, mainnet_fork=False)[source]#
- Parameters:
tx_builder (TransactionBuilder) – Hot wallet instance used for this execution
min_balance_threshold – Abort execution if our hot wallet gas fee balance drops below this
confirmation_block_count – How many blocks to wait for the receipt confirmations to mitigate unstable chain tip issues
confirmation_timeout – How long we wait transactions to clear
stop_on_execution_failure – Raise an exception if any of the trades fail top execute
max_slippage (float) – Max slippage tolerance per trade. 0.01 is 1%.
Methods
__init__
(tx_builder[, ...])- param tx_builder:
analyse_trade_by_receipt
(web3, uniswap, tx, ...)Links to either uniswap v2 or v3 implementation in eth_defi
broadcast_and_resolve
(state, trades[, ...])Do the live trade execution.
execute_trades
(ts, state, trades, ...[, ...])Execute the trades determined by the algo on a designed Uniswap v2 instance.
get_routing_state_details
()Get needed details to establish a routing state.
initialize
()Set up the wallet
is_live_trading
()is_stop_loss_supported
()Do we support stop-loss/take profit functionality with this execution model?
is_v3
()Returns true if instance is related to Uniswap V3, else false.
mock_partial_deployment_for_analysis
(web3, ...)Links to either uniswap v2 or v3 implementation in eth_defi
pre_execute_assertions
(ts, routing_model, ...)preflight_check
()Check that we can connect to the web3 node
repair_unconfirmed_trades
(state)Repair unconfirmed trades.
resolve_trades
(ts, state, tx_map, receipts)Resolve trade outcome.
update_confirmation_status
(ts, tx_map, receipts)First update the state of all transactions, as we now have receipt for them.
Attributes
chain_id
Which chain the live execution is connected to.
web3
- __init__(tx_builder, min_balance_threshold=Decimal('0.5'), confirmation_block_count=6, confirmation_timeout=datetime.timedelta(seconds=300), max_slippage=0.01, stop_on_execution_failure=True, swap_gas_fee_limit=2000000, mainnet_fork=False)[source]#
- Parameters:
tx_builder (TransactionBuilder) – Hot wallet instance used for this execution
min_balance_threshold – Abort execution if our hot wallet gas fee balance drops below this
confirmation_block_count – How many blocks to wait for the receipt confirmations to mitigate unstable chain tip issues
confirmation_timeout – How long we wait transactions to clear
stop_on_execution_failure – Raise an exception if any of the trades fail top execute
max_slippage (float) – Max slippage tolerance per trade. 0.01 is 1%.
- analyse_trade_by_receipt(web3, uniswap, tx, tx_hash, tx_receipt, input_args)[source]#
Links to either uniswap v2 or v3 implementation in eth_defi
- Parameters:
web3 (Web3) –
uniswap (UniswapV3Deployment) –
tx (dict) –
tx_hash (str) –
tx_receipt (dict) –
input_args (tuple) –
- Return type:
eth_defi.trade.TradeSuccess | eth_defi.trade.TradeFail