nautilus_indicators/python/volatility/
rvi.rs1use nautilus_model::data::{Bar, QuoteTick, TradeTick};
17use pyo3::prelude::*;
18
19use crate::{
20 average::MovingAverageType, indicator::Indicator, volatility::rvi::RelativeVolatilityIndex,
21};
22
23#[pymethods]
24impl RelativeVolatilityIndex {
25 #[new]
26 #[pyo3(signature = (period, scalar=None, ma_type=None))]
27 #[must_use]
28 pub fn py_new(period: usize, scalar: Option<f64>, ma_type: Option<MovingAverageType>) -> Self {
29 Self::new(period, scalar, ma_type)
30 }
31
32 fn __repr__(&self) -> String {
33 format!(
34 "RelativeVolatilityIndex({},{},{},{})",
35 self.period, self.ma_type, self.scalar, self.ma_type,
36 )
37 }
38
39 #[getter]
40 #[pyo3(name = "name")]
41 fn py_name(&self) -> String {
42 self.name()
43 }
44
45 #[getter]
46 #[pyo3(name = "period")]
47 const fn py_period(&self) -> usize {
48 self.period
49 }
50
51 #[getter]
52 #[pyo3(name = "scalar")]
53 const fn py_scalar(&self) -> f64 {
54 self.scalar
55 }
56
57 #[getter]
58 #[pyo3(name = "has_inputs")]
59 fn py_has_inputs(&self) -> bool {
60 self.has_inputs()
61 }
62
63 #[getter]
64 #[pyo3(name = "value")]
65 const fn py_value(&self) -> f64 {
66 self.value
67 }
68
69 #[getter]
70 #[pyo3(name = "initialized")]
71 const fn py_initialized(&self) -> bool {
72 self.initialized
73 }
74
75 #[pyo3(name = "update_raw")]
76 fn py_update_raw(&mut self, close: f64) {
77 self.update_raw(close);
78 }
79
80 #[pyo3(name = "handle_quote_tick")]
81 const fn py_handle_quote_tick(&mut self, _quote: &QuoteTick) {
82 }
84
85 #[pyo3(name = "handle_trade_tick")]
86 const fn py_handle_trade_tick(&mut self, _trade: &TradeTick) {
87 }
89
90 #[pyo3(name = "handle_bar")]
91 fn py_handle_bar(&mut self, bar: &Bar) {
92 self.update_raw((&bar.close).into());
93 }
94
95 #[pyo3(name = "reset")]
96 fn py_reset(&mut self) {
97 self.reset();
98 }
99}