shape_runtime/
pattern_library.rs1use std::collections::HashSet;
7
8pub struct PatternLibrary {
9 pattern_names: HashSet<String>,
10}
11
12impl Default for PatternLibrary {
13 fn default() -> Self {
14 Self::new()
15 }
16}
17
18impl PatternLibrary {
19 pub fn new() -> Self {
20 let mut pattern_names = HashSet::new();
22
23 pattern_names.insert("hammer".to_string());
25 pattern_names.insert("doji".to_string());
26 pattern_names.insert("shooting_star".to_string());
27 pattern_names.insert("dragonfly_doji".to_string());
28 pattern_names.insert("gravestone_doji".to_string());
29 pattern_names.insert("long_legged_doji".to_string());
30 pattern_names.insert("marubozu".to_string());
31 pattern_names.insert("bullish_marubozu".to_string());
32 pattern_names.insert("bearish_marubozu".to_string());
33 pattern_names.insert("spinning_top".to_string());
34
35 pattern_names.insert("bullish_engulfing".to_string());
37 pattern_names.insert("bearish_engulfing".to_string());
38 pattern_names.insert("tweezer_top".to_string());
39 pattern_names.insert("tweezer_bottom".to_string());
40 pattern_names.insert("piercing_line".to_string());
41 pattern_names.insert("dark_cloud_cover".to_string());
42 pattern_names.insert("bullish_harami".to_string());
43 pattern_names.insert("bearish_harami".to_string());
44 pattern_names.insert("harami".to_string());
45 pattern_names.insert("bullish_belt_hold".to_string());
46 pattern_names.insert("bearish_belt_hold".to_string());
47 pattern_names.insert("in_neck_line".to_string());
48 pattern_names.insert("on_neck_line".to_string());
49 pattern_names.insert("thrusting_pattern".to_string());
50
51 pattern_names.insert("morning_star".to_string());
53 pattern_names.insert("evening_star".to_string());
54 pattern_names.insert("three_white_soldiers".to_string());
55 pattern_names.insert("three_black_crows".to_string());
56 pattern_names.insert("three_inside_up".to_string());
57 pattern_names.insert("three_inside_down".to_string());
58 pattern_names.insert("three_outside_up".to_string());
59 pattern_names.insert("three_outside_down".to_string());
60 pattern_names.insert("abandoned_baby_bullish".to_string());
61 pattern_names.insert("abandoned_baby_bearish".to_string());
62 pattern_names.insert("bullish_tri_star".to_string());
63 pattern_names.insert("bearish_tri_star".to_string());
64
65 Self { pattern_names }
66 }
67
68 pub fn has_pattern(&self, name: &str) -> bool {
69 self.pattern_names.contains(name)
70 }
71
72 pub fn pattern_names(&self) -> Vec<String> {
73 self.pattern_names.iter().cloned().collect()
74 }
75}