Source code for tradeexecutor.strategy.chart.standard.single_pair

"""Single trading pair analysis."""
import pandas as pd

from tradeexecutor.strategy.chart.definition import ChartInput
from tradeexecutor.visual.single_pair import visualise_single_pair_positions_with_duration_and_slippage, display_positions_table

from plotly.graph_objects import Figure


[docs]def trading_pair_price_and_trades( input: ChartInput, ) -> Figure: """Chart of a trades on a single trading pair. - Takes trading pair as an input :return: Figure visualising price and trades """ state = input.state strategy_universe = input.strategy_universe assert input.pairs and len(input.pairs) == 1, "This chart only supports a single trading pair." pair = input.pairs[0] all_trades = [t for t in state.portfolio.get_all_trades() if t.pair == pair] print(f"We have total {len(all_trades)} trades on {pair}") start = None end = None figure = visualise_single_pair_positions_with_duration_and_slippage( state=state, candles=strategy_universe.data_universe.candles.get_candles_by_pair(pair.internal_id), pair_id=pair.internal_id, execution_context=input.execution_context, title=f"Positions on {pair}", start_at=start, end_at=end, ) return figure
[docs]def trading_pair_positions( input: ChartInput, ) -> pd.DataFrame: """Get a list of positions of a single trading pair. - Takes trading pair as an input :return: Human readable table """ state = input.state strategy_universe = input.strategy_universe assert input.pairs and len(input.pairs) == 1, "This chart only supports a single trading pair." pair = input.pairs[0] df = display_positions_table(state, pair, sort_by="PnL USD", ascending=True) return df