Forex API
为 50+ 个主要、次要及异国货币对提供 Tick 级报价。
通过一个 WebSocket 和 REST API 传输 Tick 级 Forex、Crypto、Stock、Commodity 和 Index 数据。几秒钟即可获取免费密钥——无需销售沟通。
| 代码 | 资产类别 | 价格 | 实时变动 |
|---|---|---|---|
| EUR/USD 外汇欧元 / 美元 | 外汇 | - | - |
| BTC/USDT 加密货币比特币 | 加密货币 | - | - |
| ETH/USDT 加密货币以太坊 | 加密货币 | - | - |
| AAPL 股票苹果公司 | 股票 | - | - |
| XAU/USD 大宗商品现货黄金 | 大宗商品 | - | - |
| USD/JPY 外汇美元 / 日元 | 外汇 | - | - |
| NVDA 股票英伟达公司 | 股票 | - | - |
| SPX 指数标普 500 指数 | 指数 | - | - |
AllTick 覆盖的每个市场都可通过同一个统一的 REST 和 WebSocket 接口访问。
为 50+ 个主要、次要及异国货币对提供 Tick 级报价。
实时现货和衍生品数据,标准化为一个数据流。
覆盖美股、港股和 A 股市场的股票,提供成交和报价。
贵金属和能源的实时定价。
主要全球指数的基准指数值和成分股。
比较 AllTick 各个市场的覆盖范围、延迟和数据类型。
浏览产品AllTick 与典型传统行情数据供应商的对比。
| 能力 | AllTick | 典型传统供应商 |
|---|---|---|
| WebSocket 中位延迟 | 约 150ms | 400–800ms |
| 一个 API 中的资产类别 | 5(FX、Crypto、Stock、Commodities、Indices) | 1–2 |
| 可用性 SLA | 99.95% | 99.5% 或无 |
| 免费等级 | 有——即时 API 密钥 | 需要销售沟通 |
| WebSocket 流 | 原生支持 | 轮询 / 有限支持 |
通过 WebSocket 连接并订阅任何市场中的任意交易品种。
# AllTick realtime financial data API
# forex crypto stock commodities indices
import asyncio, json, uuid
import websockets
subscribe = {
"cmd_id": 22004,
"seq_id": 1,
"trace": str(uuid.uuid4()),
"data": {"symbol_list": [{"code": "EURUSD"}]},
}
heartbeat = {"cmd_id": 22000, "seq_id": 1, "trace": "heartbeat", "data": {}}
async def stream():
uri = "wss://quote.alltick.co/quote-b-ws-api?token=YOUR_API_KEY"
async with websockets.connect(uri) as socket:
await socket.send(json.dumps(subscribe))
async def keep_alive():
while True:
await asyncio.sleep(10)
await socket.send(json.dumps(heartbeat))
asyncio.create_task(keep_alive())
async for message in socket:
print(json.loads(message))
asyncio.run(stream())分享市场数据工程、流式 API 与低延迟金融应用开发的实用内容。

布林带策略是由约翰·布林格(John Bollinger)在1980年代初期发明的,它是一种非常流行的技术分析…
布林带策略是由约翰·布林格(John Bollinger)在1980年代初期发明的,它是一种非常流行的技术分析工具,用于评估资产价格的高低和波动性。布林带由三条线组成:中间线是n期移动平均线(通常是20日简单移动平均线),上线和下线分别是中间线上下的标准差,通常设置为2个标准差。
在使用布林带策略时,投资者应该进行回溯测试,以确定最适合自己交易风格的参数设置。同时,注意观察市场环境和其他技术指标的信号,以避免假信号并优化入场和退出点。
import java.util.List;public class BollingerBandsStrategy { public static void main(String[] args) { List<Double> prices = // 获取价格数据的方法,例如从API或文件中读取 int windowSize = 20; // 移动窗口大小 double numStdDeviations = 2.0; // 标准差倍数 double upperBand; double lowerBand; for (int i = windowSize; i < prices.size(); i++) { // 计算移动平均值和标准差 List<Double> window = prices.subList(i - windowSize, i); double mean = calculateMean(window); double stdDev = calculateStandardDeviation(window, mean); // 计算布林带上轨和下轨 upperBand = mean + numStdDeviations * stdDev; lowerBand = mean - numStdDeviations * stdDev; // 判断价格突破布林带 double currentPrice = prices.get(i); if (currentPrice > upperBand) { // 产生卖出信号,价格突破上轨,卖出 // 执行卖出操作 // ... } else if (currentPrice < lowerBand) { // 产生买入信号,价格突破下轨,买入 // 执行买入操作 // ... } } } private static double calculateMean(List<Double> values) { double sum = 0.0; for (double value : values) { sum += value; } return sum / values.size(); } private static double calculateStandardDeviation(List<Double> values, double mean) { double sumSquaredDiff = 0.0; for (double value : values) { double diff = value - mean; sumSquaredDiff += diff * diff; } double variance = sumSquaredDiff / values.size(); return Math.sqrt(variance); }}
import numpy as np
import pandas as pd
def bollinger_bands_strategy(prices, window_size=20, num_std_deviations=2):
df = pd.DataFrame(prices, columns=['Close'])
df['Mean'] = df['Close'].rolling(window=window_size).mean()
df['Std'] = df['Close'].rolling(window=window_size).std()
df['UpperBand'] = df['Mean'] + num_std_deviations * df['Std']
df['LowerBand'] = df['Mean'] - num_std_deviations * df['Std']
df['Signal'] = 0
df.loc[df['Close'] > df['UpperBand'], 'Signal'] = -1 # 卖出信号
df.loc[df['Close'] < df['LowerBand'], 'Signal'] = 1 # 买入信号
df['Position'] = df['Signal'].diff()
return df
# 示例用法
prices = [10.2, 11.4, 10.8, 12.1, 11.7, 10.9, 12.5, 11.8, 12.6, 13.2]
result = bollinger_bands_strategy(prices)
print(result)