添加按时间拉取K线功能

This commit is contained in:
2026-07-07 21:09:11 +00:00
parent 0d967c9e10
commit f29f4e94cb
+47 -10
View File
@@ -131,7 +131,7 @@ def get_symbol_info(symbol):
---
### 5. 历史 K 线
### 5. 历史 K 线(按偏移量)
```
GET /rates/from-pos?symbol={symbol}&timeframe={timeframe}&start_pos={start}&count={count}
@@ -141,7 +141,7 @@ GET /rates/from-pos?symbol={symbol}&timeframe={timeframe}&start_pos={start}&coun
|------|--------|
| timeframe | `TIMEFRAME_M1` / `M5` / `M15` / `M30` / `H1` / `H4` / `D1` |
| start_pos | 0 = 最新,1 = 前一根,以此类推 |
| count | 获取数量 |
| count | 获取数量,最大 10000 |
```python
import pandas as pd
@@ -168,6 +168,41 @@ print(df.head())
---
### 5-2. 历史 K 线(按时间范围)⭐ 推荐
```
GET /rates/from-date?symbol={symbol}&timeframe={timeframe}&date_from={date_from}&date_to={date_to}
```
| 参数 | 可选值 |
|------|--------|
| timeframe | `TIMEFRAME_M1` / `M5` / `M15` / `M30` / `H1` / `H4` / `D1` |
| date_from | 起始日期,ISO-8601 或 `yyyy-MM-dd` |
| date_to | 结束日期,ISO-8601 或 `yyyy-MM-dd` |
```python
def get_rates_by_date(symbol, timeframe, date_from, date_to):
"""按时间范围获取 K 线"""
data = api("/rates/from-date", params={
"symbol": symbol,
"timeframe": f"TIMEFRAME_{timeframe}",
"date_from": date_from,
"date_to": date_to,
})["data"]
df = pd.DataFrame(data)
df["time"] = pd.to_datetime(df["time"])
df.set_index("time", inplace=True)
return df
# 获取 2026年7月1日 ~ 7月3日 的 H1 K 线
df = get_rates_by_date("XAUUSD", "H1", "2026-07-01", "2026-07-03")
print(df.head())
```
**返回字段:**`/rates/from-pos`
---
### 6. 当前持仓
```
@@ -379,7 +414,7 @@ GlobalVariableSet(key, signal_value[last_closed]);
```python
def read_signal():
try:
return api(f"/gvar/MY_SIGNAL_XAUUSDc_PERIOD_H1")["value"]
return api(f"/gvar/MY_SIGNAL_XAUUSD_PERIOD_H1")["value"]
except:
return None
@@ -404,7 +439,7 @@ def on_tick():
if not bridge.has_position("XAUUSD"):
bid, ask = bridge.tick("XAUUSD")
bridge.buy("XAUUSDc", 0.01, ask, sl=ask - 50, tp=ask + 100)
bridge.buy("XAUUSD", 0.01, ask, sl=ask - 50, tp=ask + 100)
print("指标发出买入信号,已开多")
```
@@ -536,7 +571,7 @@ class MAStrategy:
if __name__ == "__main__":
bridge = Mt5Bridge()
strategy = MAStrategy(bridge, "XAUUSDc", fast=20, slow=60)
strategy = MAStrategy(bridge, "XAUUSD", fast=20, slow=60)
while True:
try:
@@ -555,7 +590,8 @@ if __name__ == "__main__":
```
http://61.164.252.86:13485/health?key=your-api-key
http://61.164.252.86:13485/account?key=your-api-key
http://61.164.252.86:13485/symbols/XAUUSDc/tick?key=your-api-key
http://61.164.252.86:13485/symbols/XAUUSD/tick?key=your-api-key
http://61.164.252.86:13485/rates/from-date?symbol=XAUUSD&timeframe=TIMEFRAME_H1&date_from=2026-07-01&date_to=2026-07-03&key=your-api-key
```
---
@@ -563,10 +599,11 @@ http://61.164.252.86:13485/symbols/XAUUSDc/tick?key=your-api-key
## PowerShell 快速测试
```powershell
$key = "your-api-key"
Invoke-RestMethod "http://61.164.252.86:13485/health?key=$key"
Invoke-RestMethod "http://61.164.252.86:13485/account?key=$key"
Invoke-RestMethod "http://61.164.252.86:13485/symbols/XAUUSDc/tick?key=$key"
$headers = @{ "X-API-Key" = "your-api-key" }
Invoke-RestMethod "http://61.164.252.86:13485/health" -Headers $headers
Invoke-RestMethod "http://61.164.252.86:13485/account" -Headers $headers
Invoke-RestMethod "http://61.164.252.86:13485/symbols/XAUUSD/tick" -Headers $headers
Invoke-RestMethod "http://61.164.252.86:13485/rates/from-date?symbol=XAUUSD&timeframe=TIMEFRAME_H1&date_from=2026-07-01&date_to=2026-07-03" -Headers $headers
```
---