UniswapV3RoutingState#
API documentation for tradeexecutor.ethereum.uniswap_v3.uniswap_v3_routing.UniswapV3RoutingState Python class in Trading Strategy framework.
- class UniswapV3RoutingState[source]#
Bases:
EthereumRoutingState
- __init__(pair_universe, tx_builder=None, swap_gas_limit=2000000)[source]#
- Parameters:
pair_universe (PandasPairUniverse) – Pairs we trade
tx_builder (Optional[HotWalletTransactionBuilder]) –
For creating trade transactions.
Can be set to None on DummyExecutionModel.
web3 –
Use for routing smart contract reads.
Given when tx_builder is not present.
swap_gas_limit – What is the max gas we are willing to pay for a swap.
Methods
__init__
(pair_universe[, tx_builder, ...])- param pair_universe:
adjust_spend
(asset, required_amount[, ...])Check that our on-chain balances have enough tokens to cover the trade.
check_has_enough_tokens
(erc_20, amount)Check we have enough buy side tokens to do a trade.
create_signed_transaction
(contract, ...[, notes])ensure_token_approved
(token_address, ...[, ...])Make sure we have ERC-20 approve() for the trade
get_uniswap_for_pair
(address_map, target_pair)Get a router for a trading pair.
is_approved_on_chain
(token_address, ...)is_route_approved
(router_address)mark_router_approved
(token_address, ...)trade_on_router_three_way
(uniswap, ...[, ...])Prepare the actual swap for three way trade.
trade_on_router_two_way
(uniswap, ...[, ...])Prepare the actual swap.
validate_exchange
(target_pair, intermediary_pair)Check routing happens on the same exchange
validate_pairs
(target_pair, intermediary_pair)Check we can chain two pairs
Attributes
- __init__(pair_universe, tx_builder=None, swap_gas_limit=2000000)[source]#
- Parameters:
pair_universe (PandasPairUniverse) – Pairs we trade
tx_builder (Optional[HotWalletTransactionBuilder]) –
For creating trade transactions.
Can be set to None on DummyExecutionModel.
web3 –
Use for routing smart contract reads.
Given when tx_builder is not present.
swap_gas_limit – What is the max gas we are willing to pay for a swap.
- get_uniswap_for_pair(address_map, target_pair)[source]#
Get a router for a trading pair.
- Parameters:
address_map (dict) –
target_pair (TradingPairIdentifier) –
- Return type:
- trade_on_router_two_way(uniswap, target_pair, reserve_asset, reserve_amount, max_slippage, check_balances, asset_deltas=None, notes='')[source]#
Prepare the actual swap. Same for Uniswap V2 and V3.
- Parameters:
check_balances (False) – Check on-chain balances that the account has enough tokens and raise exception if not.
uniswap (UniswapV3Deployment) –
target_pair (TradingPairIdentifier) –
reserve_asset (AssetIdentifier) –
reserve_amount (int) –
max_slippage (float) –
asset_deltas (Optional[List[AssetDelta]]) –
- trade_on_router_three_way(uniswap, target_pair, intermediary_pair, reserve_asset, reserve_amount, max_slippage, check_balances, asset_deltas=None, notes='')[source]#
Prepare the actual swap for three way trade.
- Parameters:
check_balances (False) – Check on-chain balances that the account has enough tokens and raise exception if not.
uniswap (UniswapV3Deployment) –
target_pair (TradingPairIdentifier) –
intermediary_pair (TradingPairIdentifier) –
reserve_asset (AssetIdentifier) –
reserve_amount (int) –
max_slippage (float) –
asset_deltas (Optional[List[AssetDelta]]) –