oanda-v20-openapi 0.2.1

The full OANDA v20 API Specification. This specification defines how to interact with v20 Accounts, Trades, Orders, Pricing and more.
Documentation
/*
 * OANDA v20 API
 *
 * The full OANDA v20 API Specification. This specification defines how to interact with v20 Accounts, Trades, Orders, Pricing and more.
 *
 * The version of the OpenAPI document: 0.2.1
 * Contact: jmicoud02@gmail.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// OrderCancelReason : The reason that the Order was cancelled.
/// The reason that the Order was cancelled.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OrderCancelReason {
    #[serde(rename = "INTERNAL_SERVER_ERROR")]
    InternalServerError,
    #[serde(rename = "ACCOUNT_LOCKED")]
    AccountLocked,
    #[serde(rename = "ACCOUNT_NEW_POSITIONS_LOCKED")]
    AccountNewPositionsLocked,
    #[serde(rename = "ACCOUNT_ORDER_CREATION_LOCKED")]
    AccountOrderCreationLocked,
    #[serde(rename = "ACCOUNT_ORDER_FILL_LOCKED")]
    AccountOrderFillLocked,
    #[serde(rename = "CLIENT_REQUEST")]
    ClientRequest,
    #[serde(rename = "MIGRATION")]
    Migration,
    #[serde(rename = "MARKET_HALTED")]
    MarketHalted,
    #[serde(rename = "LINKED_TRADE_CLOSED")]
    LinkedTradeClosed,
    #[serde(rename = "TIME_IN_FORCE_EXPIRED")]
    TimeInForceExpired,
    #[serde(rename = "INSUFFICIENT_MARGIN")]
    InsufficientMargin,
    #[serde(rename = "FIFO_VIOLATION")]
    FifoViolation,
    #[serde(rename = "BOUNDS_VIOLATION")]
    BoundsViolation,
    #[serde(rename = "CLIENT_REQUEST_REPLACED")]
    ClientRequestReplaced,
    #[serde(rename = "INSUFFICIENT_LIQUIDITY")]
    InsufficientLiquidity,
    #[serde(rename = "TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
    TakeProfitOnFillGtdTimestampInPast,
    #[serde(rename = "TAKE_PROFIT_ON_FILL_LOSS")]
    TakeProfitOnFillLoss,
    #[serde(rename = "LOSING_TAKE_PROFIT")]
    LosingTakeProfit,
    #[serde(rename = "STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
    StopLossOnFillGtdTimestampInPast,
    #[serde(rename = "STOP_LOSS_ON_FILL_LOSS")]
    StopLossOnFillLoss,
    #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED")]
    StopLossOnFillPriceDistanceMaximumExceeded,
    #[serde(rename = "STOP_LOSS_ON_FILL_REQUIRED")]
    StopLossOnFillRequired,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_REQUIRED")]
    StopLossOnFillGuaranteedRequired,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_NOT_ALLOWED")]
    StopLossOnFillGuaranteedNotAllowed,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_MINIMUM_DISTANCE_NOT_MET")]
    StopLossOnFillGuaranteedMinimumDistanceNotMet,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED")]
    StopLossOnFillGuaranteedLevelRestrictionExceeded,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_HEDGING_NOT_ALLOWED")]
    StopLossOnFillGuaranteedHedgingNotAllowed,
    #[serde(rename = "STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID")]
    StopLossOnFillTimeInForceInvalid,
    #[serde(rename = "STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID")]
    StopLossOnFillTriggerConditionInvalid,
    #[serde(rename = "TAKE_PROFIT_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED")]
    TakeProfitOnFillPriceDistanceMaximumExceeded,
    #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
    TrailingStopLossOnFillGtdTimestampInPast,
    #[serde(rename = "CLIENT_TRADE_ID_ALREADY_EXISTS")]
    ClientTradeIdAlreadyExists,
    #[serde(rename = "POSITION_CLOSEOUT_FAILED")]
    PositionCloseoutFailed,
    #[serde(rename = "OPEN_TRADES_ALLOWED_EXCEEDED")]
    OpenTradesAllowedExceeded,
    #[serde(rename = "PENDING_ORDERS_ALLOWED_EXCEEDED")]
    PendingOrdersAllowedExceeded,
    #[serde(rename = "TAKE_PROFIT_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS")]
    TakeProfitOnFillClientOrderIdAlreadyExists,
    #[serde(rename = "STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS")]
    StopLossOnFillClientOrderIdAlreadyExists,
    #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS")]
    TrailingStopLossOnFillClientOrderIdAlreadyExists,
    #[serde(rename = "POSITION_SIZE_EXCEEDED")]
    PositionSizeExceeded,
    #[serde(rename = "HEDGING_GSLO_VIOLATION")]
    HedgingGsloViolation,
    #[serde(rename = "ACCOUNT_POSITION_VALUE_LIMIT_EXCEEDED")]
    AccountPositionValueLimitExceeded,
    #[serde(rename = "INSTRUMENT_BID_REDUCE_ONLY")]
    InstrumentBidReduceOnly,
    #[serde(rename = "INSTRUMENT_ASK_REDUCE_ONLY")]
    InstrumentAskReduceOnly,
    #[serde(rename = "INSTRUMENT_BID_HALTED")]
    InstrumentBidHalted,
    #[serde(rename = "INSTRUMENT_ASK_HALTED")]
    InstrumentAskHalted,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_BID_HALTED")]
    StopLossOnFillGuaranteedBidHalted,
    #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_ASK_HALTED")]
    StopLossOnFillGuaranteedAskHalted,

}

impl std::fmt::Display for OrderCancelReason {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            Self::InternalServerError => write!(f, "INTERNAL_SERVER_ERROR"),
            Self::AccountLocked => write!(f, "ACCOUNT_LOCKED"),
            Self::AccountNewPositionsLocked => write!(f, "ACCOUNT_NEW_POSITIONS_LOCKED"),
            Self::AccountOrderCreationLocked => write!(f, "ACCOUNT_ORDER_CREATION_LOCKED"),
            Self::AccountOrderFillLocked => write!(f, "ACCOUNT_ORDER_FILL_LOCKED"),
            Self::ClientRequest => write!(f, "CLIENT_REQUEST"),
            Self::Migration => write!(f, "MIGRATION"),
            Self::MarketHalted => write!(f, "MARKET_HALTED"),
            Self::LinkedTradeClosed => write!(f, "LINKED_TRADE_CLOSED"),
            Self::TimeInForceExpired => write!(f, "TIME_IN_FORCE_EXPIRED"),
            Self::InsufficientMargin => write!(f, "INSUFFICIENT_MARGIN"),
            Self::FifoViolation => write!(f, "FIFO_VIOLATION"),
            Self::BoundsViolation => write!(f, "BOUNDS_VIOLATION"),
            Self::ClientRequestReplaced => write!(f, "CLIENT_REQUEST_REPLACED"),
            Self::InsufficientLiquidity => write!(f, "INSUFFICIENT_LIQUIDITY"),
            Self::TakeProfitOnFillGtdTimestampInPast => write!(f, "TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_IN_PAST"),
            Self::TakeProfitOnFillLoss => write!(f, "TAKE_PROFIT_ON_FILL_LOSS"),
            Self::LosingTakeProfit => write!(f, "LOSING_TAKE_PROFIT"),
            Self::StopLossOnFillGtdTimestampInPast => write!(f, "STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST"),
            Self::StopLossOnFillLoss => write!(f, "STOP_LOSS_ON_FILL_LOSS"),
            Self::StopLossOnFillPriceDistanceMaximumExceeded => write!(f, "STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED"),
            Self::StopLossOnFillRequired => write!(f, "STOP_LOSS_ON_FILL_REQUIRED"),
            Self::StopLossOnFillGuaranteedRequired => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_REQUIRED"),
            Self::StopLossOnFillGuaranteedNotAllowed => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_NOT_ALLOWED"),
            Self::StopLossOnFillGuaranteedMinimumDistanceNotMet => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_MINIMUM_DISTANCE_NOT_MET"),
            Self::StopLossOnFillGuaranteedLevelRestrictionExceeded => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED"),
            Self::StopLossOnFillGuaranteedHedgingNotAllowed => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_HEDGING_NOT_ALLOWED"),
            Self::StopLossOnFillTimeInForceInvalid => write!(f, "STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID"),
            Self::StopLossOnFillTriggerConditionInvalid => write!(f, "STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID"),
            Self::TakeProfitOnFillPriceDistanceMaximumExceeded => write!(f, "TAKE_PROFIT_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED"),
            Self::TrailingStopLossOnFillGtdTimestampInPast => write!(f, "TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST"),
            Self::ClientTradeIdAlreadyExists => write!(f, "CLIENT_TRADE_ID_ALREADY_EXISTS"),
            Self::PositionCloseoutFailed => write!(f, "POSITION_CLOSEOUT_FAILED"),
            Self::OpenTradesAllowedExceeded => write!(f, "OPEN_TRADES_ALLOWED_EXCEEDED"),
            Self::PendingOrdersAllowedExceeded => write!(f, "PENDING_ORDERS_ALLOWED_EXCEEDED"),
            Self::TakeProfitOnFillClientOrderIdAlreadyExists => write!(f, "TAKE_PROFIT_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS"),
            Self::StopLossOnFillClientOrderIdAlreadyExists => write!(f, "STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS"),
            Self::TrailingStopLossOnFillClientOrderIdAlreadyExists => write!(f, "TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS"),
            Self::PositionSizeExceeded => write!(f, "POSITION_SIZE_EXCEEDED"),
            Self::HedgingGsloViolation => write!(f, "HEDGING_GSLO_VIOLATION"),
            Self::AccountPositionValueLimitExceeded => write!(f, "ACCOUNT_POSITION_VALUE_LIMIT_EXCEEDED"),
            Self::InstrumentBidReduceOnly => write!(f, "INSTRUMENT_BID_REDUCE_ONLY"),
            Self::InstrumentAskReduceOnly => write!(f, "INSTRUMENT_ASK_REDUCE_ONLY"),
            Self::InstrumentBidHalted => write!(f, "INSTRUMENT_BID_HALTED"),
            Self::InstrumentAskHalted => write!(f, "INSTRUMENT_ASK_HALTED"),
            Self::StopLossOnFillGuaranteedBidHalted => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_BID_HALTED"),
            Self::StopLossOnFillGuaranteedAskHalted => write!(f, "STOP_LOSS_ON_FILL_GUARANTEED_ASK_HALTED"),
        }
    }
}

impl Default for OrderCancelReason {
    fn default() -> OrderCancelReason {
        Self::InternalServerError
    }
}