Models¶
All data models are Pydantic v2
BaseModel subclasses with full type annotations.
Enums¶
- class etoropy.models.enums.CandleInterval(value)[source]¶
Bases:
StrEnum- ONE_MINUTE = 'OneMinute'¶
- FIVE_MINUTES = 'FiveMinutes'¶
- TEN_MINUTES = 'TenMinutes'¶
- FIFTEEN_MINUTES = 'FifteenMinutes'¶
- THIRTY_MINUTES = 'ThirtyMinutes'¶
- ONE_HOUR = 'OneHour'¶
- FOUR_HOURS = 'FourHours'¶
- ONE_DAY = 'OneDay'¶
- ONE_WEEK = 'OneWeek'¶
- class etoropy.models.enums.CandleDirection(value)[source]¶
Bases:
StrEnum- ASC = 'asc'¶
- DESC = 'desc'¶
- class etoropy.models.enums.OrderStatusId(value)[source]¶
Bases:
IntEnum- PENDING = 1¶
- FILLING = 2¶
- EXECUTED = 3¶
- FAILED = 4¶
- CANCELLED = 5¶
- class etoropy.models.enums.OrderType(value)[source]¶
Bases:
IntEnum- MARKET = 1¶
- LIMIT = 2¶
- STOP = 3¶
Common¶
- class etoropy.models.common.PaginatedRequest(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.common.PaginatedResponse(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Market Data¶
- class etoropy.models.market_data.InstrumentSearchParams(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentSearchItem(**data)[source]¶
Bases:
BaseModelA single item from the
/market-data/searchendpoint.The search API reliably returns
instrument_idandinternal_symbol_full. Most other fields (displayname,exchange_id,symbol, etc.) are not populated by the API and will keep their default values. UseInstrumentDisplayData(viaget_instruments()) for full display metadata.- Parameters:
data (
Any)instrumentId (int)
symbol (str)
displayname (str)
instrumentTypeID (int)
exchangeID (int)
isOpen (bool)
isCurrentlyTradable (bool)
isBuyEnabled (bool)
isDelisted (bool)
isExchangeOpen (bool)
currentRate (float)
dailyPriceChange (float)
absDailyPriceChange (float)
weeklyPriceChange (float)
monthlyPriceChange (float)
threeMonthPriceChange (float)
sixMonthPriceChange (float)
oneYearPriceChange (float)
internalAssetClassId (int)
internalAssetClassName (str)
logo35x35 (str)
logo50x50 (str)
internalSymbolFull (str)
logo150x150 (str)
extra_data (Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentSearchResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
- items: list[InstrumentSearchItem]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentImage(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentDisplayData(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- images: list[InstrumentImage]¶
- class etoropy.models.market_data.InstrumentsResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)instrumentDisplayDatas (list[InstrumentDisplayData])
- instrument_display_datas: list[InstrumentDisplayData]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.GetInstrumentsParams(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentRate(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)instrumentID (int)
ask (float)
bid (float)
lastExecution (float)
conversionRateAsk (float)
conversionRateBid (float)
date (str)
unitMargin (float)
unitMarginAsk (float)
unitMarginBid (float)
priceRateID (int)
bidDiscounted (float)
askDiscounted (float)
unitMarginBidDiscounted (float)
unitMarginAskDiscounted (float)
extra_data (Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.LiveRatesResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)rates (list[InstrumentRate])
- rates: list[InstrumentRate]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.Candle(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.CandleGroup(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.CandlesResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)interval (str)
candles (list[CandleGroup])
- candles: list[CandleGroup]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.Exchange(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.ExchangesResponse(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentType(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.InstrumentTypesResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)instrumentTypes (list[InstrumentType])
- instrument_types: list[InstrumentType]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.StocksIndustry(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.StocksIndustriesResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)stocksIndustries (list[StocksIndustry])
- stocks_industries: list[StocksIndustry]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.ClosingPriceInterval(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.ClosingPriceIntervals(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)daily (ClosingPriceInterval)
weekly (ClosingPriceInterval)
monthly (ClosingPriceInterval)
- daily: ClosingPriceInterval¶
- weekly: ClosingPriceInterval¶
- monthly: ClosingPriceInterval¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.market_data.ClosingPrice(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- closing_prices: ClosingPriceIntervals¶
- class etoropy.models.market_data.ClosingPricesResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)closing_prices (list[ClosingPrice])
- closing_prices: list[ClosingPrice]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Trading¶
- class etoropy.models.trading.MarketOrderByAmountRequest(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.MarketOrderByUnitsRequest(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.LimitOrderRequest(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.ClosePositionRequest(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.OrderForOpen(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.OrderForOpenResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)orderForOpen (OrderForOpen)
token (str)
- order_for_open: OrderForOpen¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.OrderForCloseResponse(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.OrderPositionInfo(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.OrderForOpenInfoResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- positions: list[OrderPositionInfo]¶
- class etoropy.models.trading.Position(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)positionID (int)
CID (int)
openDateTime (str)
openRate (float)
instrumentID (int)
isBuy (bool)
leverage (int)
takeProfitRate (float)
stopLossRate (float)
mirrorID (int)
parentPositionID (int)
amount (float)
orderID (int)
orderType (int)
units (float)
totalFees (float)
initialAmountInDollars (float)
isTslEnabled (bool)
stopLossVersion (int)
isSettled (bool)
redeemStatusID (int)
initialUnits (float)
isPartiallyAltered (bool)
unitsBaseValueDollars (float)
isDiscounted (bool)
openPositionActionType (int)
settlementTypeID (int)
isDetached (bool)
openConversionRate (float)
pnlVersion (int)
totalExternalFees (float)
totalExternalTaxes (float)
isNoTakeProfit (bool)
isNoStopLoss (bool)
lotCount (float)
extra_data (Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.PendingOrder(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.Mirror(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)mirrorID (int)
CID (int)
parentCID (int)
stopLossPercentage (float)
isPaused (bool)
copyExistingPositions (bool)
availableAmount (float)
stopLossAmount (float)
initialInvestment (float)
depositSummary (float)
withdrawalSummary (float)
parentUsername (str)
closedPositionsNetProfit (float)
startedCopyDate (str)
pendingForClosure (bool)
mirrorStatusID (int)
ordersForOpen (list[PendingOrder])
extra_data (Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- orders_for_open: list[PendingOrder]¶
- class etoropy.models.trading.ClientPortfolio(**data)[source]¶
Bases:
BaseModel- Parameters:
- orders: list[PendingOrder]¶
- orders_for_open: list[PendingOrder]¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.PortfolioResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)clientPortfolio (ClientPortfolio)
- client_portfolio: ClientPortfolio¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.PnlResponse(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)clientPortfolio (ClientPortfolio)
- client_portfolio: ClientPortfolio¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.TradeHistoryParams(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.trading.TradeHistoryEntry(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)netProfit (float)
closeRate (float)
closeTimestamp (str)
positionId (int)
instrumentId (int)
isBuy (bool)
leverage (int)
openRate (float)
openTimestamp (str)
stopLossRate (float)
takeProfitRate (float)
trailingStopLoss (bool)
orderId (int)
socialTradeId (int)
parentPositionId (int)
investment (float)
initialInvestment (float)
fees (float)
units (float)
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Feeds & Social¶
- class etoropy.models.feeds.CreatePostRequest(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.FeedPost(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.FeedResponse(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.GetFeedParams(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.CreateCommentRequest(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.Comment(**data)[source]¶
Bases:
BaseModel- Parameters:
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.UserSearchParams(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.UserProfile(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.UserPerformance(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.UserPortfolio(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.CopierInfo(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.feeds.CuratedList(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
WebSocket Messages¶
- class etoropy.models.websocket.WsAuthenticateOperation(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsSubscribeOperation(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsUnsubscribeOperation(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsMessage(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsEnvelope(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsInstrumentRate(**data)[source]¶
Bases:
BaseModel- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class etoropy.models.websocket.WsPrivateEvent(**data)[source]¶
Bases:
BaseModel- Parameters:
data (
Any)OrderID (int)
OrderType (int)
StatusID (int)
InstrumentID (int)
CID (int)
RequestedUnits (float)
ExecutedUnits (float)
NetProfit (float)
CloseReason (str)
OpenDateTime (str)
RequestOccurred (str)
ErrorCode (int | None)
ErrorMessage (str | None)
PositionID (int | None)
Rate (float | None)
Amount (float | None)
IsBuy (bool | None)
Leverage (int | None)
extra_data (Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].