第一版

This commit is contained in:
YuWuKunCheng
2026-05-25 02:16:35 +08:00
parent ff4e6ae570
commit f92eef11fb
37 changed files with 11615 additions and 0 deletions
+139
View File
@@ -0,0 +1,139 @@
use crate::config::;
use crate::kline::bar::K线;
use crate::structure::dash_line::线;
use std::rc::Rc;
/// 背驰分析 — 判断进入段和离开段之间是否存在背驰
pub struct ;
impl {
/// MACD背驰 — 离开段MACD柱子面积小于进入段
pub fn MACD背驰(: &线, : &线, K线序列: &[Rc<K线>], : &str) -> bool {
// 获取进入段和离开段对应的K线
let _始 = ... as usize;
let _终 = ... as usize;
let _始 = ... as usize;
let _终 = ... as usize;
if _终 >= K线序列.len() || _终 >= K线序列.len() {
return false;
}
let MACD = Self::(&K线序列[_始..=_终], );
let MACD = Self::(&K线序列[_始..=_终], );
// 背驰条件: 离开段面积绝对值小于进入段
let = MACD. + MACD..abs();
let = MACD. + MACD..abs();
if < f64::EPSILON {
return false;
}
<
}
/// 斜率背驰 — 离开段斜率小于进入段
pub fn (: &线, : &线) -> bool {
let = (.. - ..).abs()
/ (.. - ..).abs() as f64;
let = (.. - ..).abs()
/ (.. - ..).abs() as f64;
<
}
/// 测度背驰 — 价格测度的背驰判断
pub fn (: &线, : &线) -> bool {
let = (.. - ..).abs();
let = (.. - ..).abs();
<
}
/// 全量背驰 — MACD + 斜率 + 测度 三者全满足
pub fn (: &线, : &线, K序列: &[Rc<K线>]) -> bool {
Self::MACD背驰(, , K序列, "")
&& Self::(, )
&& Self::(, )
}
/// 任意背驰 — 任一条件满足即可
pub fn (: &线, : &线, K序列: &[Rc<K线>]) -> bool {
Self::MACD背驰(, , K序列, "")
|| Self::(, )
|| Self::(, )
}
/// 配置背驰 — 根据配置选择判断方式
pub fn (: &线, : &线, K序列: &[Rc<K线>], : &) -> bool {
let mut result = true;
if .线_MACD {
result = result && Self::MACD背驰(, , K序列, "");
}
if .线_斜率 {
result = result && Self::(, );
}
if .线_测度 {
result = result && Self::(, );
}
result
}
/// 任选背驰
pub fn (: &线, : &线, K序列: &[Rc<K线>]) -> bool {
Self::(, , K序列)
}
/// 背驰模式 — 根据模式字符串选择判断方式
pub fn (
: &线,
: &线,
K序列: &[Rc<K线>],
: &,
: &str,
) -> bool {
match {
"全量" => Self::(, , K序列),
"任意" => Self::(, , K序列),
"配置" => Self::(, , K序列, ),
"相对" => Self::(, ),
_ => Self::(, , K序列, ),
}
}
// ---- 内部辅助 ----
fn (K线序列: &[Rc<K线>], : &str) -> MACD面积 {
let mut = 0.0f64;
let mut = 0.0f64;
for k in K线序列 {
if let Some(ref macd) = k.macd {
let hist = macd.MACD柱;
match {
"" => {
if hist > 0.0 {
+= hist
}
}
"" => {
if hist < 0.0 {
+= hist
}
}
"" | _ => {
if hist >= 0.0 {
+= hist
} else {
+= hist
}
}
}
}
}
MACD面积 { , }
}
}
struct MACD面积 {
: f64,
: f64,
}