Struct yata::methods::Renko[][src]

pub struct Renko { /* fields omitted */ }

Converts timeseries to Renko timeseries

Renko is very different from the simple timeseries. On each step it may generate any amount of blocks or not genereate it at all. That’s why it needs to be implement throw three different structures:

When call Method::next on Renko, it always returns RenkoOutput.

It implements an Iterator trait for generating RenkoBlocks after each step of calling Method::next on Renko. RenkoOutput may produce any amount of RenkoBlocks or may not produce it at all.

It has open and close values which are similar to corresponding OHLCV’s values.

So the final workflow is like that:

  1. Call Renko’s Method::next on some ValueType and get RenkoOutput.
  2. Iterate over taken RenkoOutput to get some (or none) RenkoBlocks.
  3. Use produced RenkoBlocks 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 `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

impl Clone for Renko[src]

impl Copy for Renko[src]

impl Debug for Renko[src]

impl<'de> Deserialize<'de> for Renko[src]

impl<'a> Method<'a> for Renko[src]

type Params = (ValueType, Source)

Method parameters

type Input = &'a dyn OHLCV

Input value type

type Output = RenkoOutput

Output value type

impl Serialize for Renko[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.