微信扫码
添加专属顾问
我要投稿
探索数字货币市场波动与量化交易的完美结合。 核心内容: 1. 数字货币市场的高波动性与量化交易挑战 2. 利用Python和Qwen 2.5 vl构建智能交易助手 3. 实现过程:环境搭建、数据获取、智能分析与图表展示
最近,数字货币市场的剧烈波动让许多投资者措手不及。我也不例外,一些仓位已经失手,盯盘变得异常疲惫。然而,我始终没有放弃通过量化交易来辅助决策的想法。随着大模型技术的日益成熟,我决定开发一个智能交易助手,帮助我在繁忙的市场中更好地把握机会。
本文将分享这个项目的实现过程,包括如何利用Python和阿里云的大规模语言模型(LLM)Qwen 2.5 vl来构建一个功能强大的数字货币行情助手。希望这篇文章能为同样在数字货币市场中挣扎的朋友们提供一些启发和帮助。
数字货币市场以其高波动性和复杂性著称。传统的手动交易方式不仅耗时费力,而且容易受到情绪影响,导致决策失误。为了应对这些问题,我希望能够开发一个自动化工具,能够实时获取市场数据、计算技术指标,并根据这些信息生成交易建议。
首先,我们需要安装必要的库和配置环境变量。以下是主要依赖项:
pip install requests pandas plotly kaleido oss2 aliyun-python-sdk-core openai streamlit
同时,确保配置了以下环境变量:
BINANCE_API_KEY
BINANCE_API_SECRET
OSS_ACCESS_KEY_ID
OSS_ACCESS_KEY_SECRET
OSS_ENDPOINT
OSS_BUCKET_NAME
QWEN_API_KEY
utils.py
为了保持代码的整洁和可维护性,我们将所有通用函数放在一个单独的文件 utils.py
中。这些函数包括但不限于:
create_requests_session
, send_signed_request
等。calculate_ma
, calculate_macd
, calculate_rsi
等。create_technical_chart
。upload_image_to_oss
。analyze_with_qwen2_5vl
。25_炒币神器.py
接下来,我们使用Streamlit构建用户界面。主界面分为两个部分:左侧用于配置参数和显示图表,右侧用于显示持仓信息和操作按钮。
display_kline
函数获取并显示选定交易对的K线图。save_chart_as_image
函数将当前图表保存为图片,并上传到OSS。analyze_with_qwen2_5vl
函数,传入图片URL,获取并显示分析结果。为了更清晰地展示整个项目的流程,我们绘制了一个简单的流程图。以下是SVG格式的流程图:
从代码实现来看,数据获取主要通过币安API完成。utils.py
中的get_kline_data
函数是核心:
def get_kline_data(symbol, interval="1h", limit=24):
url = f"https://api.binance.com/api/v3/klines"
params = {
"symbol": symbol,
"interval": interval,
"limit": limit
}
session = create_requests_session()
# ...处理请求逻辑
值得注意的是,系统使用了请求重试机制以提高稳定性:
retry_strategy = Retry(
total=3, # 最大重试次数
backoff_factor=1, # 重试间隔
status_forcelist=[429, 500, 502, 503, 504], # 需要重试的HTTP状态码
)
这确保了在网络不稳定情况下API请求的可靠性,对于实时交易系统至关重要。
系统实现了三种主要技术指标:
def calculate_ma(df, periods):
result = df.copy()
for period in periods:
result[f'MA{period}'] = result['close'].rolling(window=period).mean()
return result
MA均线通过pandas的rolling
函数高效计算,支持多周期配置。
def calculate_macd(df, fast_period=12, slow_period=26, signal_period=9):
result = df.copy()
# 计算快线和慢线EMA
result[f'EMA{fast_period}']= result['close'].ewm(span=fast_period, adjust=False).mean()
result[f'EMA{slow_period}']= result['close'].ewm(span=slow_period, adjust=False).mean()
# 计算MACD线和信号线
result['MACD']= result[f'EMA{fast_period}']- result[f'EMA{slow_period}']
result['Signal']= result['MACD'].ewm(span=signal_period, adjust=False).mean()
# 计算MACD柱状图
result['Histogram']= result['MACD']- result['Signal']
MACD计算使用了指数移动平均(EMA),而非简单移动平均,这使得指标对最近价格变化更敏感。
def calculate_rsi(df, period=14):
result = df.copy()
# 计算价格变化
delta = result['close'].diff()
# 分离上涨和下跌
gain = delta.where(delta >0,0)
loss =-delta.where(delta <0,0)
# 计算平均上涨和下跌
avg_gain = gain.rolling(window=period).mean()
avg_loss = loss.rolling(window=period).mean()
# 计算RS和RSI
rs = avg_gain / avg_loss
result['RSI']=100-(100/(1+ rs))
RSI计算遵循标准公式,通过比较上涨和下跌的相对强度来衡量市场超买超卖情况。
系统使用Plotly构建复杂的多层图表:
def create_technical_chart(df, symbol, interval, show_ma, show_macd, show_rsi, ma_periods, macd_fast, macd_slow, macd_signal, rsi_period, img_width, img_height):
# 计算需要的子图数量
rows =1# K线图
rows +=1# 成交量
if show_macd:
rows +=1
if show_rsi:
rows +=1
# 设置子图高度比例
row_heights =[0.5]# K线图占50%
row_heights.extend([0.5/(rows-1)]*(rows-1))# 其他指标平分剩余50%
图表创建的核心在于:
系统集成了阿里云的Qwen2.5VL模型进行图表智能分析:
def analyze_with_qwen2_5vl(image_path, symbol, interval):
# 使用阿里云的OpenAI客户端进行调用
client = OpenAI(
api_key=os.getenv("QWEN_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# 构造消息内容
messages =[
{
"role":"user",
"content":[
{"type":"text","text":f"用中文回答,分析以下{symbol} {interval} 指标图,并给出具体的趋势和投资建议: "},
{"type":"image_url","image_url": image_path},
]
}
]
这种多模态分析将视觉理解和自然语言处理结合起来,能够:
系统使用阿里云OSS存储和分享图表:
def upload_image_to_oss(file_path, bucket_name, object_name):
# 配置OSS客户端
auth = oss2.Auth(os.getenv('OSS_ACCESS_KEY_ID'), os.getenv('OSS_ACCESS_KEY_SECRET'))
bucket = oss2.Bucket(auth, os.getenv('OSS_ENDPOINT'), bucket_name)
# 上传文件
bucket.put_object_from_file(object_name, file_path)
# 返回文件的URL
return f"http://{bucket_name}.{os.getenv('OSS_ENDPOINT')}/{object_name}"
这种存储机制实现了:
从代码实现来看,整个系统采用了以下技术栈:
这种架构设计的优势在于:
通过这种技术实现,该项目实现了从数据获取、技术分析到AI辅助决策的完整闭环,为加密货币交易提供了强大的技术支持。
完成代码编写后,可以通过以下命令启动应用:
streamlit run 25_炒币神器.py
打开浏览器访问 http://localhost:8501
即可看到完整的用户界面。通过不断调整参数和优化代码,最终实现了预期的功能。
通过这个项目,我成功构建了一个功能强大的数字货币行情助手,还学会了如何结合现代技术和工具来解决实际问题。未来,我将继续优化这个工具,增加更多功能,如自动交易、风险控制等,以期在复杂的市场环境中获得更好的收益。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-22
谷歌 Gemini 2.5 Pro 成首款能理解 PDF 布局的 AI 模型了
2025-04-22
Ray 在微信 AI 计算中的大规模实践
2025-04-22
字节扣子空间首秀:AI Agent 真正落地,不再只是一个“聊天机器人”
2025-04-22
阿里、蚂蚁、腾讯纷纷推出 AI 组件库,React / Vue 全覆盖,AI 组件库超全汇总来啦!
2025-04-22
白话解析 DPO:如何让 AI 直接学习人类偏好?
2025-04-22
我对2025年AI发展的几点预测
2025-04-21
独家|百度上线“心响”App,平替版Mauns来了?
2025-04-21
Deep Research 类产品深度测评:下一个大模型产品跃迁点到来了吗?
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-04-22
2025-04-21
2025-04-21
2025-04-21
2025-04-20
2025-04-18
2025-04-16
2025-04-13