diff --git a/chanlun-py/Cargo.toml b/chanlun-py/Cargo.toml index 4e5c45d..ed59c2f 100644 --- a/chanlun-py/Cargo.toml +++ b/chanlun-py/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chanlun-py" -version = "26.5.86" +version = "26.5.89" edition = "2021" description = "缠论技术分析库 — Rust 高性能 Python 绑定" authors = ["YuYuKunKun"] @@ -12,7 +12,7 @@ crate-type = ["cdylib"] name = "chanlun" [dependencies] -chanlun = "26.5.3" # { path = "../chanlun" } +chanlun = { version = "26.5.3", path = "../chanlun" } pyo3 = { version = "0.28", features = ["extension-module", "experimental-inspect"] } serde_json = "1" chrono = "0.4" diff --git a/chanlun-py/pyproject.toml b/chanlun-py/pyproject.toml index aedcc33..d5d4846 100644 --- a/chanlun-py/pyproject.toml +++ b/chanlun-py/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "chanlun" -version = "2605.86" +version = "2605.89" description = "缠论技术分析库 — Rust 高性能实现" readme = { file = "README.md", content-type = "text/markdown" } license = { file = "LICENSE", content-type = "text/plain" } diff --git a/chanlun-py/src/business_py.rs b/chanlun-py/src/business_py.rs index 561a1b2..c49a587 100644 --- a/chanlun-py/src/business_py.rs +++ b/chanlun-py/src/business_py.rs @@ -71,6 +71,7 @@ impl 基础买卖点Py { Arc::clone(&买卖点分型.borrow().inner), 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -227,6 +228,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -248,6 +250,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -269,6 +272,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -290,6 +294,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -311,6 +316,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } @@ -332,6 +338,7 @@ impl 买卖点Py { 标识, 备注, 中枢破位值, + 当前K线.borrow().inner.序号, ), } } diff --git a/chanlun/src/business/bsp.rs b/chanlun/src/business/bsp.rs index 991179c..6d2fe60 100644 --- a/chanlun/src/business/bsp.rs +++ b/chanlun/src/business/bsp.rs @@ -42,6 +42,8 @@ pub struct 基础买卖点 { pub 终结K线: Option>, pub 破位值: f64, pub 结构: Option<分型结构>, + /// 当前缠K的序号 — 与 Python 一致,偏移计算使用缠论K线序号而非标的K线序号 + pub 当前序号: i64, } impl 基础买卖点 { @@ -51,6 +53,7 @@ impl 基础买卖点 { 买卖点分型: Arc<分型>, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> Self { let 买卖点K线 = Arc::clone(&买卖点分型.中); Self { @@ -63,12 +66,13 @@ impl 基础买卖点 { 终结K线: None, 破位值: 中枢破位值, 结构: None, + 当前序号, } } - /// 偏移 — 当前K线与买卖点K线的序号差 + /// 偏移 — 当前缠K序号与买卖点K线序号的差(对齐 Python,使用缠论K线序号) pub fn 偏移(&self) -> i64 { - self.当前K线.序号 - self.买卖点K线.序号.load(Ordering::Relaxed) + self.当前序号 - self.买卖点K线.序号.load(Ordering::Relaxed) } /// 失效偏移 @@ -118,8 +122,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::一卖, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::一卖, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } pub fn 一买点( @@ -128,8 +140,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::一买, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::一买, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } pub fn 二卖点( @@ -138,8 +158,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::二卖, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::二卖, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } pub fn 二买点( @@ -148,8 +176,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::二买, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::二买, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } pub fn 三卖点( @@ -158,8 +194,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::三卖, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::三卖, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } pub fn 三买点( @@ -168,8 +212,16 @@ impl 买卖点 { _标识: &str, 备注: String, 中枢破位值: f64, + 当前序号: i64, ) -> 基础买卖点 { - 基础买卖点::new(买卖点类型::三买, 当前K线, 买卖点分型, 备注, 中枢破位值) + 基础买卖点::new( + 买卖点类型::三买, + 当前K线, + 买卖点分型, + 备注, + 中枢破位值, + 当前序号, + ) } /// 生成买卖点 — 根据参数自动选择类型 @@ -190,6 +242,8 @@ impl 买卖点 { // 当前K线 — 从缠K获取其标的K线 let 当前K线 = Arc::clone(&*当前缠K.标的K线.read().unwrap()); + // 当前序号 — 使用缠论K线序号(对齐 Python 偏移计算) + let 当前序号 = 当前缠K.序号.load(Ordering::Relaxed); let 类型 = match (序号, 买卖) { ("一", "买") => 买卖点类型::一买, @@ -201,6 +255,6 @@ impl 买卖点 { _ => 买卖点类型::一买, // fallback }; - 基础买卖点::new(类型, 当前K线, 买卖点分型, 备注, 破位值) + 基础买卖点::new(类型, 当前K线, 买卖点分型, 备注, 破位值, 当前序号) } }