Thaibot Technical Analysis คือ Library ภาษา Rust สำหรับการคำนวณอินดิเคเตอร์ทางเทคนิค (Technical Indicators) และวิเคราะห์สัญญาณการเทรด (Trade Signals) สำหรับระบบ Algorithmic Trading
Crate นี้ถูกออกแบบมาให้เป็น Pure Logic Library (ไม่มี Network I/O) ทำให้มีความเร็วสูง (High Performance) และสามารถนำไปใช้ได้ทั้งใน Trading Bot, Backtesting System หรือ Web Server API
- Multi-Indicator Support: รองรับการคำนวณ Moving Average หลากหลายรูปแบบ:
- EMA (Exponential Moving Average)
- HMA (Hull Moving Average)
- EHMA (Exponential Hull Moving Average)
- THMA (Triple Hull Moving Average)
- Deep Analysis: ไม่ใช่แค่คืนค่าตัวเลข แต่ยังวิเคราะห์เชิงลึกให้ด้วย:
- Trend Direction: หาความชัน (Slope) และทิศทาง (Up/Down/Flat)
- Turn Events: ตรวจจับจุดกลับตัว (TurnUp / TurnDown) เทียบกับแท่งก่อนหน้า
- Consecutive Counts: นับจำนวนแท่งที่ขึ้นหรือลงต่อเนื่อง (UpCon/DownCon)
- Candle Color: ระบุสีของแท่งเทียน (Green/Red/Doji)
- Zero Dependencies: ไม่มีการเชื่อมต่อ Network ภายนอก ทำงานได้ทันทีและทดสอบง่าย
เพิ่ม dependency ลงในไฟล์ Cargo.toml ของโปรเจกต์คุณ:
[dependencies]
thaibot_technical_analysis = "0.1.0" # ตรวจสอบเวอร์ชันล่าสุดบน crates.io
🛠 การใช้งาน (Usage)
ตัวอย่างการใช้งานใน main.rs หรือส่วน Logic ของคุณ:
Rust
use thaibot_technical_analysis::{calculate_market_data, CandleData, IndicatorType};
fn main() {
// 1. เตรียมข้อมูลแท่งเทียน (Candle Data)
// ในการใช้งานจริง ข้อมูลนี้จะมาจาก API ของ Broker (เช่น Deriv, Binance)
let candles = vec![
CandleData { time: 1700000000, open: 1.05, high: 1.10, low: 1.00, close: 1.08 },
CandleData { time: 1700000060, open: 1.08, high: 1.12, low: 1.07, close: 1.11 },
CandleData { time: 1700000120, open: 1.11, high: 1.15, low: 1.10, close: 1.09 },
// ... ข้อมูลเพิ่มเติม ...
];
// 2. เรียกใช้ฟังก์ชันคำนวณ
// พารามิเตอร์: (Asset Name, ข้อมูลแท่งเทียน, ประเภท Indicator, Period สั้น, Period ยาว)
let results = calculate_market_data(
"EURUSD".to_string(),
candles,
IndicatorType::HMA, // เลือกใช้ Hull Moving Average
9, // Short Period
21 // Long Period
);
// 3. แสดงผลลัพธ์
for row in results {
println!(
"Time: {}, Price: {}, ShortVal: {}, Turn: {}",
row.candleDisplay, row.close, row.emaShortValue, row.TurnType
);
}
}
นี่คือไฟล์ README.md สำหรับ Crate ของคุณครับ เขียนให้ดูเป็นมืออาชีพ เข้าใจง่าย และครอบคลุมวิธีใช้งานครับ
คุณสามารถ Copy โค้ดด้านล่างนี้ไปวางในไฟล์ README.md ที่อยู่ในโฟลเดอร์ root ของโปรเจกต์ thaibot_technical_analysis ได้เลยครับ
Markdown
# Thaibot Technical Analysis
**Thaibot Technical Analysis** คือ Library ภาษา Rust สำหรับการคำนวณอินดิเคเตอร์ทางเทคนิค (Technical Indicators) และวิเคราะห์สัญญาณการเทรด (Trade Signals) สำหรับระบบ Algorithmic Trading
Crate นี้ถูกออกแบบมาให้เป็น **Pure Logic Library** (ไม่มี Network I/O) ทำให้มีความเร็วสูง (High Performance) และสามารถนำไปใช้ได้ทั้งใน Trading Bot, Backtesting System หรือ Web Server API
## 🚀 ฟีเจอร์หลัก (Features)
* **Multi-Indicator Support:** รองรับการคำนวณ Moving Average หลากหลายรูปแบบ:
* **EMA** (Exponential Moving Average)
* **HMA** (Hull Moving Average)
* **EHMA** (Exponential Hull Moving Average)
* **THMA** (Triple Hull Moving Average)
* **Deep Analysis:** ไม่ใช่แค่คืนค่าตัวเลข แต่ยังวิเคราะห์เชิงลึกให้ด้วย:
* **Trend Direction:** หาความชัน (Slope) และทิศทาง (Up/Down/Flat)
* **Turn Events:** ตรวจจับจุดกลับตัว (TurnUp / TurnDown) เทียบกับแท่งก่อนหน้า
* **Consecutive Counts:** นับจำนวนแท่งที่ขึ้นหรือลงต่อเนื่อง (UpCon/DownCon)
* **Candle Color:** ระบุสีของแท่งเทียน (Green/Red/Doji)
* **Zero Dependencies:** ไม่มีการเชื่อมต่อ Network ภายนอก ทำงานได้ทันทีและทดสอบง่าย
## 📦 การติดตั้ง (Installation)
เพิ่ม dependency ลงในไฟล์ `Cargo.toml` ของโปรเจกต์คุณ:
```toml
[dependencies]
thaibot_technical_analysis = "0.1.0" # ตรวจสอบเวอร์ชันล่าสุดบน crates.io
🛠 การใช้งาน (Usage)
ตัวอย่างการใช้งานใน main.rs หรือส่วน Logic ของคุณ:
Rust
use thaibot_technical_analysis::{calculate_market_data, CandleData, IndicatorType};
fn main() {
// 1. เตรียมข้อมูลแท่งเทียน (Candle Data)
// ในการใช้งานจริง ข้อมูลนี้จะมาจาก API ของ Broker (เช่น Deriv, Binance)
let candles = vec![
CandleData { time: 1700000000, open: 1.05, high: 1.10, low: 1.00, close: 1.08 },
CandleData { time: 1700000060, open: 1.08, high: 1.12, low: 1.07, close: 1.11 },
CandleData { time: 1700000120, open: 1.11, high: 1.15, low: 1.10, close: 1.09 },
// ... ข้อมูลเพิ่มเติม ...
];
// 2. เรียกใช้ฟังก์ชันคำนวณ
// พารามิเตอร์: (Asset Name, ข้อมูลแท่งเทียน, ประเภท Indicator, Period สั้น, Period ยาว)
let results = calculate_market_data(
"EURUSD".to_string(),
candles,
IndicatorType::HMA, // เลือกใช้ Hull Moving Average
9, // Short Period
21 // Long Period
);
// 3. แสดงผลลัพธ์
for row in results {
println!(
"Time: {}, Price: {}, ShortVal: {}, Turn: {}",
row.candleDisplay, row.close, row.emaShortValue, row.TurnType
);
}
}
📊 โครงสร้างข้อมูล (Data Structures)
Input: CandleData
ข้อมูลดิบที่ต้องส่งเข้าไป
Rust
pub struct CandleData {
pub time: i64, // Unix Timestamp
pub open: f64,
pub high: f64,
pub low: f64,
pub close: f64,
}
นี่คือไฟล์ README.md สำหรับ Crate ของคุณครับ เขียนให้ดูเป็นมืออาชีพ เข้าใจง่าย และครอบคลุมวิธีใช้งานครับคุณสามารถ Copy โค้ดด้านล่างนี้ไปวางในไฟล์ README.md ที่อยู่ในโฟลเดอร์ root ของโปรเจกต์ thaibot_technical_analysis ได้เลยครับMarkdown# Thaibot Technical Analysis
**Thaibot Technical Analysis** คือ Library ภาษา Rust สำหรับการคำนวณอินดิเคเตอร์ทางเทคนิค (Technical Indicators) และวิเคราะห์สัญญาณการเทรด (Trade Signals) สำหรับระบบ Algorithmic Trading
Crate นี้ถูกออกแบบมาให้เป็น **Pure Logic Library** (ไม่มี Network I/O) ทำให้มีความเร็วสูง (High Performance) และสามารถนำไปใช้ได้ทั้งใน Trading Bot, Backtesting System หรือ Web Server API
## 🚀 ฟีเจอร์หลัก (Features)
* **Multi-Indicator Support:** รองรับการคำนวณ Moving Average หลากหลายรูปแบบ:
* **EMA** (Exponential Moving Average)
* **HMA** (Hull Moving Average)
* **EHMA** (Exponential Hull Moving Average)
* **THMA** (Triple Hull Moving Average)
* **Deep Analysis:** ไม่ใช่แค่คืนค่าตัวเลข แต่ยังวิเคราะห์เชิงลึกให้ด้วย:
* **Trend Direction:** หาความชัน (Slope) และทิศทาง (Up/Down/Flat)
* **Turn Events:** ตรวจจับจุดกลับตัว (TurnUp / TurnDown) เทียบกับแท่งก่อนหน้า
* **Consecutive Counts:** นับจำนวนแท่งที่ขึ้นหรือลงต่อเนื่อง (UpCon/DownCon)
* **Candle Color:** ระบุสีของแท่งเทียน (Green/Red/Doji)
* **Zero Dependencies:** ไม่มีการเชื่อมต่อ Network ภายนอก ทำงานได้ทันทีและทดสอบง่าย
## 📦 การติดตั้ง (Installation)
เพิ่ม dependency ลงในไฟล์ `Cargo.toml` ของโปรเจกต์คุณ:
```toml
[dependencies]
thaibot_technical_analysis = "0.1.0" # ตรวจสอบเวอร์ชันล่าสุดบน crates.io
🛠 การใช้งาน (Usage)ตัวอย่างการใช้งานใน main.rs หรือส่วน Logic ของคุณ:Rustuse thaibot_technical_analysis::{calculate_market_data, CandleData, IndicatorType};
fn main() {
// 1. เตรียมข้อมูลแท่งเทียน (Candle Data)
// ในการใช้งานจริง ข้อมูลนี้จะมาจาก API ของ Broker (เช่น Deriv, Binance)
let candles = vec![
CandleData { time: 1700000000, open: 1.05, high: 1.10, low: 1.00, close: 1.08 },
CandleData { time: 1700000060, open: 1.08, high: 1.12, low: 1.07, close: 1.11 },
CandleData { time: 1700000120, open: 1.11, high: 1.15, low: 1.10, close: 1.09 },
// ... ข้อมูลเพิ่มเติม ...
];
// 2. เรียกใช้ฟังก์ชันคำนวณ
// พารามิเตอร์: (Asset Name, ข้อมูลแท่งเทียน, ประเภท Indicator, Period สั้น, Period ยาว)
let results = calculate_market_data(
"EURUSD".to_string(),
candles,
IndicatorType::HMA, // เลือกใช้ Hull Moving Average
9, // Short Period
21 // Long Period
);
// 3. แสดงผลลัพธ์
for row in results {
println!(
"Time: {}, Price: {}, ShortVal: {}, Turn: {}",
row.candleDisplay, row.close, row.emaShortValue, row.TurnType
);
}
}
📊 โครงสร้างข้อมูล (Data Structures)Input: CandleDataข้อมูลดิบที่ต้องส่งเข้าไปRustpub struct CandleData {
pub time: i64, // Unix Timestamp
pub open: f64,
pub high: f64,
pub low: f64,
pub close: f64,
}
Output: AnalysisResultค่าที่ได้รับกลับมา (ชื่อ Field เป็น camelCase เพื่อรองรับ JSON ฝั่ง JavaScript)Field NameTypeคำอธิบายassetNameStringชื่อสินทรัพย์ (เช่น "R_100")candleTimei64เวลาแท่งเทียน (Unix Epoch)candleDisplayStringเวลาที่จัดรูปแบบแล้ว (YYYY-MM-DD HH:mm:ss)candleBodyStringลักษณะแท่งเทียน (Bullish/Bearish/Doji)emaShortValuef64ค่าของเส้น Short (จะเป็น EMA/HMA ตามที่เลือก)TurnTypeStringการกลับตัวของเส้น Short (TurnUp/TurnDown/-)previousIsTurnTypeStringจำค่าการกลับตัวครั้งล่าสุดemaShortSlopeDirectionStringทิศทางความชัน (Up/Down/Flat)emaLongValuef64ค่าของเส้น LongLongGroupNoi32เลขกลุ่มคลื่นของเส้น LongUpCon / DownConi32จำนวนแท่งที่เส้น Short ชันขึ้น/ลง ต่อเนื่องemaAboveStringบอกว่าเส้นไหนอยู่บน ("emaShort" หรือ "emaLong")macdf64ส่วนต่างระหว่าง Short กับ LongcurrentColorStringสีแท่งเทียนปัจจุบัน ("Green"/"Red")⚙️ Supported Indicatorsคุณสามารถเลือก Algorithm การคำนวณผ่าน IndicatorType enum:IndicatorType::EMA - มาตรฐาน ใช้งานทั่วไปIndicatorType::HMA - ลด Lag ได้ดี เหมาะกับตลาดผันผวนIndicatorType::EHMA - ผสมผสานความเร็วของ Hull และความนุ่มนวลของ EMAIndicatorType::THMA - Triple Hull กรอง Noise ได้ดีที่สุด