greed 0.5.2

A rust tool to automate trades 📈
Documentation
use crate::platform::request::stop_loss::StopLoss;

impl From<apca::api::v2::order::StopLoss> for StopLoss {
    fn from(value: apca::api::v2::order::StopLoss) -> Self {
        match value {
            apca::api::v2::order::StopLoss::Stop(price) => Self::Stop(price),
            apca::api::v2::order::StopLoss::StopLimit(loss, limit) => Self::StopLimit(loss, limit),
            _ => panic!("unknown stop loss type"),
        }
    }
}

impl From<StopLoss> for apca::api::v2::order::StopLoss {
    fn from(value: StopLoss) -> Self {
        match value {
            StopLoss::Stop(price) => Self::Stop(price),
            StopLoss::StopLimit(loss, limit) => Self::StopLimit(loss, limit),
        }
    }
}

#[cfg(test)]
mod test {
    use num_decimal::Num;

    use crate::assert;
    use crate::platform::request::stop_loss::StopLoss;

    #[test]
    fn into() {
        assert::conversion(
            apca::api::v2::order::StopLoss::Stop(Num::from(42)),
            StopLoss::Stop(Num::from(42)),
        );
        assert::conversion(
            apca::api::v2::order::StopLoss::StopLimit(Num::from(42), Num::from(43)),
            StopLoss::StopLimit(Num::from(42), Num::from(43)),
        )
    }

    #[test]
    fn into_alpaca() {
        assert::conversion(
            StopLoss::Stop(Num::from(42)),
            apca::api::v2::order::StopLoss::Stop(Num::from(42)),
        );
        assert::conversion(
            StopLoss::StopLimit(Num::from(42), Num::from(43)),
            apca::api::v2::order::StopLoss::StopLimit(Num::from(42), Num::from(43)),
        )
    }
}