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 与低延迟金融应用开发的实用内容。

MACD(移动平均线收敛/发散指标)是技术分析中广泛应用的工具,它主要用于衡量股票或其他资产价格的趋势和动量。…
MACD(移动平均线收敛/发散指标)是技术分析中广泛应用的工具,它主要用于衡量股票或其他资产价格的趋势和动量。自从由Gerald Appel在20世纪70年代首次提出以来,MACD因其简洁性和有效性,成为投资者和交易员的重要指标。它通过EMA(指数移动平均线)来判断市场的变化,帮助交易者识别买入和卖出的信号,从而在市场中获得优势。
本文将深入探讨MACD指标的各个方面,包括其基本原理、参数设置、计算方法及应用技巧。我们还将展示如何通过Java和Python实现MACD交易策略,为读者提供实用的代码示例和实战经验。通过本篇文章,您将全面了解如何使用MACD进行有效的技术分析和交易决策。
MACD,全称是移动平均线收敛/发散指标(Moving Average Convergence Divergence),由以下几个主要部分组成:
通过这几个部分的配合,MACD能够为交易者提供清晰的买入和卖出信号,帮助他们在市场中做出更明智的决策。接下来,我们将详细介绍MACD的参数设置和计算方法,进一步帮助您理解这一强大的技术指标。
MACD的经典参数设置是12、26和9。这些数字分别代表计算快线、慢线和信号线所使用的周期长度。这套参数组合是最常用的,因为它经历了时间的考验,是各路大神总结出来最好的组合,在各种市场条件下表现良好,能够有效地平衡灵敏度和稳定性,
不同市场条件下的参数调整建议
虽然12、26、9是最常见的参数设置,但在不同的市场条件下,调整这些参数可以提高MACD的有效性。以下是一些调整建议:
无论选择哪种参数设置,都需要结合市场环境和个人交易风格进行调整。通过适当的调整,MACD可以更好地满足您的交易需求,帮助您在不同的市场条件下做出更明智的决策。
快线:
\begin{equation}
EMA_{快}
=Price×(
n+1
2
)+EMA_{快, 昨日}
×(1−
n+1
2
)
\end{equation}
慢线:
\begin{equation}
EMA_{慢}
=Price×(
n+1
2
)+EMA_{慢, 昨日}
×(1−
n+1
2
)
\end{equation}
DIF线:
\begin{equation}
DIF=EMA_{快}
−EMA_{慢}
\end{equation}
信号线(DEA线,DIF线的EMA):
\begin{equation}
DEA=DIF×(
n+1
2
)+DEA_{昨日}
×(1−
n+1
2
)
\end{equation}
MACD指标
黄金交叉,是指DIF线从下方向上穿过DEA线,MACD柱状图从负值转为正值。通常被认为是买入信号。这表明短期趋势正在增强。这种情况通常意味着市场可能会进入一个新的上涨阶段,交易者可以考虑买入或持有。
死亡交叉是指DIF线从上方向下穿过DEA线,MACD柱状图从正值转为负值,这种信号通常被解读为卖出信号。这表明短期趋势正在减弱,可能马上会迎来下跌行情,交易者可以考虑卖出或减少持仓。
金叉和死叉是MACD最为基础的交易信号,其本身并没有多大难度,只需要关注两条线的形态即可。但除此之外其实MACD还有些高阶的技巧:顶背离和正突破。
顶背离是指价格走势和MACD指标之间出现的背离现象,通常预示着市场可能发生反转。具体来说,顶背离发生在以下情况:
顶背离的形成过程如下:
顶背离是一个重要的预警信号,提示交易者市场可能即将反转或进入调整阶段。如果你观测到了顶背离的现象,最好配合成交量、RSI指标,和布林带来进一步确认,防止误判,如果成交量也在萎缩,应该尽快离场或者减少持仓。止损位可以设置在最近的支撑位下方,确保在市场出现快速反转时能够及时止损。
与顶背离相反,底背离发生在市场价格创出新低而MACD指标未能创出新低的情况下。这种情况表明卖方力量正在减弱,可能会迎来价格的反弹。底背离的出现通常预示着市场的下跌趋势可能即将结束。
底背离的出现通常预示着市场的下跌趋势可能即将结束,价格可能出现反转。具体来说,如果你观测到价格创出了新低,但与此同时MACD线却没有进一步降低,就应该注意了。
如何利用底背离信号进行交易
利用底背离信号进行交易可以采取以下步骤:
import java.util.List;
class TradeClient {
public static double getCurrentPrice(String symbol) {
// 使用Alltick的API获取资产的实时价格
return 0.0; // 假设返回实时价格为0.0
}
}
public class MACDTradingStrategy {
// 计算EMA(指数移动平均线)
public static double calculateEMA(List<Double> prices, int period) {
// 省略EMA计算的具体实现,这里简化为伪代码
return 0.0; // 假设返回EMA值为0.0
}
// 计算MACD指标
public static double calculateMACD(List<Double> prices, int shortPeriod, int longPeriod) {
// 计算短期EMA
double shortEMA = calculateEMA(prices, shortPeriod);
// 计算长期EMA
double longEMA = calculateEMA(prices, longPeriod);
// 计算DIF线
double dif = shortEMA - longEMA;
// 返回DIF线
return dif;
}
public static void main(String[] args) {
// 设置参数
int shortPeriod = 12;
int longPeriod = 26;
String symbol = "AAPL"; // 假设交易的股票为苹果公司(AAPL)
// 获取历史价格数据(假设已经从某处获取了历史价格数据并存储在List<Double>中)
List<Double> prices = ...; // 假设获取到了历史价格数据
// 计算MACD指标
double macd = calculateMACD(prices, shortPeriod, longPeriod);
// 获取实时价格
double currentPrice = AlltickClient.getCurrentPrice(symbol);
// 判断交易信号
if (macd > 0 && currentPrice > 0) {
// MACD正值,且当前价格大于0,产生买入信号
System.out.println("产生买入信号,当前价格:" + currentPrice);
// 在此处执行买入操作
} else if (macd < 0 && currentPrice > 0) {
// MACD负值,且当前价格大于0,产生卖出信号
System.out.println("产生卖出信号,当前价格:" + currentPrice);
// 在此处执行卖出操作
} else {
// 无交易信号
System.out.println("无交易信号");
}
}
}
import time
class TradeClient:
@staticmethod
def get_current_price(symbol):
# 使用Alltick的API获取指定symbol的实时价格,并返回
return 0.0 # 假设返回实时价格为0.0
# 计算EMA(指数移动平均线)
def calculate_ema(prices, period):
# 省略EMA计算的具体实现,这里简化为伪代码
return 0.0 # 假设返回EMA值为0.0
# 计算MACD指标
def calculate_macd(prices, short_period, long_period):
# 计算短期EMA
short_ema = calculate_ema(prices, short_period)
# 计算长期EMA
long_ema = calculate_ema(prices, long_period)
# 计算DIF线
dif = short_ema - long_ema
# 返回DIF线
return dif
def main():
# 设置参数
short_period = 12
long_period = 26
symbol = "AAPL" # 假设交易的股票为苹果公司(AAPL)
# 获取历史价格数据(假设已经从某处获取了历史价格数据并存储在列表中)
prices = [...] # 假设获取到了历史价格数据
# 计算MACD指标
macd = calculate_macd(prices, short_period, long_period)
# 获取实时价格
current_price = AlltickClient.get_current_price(symbol)
# 判断交易信号
if macd > 0 and current_price > 0:
# MACD正值,且当前价格大于0,产生买入信号
print("产生买入信号,当前价格:", current_price)
# 在此处执行买入操作
elif macd < 0 and current_price > 0:
# MACD负值,且当前价格大于0,产生卖出信号
print("产生卖出信号,当前价格:", current_price)
# 在此处执行卖出操作
else:
# 无交易信号
print("无交易信号")
if __name__ == "__main__":
while True:
main()
time.sleep(60) # 每隔一分钟执行一次交易策略