47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package libs
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
var (
|
|
Dcm_Signal = "/a/dcm_signal"
|
|
)
|
|
|
|
type SignalResult struct {
|
|
Code string `json:"code"`
|
|
Total int `json:"total"`
|
|
Updated string `json:"updated"`
|
|
Data map[string]SignalItem `json:"data"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
type SignalItem struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Desc string `json:"desc"`
|
|
LastClose float64 `json:"last_close"`
|
|
TechIndicator map[string]float64 `json:"tech_indicator"`
|
|
}
|
|
|
|
// FetchSignals 启动时读取信号,运行期间直接使用内存数据。
|
|
func FetchSignal(subUrl, host_key string) (*SignalResult, error) {
|
|
// gen url.
|
|
fullUrl := fmt.Sprintf("%s%s?host_key=%s&t=%s", API_HOST, subUrl, host_key, randStr(16))
|
|
// doing
|
|
payload, err := GetJSON(fullUrl, HTTPTimeout)
|
|
if err != nil {
|
|
log.Printf("[ERROR] 获取60m大盘信号失败: %s %v", fullUrl, err)
|
|
return nil, err
|
|
}
|
|
|
|
var result SignalResult
|
|
err = json.Unmarshal(payload, &result)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &result, nil
|
|
}
|