手记

新手教程:20 行 Python 代码,带你自制外汇行情监控器

想写一个外汇交易机器人,却不知道第一步怎么走?今天我们不讲复杂的金融模型,只教你最基础、也最重要的一步:怎么把实时数据抓到手

想象一下,你想要在美元/日元(USD/JPY)跌破 140 时收到提醒。如果你还在用浏览器不断刷新网页看价格,那就太原始了。我们要做的,是让程序替我们盯着,并且是毫秒不差地盯着。

很多新手会用爬虫去抓网页数据。但你很快会发现,网页结构一变,代码就挂了;而且爬虫的速度太慢,根本捉不住转瞬即逝的行情。我们需要的是专业选手用的工具——WebSocket。

这就像给你的电脑装上一根直通交易所的“电话线”。我们会用到 Python 语言。首先,打开你的终端,装好这两个工具包:

pip install websocket-client requests

这里我们以 AllTick API 的接口为例,它的文档比较适合教学,逻辑很清晰。我们要做三件事:连上服务器、告诉它我们要什么数据、等着收数据。

import websocket
import json

def on_message(ws, message):
    data = json.loads(message)
    print(f"{data['symbol']} | {data['price']} | {data['time']}")

def on_open(ws):
    subscribe_msg = {
        "action": "subscribe",
        "symbols": ["EURUSD", "USDJPY"]
    }
    ws.send(json.dumps(subscribe_msg))

ws = websocket.WebSocketApp(
    "wss://api.alltick.co/forex/realtime",
    on_open=on_open,
    on_message=on_message
)

ws.run_forever()

on_open 就像电话接通的那一刻,我们赶紧喊出:“给我发 EURUSD 的价格!”而 on_message 则是对方传来的每一句话(数据),都在这里处理。

光打印出来不够,我们还得学会保存。比如存到一个 Excel (CSV) 文件里,方便以后分析。

import csv
from datetime import datetime

def save_tick(data):
    with open("forex_tick.csv", "a", newline="") as f:
        writer = csv.writer(f)
        writer.writerow([
            datetime.now(),
            data["symbol"],
            data["price"]
        ])

代码跑起来后,你会看到屏幕上数字飞快跳动,这就是市场的脉搏。学会了这一步,接下来无论是做价格报警机器人,还是自动化交易,你都已经拿到了“入场券”。赶紧把代码复制去试试吧!


0人推荐
随时随地看视频
慕课网APP