openpine_vm/strategy/
commission_type.rs1use openpine_macros::Enum;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Copy, Clone, Eq, PartialEq, Enum, Serialize, Deserialize)]
6pub enum CommissionType {
7 Percent,
9 CashPerContract,
11 CashPerOrder,
13}
14
15impl CommissionType {
16 #[inline]
18 pub(crate) fn apply(&self, commission_value: f64, price: f64, quantity: f64) -> f64 {
19 match self {
20 CommissionType::Percent => price * quantity * (commission_value / 100.0),
21 CommissionType::CashPerOrder => commission_value,
22 CommissionType::CashPerContract => commission_value * quantity,
23 }
24 }
25}