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};

/// Instrument : Full specification of an Instrument.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Instrument {
    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
    pub name: Option<models::InstrumentName>,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub r#type: Option<models::InstrumentType>,
    /// The display name of the Instrument
    #[serde(rename = "displayName", skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    /// The location of the \"pip\" for this instrument. The decimal position of the pip in this Instrument's price can be found at 10 ^ pipLocation (e.g. -4 pipLocation results in a decimal pip position of 10 ^ -4 = 0.0001).
    #[serde(rename = "pipLocation", skip_serializing_if = "Option::is_none")]
    pub pip_location: Option<i32>,
    /// The number of decimal places that should be used to display prices for this instrument. (e.g. a displayPrecision of 5 would result in a price of \"1\" being displayed as \"1.00000\")
    #[serde(rename = "displayPrecision", skip_serializing_if = "Option::is_none")]
    pub display_precision: Option<i32>,
    /// The amount of decimal places that may be provided when specifying the number of units traded for this instrument.
    #[serde(rename = "tradeUnitsPrecision", skip_serializing_if = "Option::is_none")]
    pub trade_units_precision: Option<i32>,
    /// The smallest number of units allowed to be traded for this instrument.
    #[serde(rename = "minimumTradeSize", skip_serializing_if = "Option::is_none")]
    pub minimum_trade_size: Option<String>,
    /// The maximum trailing stop distance allowed for a trailing stop loss created for this instrument. Specified in price units.
    #[serde(rename = "maximumTrailingStopDistance", skip_serializing_if = "Option::is_none")]
    pub maximum_trailing_stop_distance: Option<String>,
    /// The minimum trailing stop distance allowed for a trailing stop loss created for this instrument. Specified in price units.
    #[serde(rename = "minimumTrailingStopDistance", skip_serializing_if = "Option::is_none")]
    pub minimum_trailing_stop_distance: Option<String>,
    /// The maximum position size allowed for this instrument. Specified in units.
    #[serde(rename = "maximumPositionSize", skip_serializing_if = "Option::is_none")]
    pub maximum_position_size: Option<String>,
    /// The maximum units allowed for an Order placed for this instrument. Specified in units.
    #[serde(rename = "maximumOrderUnits", skip_serializing_if = "Option::is_none")]
    pub maximum_order_units: Option<String>,
    /// The margin rate for this instrument.
    #[serde(rename = "marginRate", skip_serializing_if = "Option::is_none")]
    pub margin_rate: Option<String>,
    #[serde(rename = "commission", skip_serializing_if = "Option::is_none")]
    pub commission: Option<Box<models::InstrumentComission>>,
}

impl Instrument {
    /// Full specification of an Instrument.
    pub fn new() -> Instrument {
        Instrument {
            name: None,
            r#type: None,
            display_name: None,
            pip_location: None,
            display_precision: None,
            trade_units_precision: None,
            minimum_trade_size: None,
            maximum_trailing_stop_distance: None,
            minimum_trailing_stop_distance: None,
            maximum_position_size: None,
            maximum_order_units: None,
            margin_rate: None,
            commission: None,
        }
    }
}