pub struct Renko { /* private fields */ }
Expand description
Converts timeseries to Renko timeseries
Renko is very different from a simple timeseries. On each step it may generate any amount of blocks or not generate it at all. That’s why it needs to be implemented throw three different structures:
Renko
method itself.
When call Method::next
on Renko
, it always returns RenkoOutput
.
RenkoOutput
which isRenko
’s method output type.
It implements an Iterator
trait for generating RenkoBlock
s after each step of calling Method::next
on Renko
.
RenkoOutput
may produce any amount of RenkoBlock
s or may not produce it at all.
RenkoBlock
is final entity of Renko chart.
It has open
and close
values which are similar to corresponding OHLCV
’s values.
So the final workflow is like that:
- Call
Renko
’sMethod::next
on someValueType
and getRenkoOutput
. - Iterate over taken
RenkoOutput
to get some (or none)RenkoBlock
s. - Use produced
RenkoBlock
s on your own.
Parameters
Has a tuple of 2 parameters (size
: ValueType
, source
: Source
)
size
:ValueType
. Represents relative block size.
size
must be in range (0.0
; 1.0
)
source
:Source
. Represents which value of input’s OHLCV it will use.
use yata::prelude::*;
use yata::core::Source;
use yata::methods::Renko;
let first_timeseries_value = Candle { close: 123.456, ..Candle::default() };
let renko = Renko::new((0.01, Source::Close), &first_timeseries_value); // creates a Renko method with relative block size of 1%.
Input type
Input type is reference to OHLCV
Output type
Input type is RenkoOutput
Examples
use yata::prelude::*;
use yata::core::Source;
use yata::methods::Renko;
// Here we just creating a `Vec` of `OHLCV`s with only `close` value inside
let inputs = (&[100.0, 100.5, 101.506, 105.0, 102.0, 101.4, 100.0])
.iter()
.map(|&v| Candle {
close: v,
..Candle::default()
})
.collect::<Vec<_>>();
let mut renko = Renko::new((0.01, Source::Close), &inputs[0]).unwrap(); // renko with relative block size of 1%
assert!(renko.next(&inputs[0]).is_empty());
assert!(renko.next(&inputs[1]).is_empty());
assert_eq!(renko.next(&inputs[2]).len(), 1);
let blocks = renko.next(&inputs[3]);
assert_eq!(blocks.len(), 3);
blocks.for_each(|block| { println!("{:?}", &block); });
assert_eq!(renko.next(&inputs[4]).len(), 1);
assert_eq!(renko.next(&inputs[5]).len(), 1);
assert_eq!(renko.next(&inputs[6]).len(), 1);
Performance
O(1)
See also
Trait Implementations
sourceimpl<'de> Deserialize<'de> for Renko
impl<'de> Deserialize<'de> for Renko
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Method for Renko
impl Method for Renko
type Output = RenkoOutput
type Output = RenkoOutput
Output value type
sourcefn new(
(brick_size, src): Self::Params,
candle: &Self::Input
) -> Result<Self, Error>
fn new(
(brick_size, src): Self::Params,
candle: &Self::Input
) -> Result<Self, Error>
Static method for creating an instance of the method with given parameters
and initial value
(simply first input value)
sourcefn next(&mut self, candle: &Self::Input) -> Self::Output
fn next(&mut self, candle: &Self::Input) -> Self::Output
Generates next output value based on the given input value
sourcefn with_history(
parameters: Self::Params,
initial_value: &Self::Input
) -> Result<WithHistory<Self, Self::Output>, Error> where
Self: Sized,
Self::Output: Debug + Clone,
fn with_history(
parameters: Self::Params,
initial_value: &Self::Input
) -> Result<WithHistory<Self, Self::Output>, Error> where
Self: Sized,
Self::Output: Debug + Clone,
Creates an instance of the method with given parameters
and initial value
, wrapped by historical data holder
sourcefn with_last_value(
parameters: Self::Params,
initial_value: &Self::Input
) -> Result<WithLastValue<Self, Self::Output>, Error> where
Self: Sized,
Self::Output: Debug + Clone,
fn with_last_value(
parameters: Self::Params,
initial_value: &Self::Input
) -> Result<WithLastValue<Self, Self::Output>, Error> where
Self: Sized,
Self::Output: Debug + Clone,
Creates an instance of the method with given parameters
and initial value
, wrapped by last produced value holder
sourcefn memsize(&self) -> (usize, usize) where
Self: Sized,
fn memsize(&self) -> (usize, usize) where
Self: Sized,
Returns memory size of the method (size, align)
sourcefn over<S>(&mut self, inputs: S) -> Vec<Self::Output> where
S: Sequence<Self::Input>,
Self::Input: Sized,
Self: Sized,
fn over<S>(&mut self, inputs: S) -> Vec<Self::Output> where
S: Sequence<Self::Input>,
Self::Input: Sized,
Self: Sized,
Iterates the Method
over the given inputs
slice and returns Vec
of output values. Read more
sourcefn apply<T, S>(&mut self, sequence: &mut S) where
S: Sequence<T> + AsMut<[T]> + ?Sized,
Self: Method<Input = T, Output = T> + Sized,
fn apply<T, S>(&mut self, sequence: &mut S) where
S: Sequence<T> + AsMut<[T]> + ?Sized,
Self: Method<Input = T, Output = T> + Sized,
Applies method to the sequence in-place.
sourcefn new_over<S>(
parameters: Self::Params,
inputs: S
) -> Result<Vec<Self::Output>, Error> where
S: Sequence<Self::Input>,
Self::Input: Sized,
Self: Sized,
fn new_over<S>(
parameters: Self::Params,
inputs: S
) -> Result<Vec<Self::Output>, Error> where
S: Sequence<Self::Input>,
Self::Input: Sized,
Self: Sized,
Creates new Method
instance and iterates it over the given inputs
slice and returns Vec
of output values. Read more
sourcefn new_apply<T, S>(
parameters: Self::Params,
sequence: &mut S
) -> Result<(), Error> where
S: Sequence<T> + AsMut<[T]>,
Self: Method<Input = T, Output = T> + Sized,
fn new_apply<T, S>(
parameters: Self::Params,
sequence: &mut S
) -> Result<(), Error> where
S: Sequence<T> + AsMut<[T]>,
Self: Method<Input = T, Output = T> + Sized,
Creates new Method
instance and applies it to the sequence
.
impl Copy for Renko
Auto Trait Implementations
impl RefUnwindSafe for Renko
impl Send for Renko
impl Sync for Renko
impl Unpin for Renko
impl UnwindSafe for Renko
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more