用AI代理进行加密货币交易
我们建立了一个持续交易反馈系统。它的作用是从选定的交易所平台持续收集加密货币市场数据,进行技术分析,构建,训练一个预测机器学习模型,并做出预测。
一键发币: Aptos | X Layer | SUI | SOL | BNB | ETH | BASE | ARB | OP | Polygon | Avalanche | 用AI学区块链开发

随着科技行业的快速变化,AI再次崛起,改变了我们当前世界的几乎所有方面。AI本身并不是一个新概念,但当OpenAI的模型“GPT-3”(基于转换器的大语言模型)能够通过NVIDIA芯片处理数百亿个标记时,这场革命才真正开始,因此他们与NVIDIA的强大合作以及云基础设施扩展等其他因素。
这种新能力颠覆了所有东西,从医疗保健、军事、零售到教育、金融和网络安全等。
在本文中,我想聚焦并展示这项技术如何影响金融交易领域。
在金融科技行业(FinTech)中,作为一家交易公司,您要解决的问题是什么?
嗯,让我们探讨一下一般的交易工作流程是什么样的:
- 收集、获取资产的数据集(历史+实时)
- 从各种数据点(新闻源、社交媒体、文章、经济事件)收集和分析市场信息
- 分析这个数据集,以技术指标提取必要的见解,告诉资产的方向。这是技术分析阶段。
- 将所有收集的数据相关联,以得出资产和市场方向的清晰画面,从而进行/采取有利可图的交易。
从高层次来看,这就是它看起来的样子。人类已经这样做了很多年;在某些情况下,这会带来好的结果,在其他情况下可能不是那么好,但关键是这就是一直这样做的方式。
现在,代理AI发挥作用的地方是它可以使这个过程更加高效,因为它可以:
- 以人类无法达到的速度阅读/总结数百万页
- 它可以访问、浏览网络并理解它(总结)以人类无法达到的速度
- 它可以在人类无法达到的速度下查找、识别和关联数百万个数据点
- 它可以扮演任何主题的角色,以人类无法达到的准确性产生建议、回应
在本文的下一节中,我们将深入探讨为加密货币交易市场构建的代理系统的详细技术 walkthrough。系好安全带...
1、系统
我们建立了一个持续交易反馈系统。它的作用是从选定的交易所平台持续收集加密货币市场数据,进行技术分析,构建,训练一个预测机器学习模型,并做出预测。所有KPI、算法用于此预测都被记录和存储。该模型实时更新,每次交易都包括一个庞大的自定义技术分析数据集,随着时间的推移提高其预测准确性。所有这些数据都存储在一个noSQL数据库(elasticsearch)中,显然整个流管道都在Kafka上。
所以,我们最终得到的是市场上每个资产的档案。这个数据集使我们变得有价值,因为没有人有这个。

2、大型语言模型
因此,我们设置我们的代理AI代理工作流程如下。下面的每个工具都有特定的任务,以便指导LLM如何执行它以及预期什么。这对于保持整个流程准确以达到目标非常重要:
(1) 获取/检索 最新的10个历史+当前交易评估数据集,针对特定资产从我们的数据存储(Elastic)
注意:您可以将其扩展到您认为足够让模型了解的大小。
(2) 获取/检索 最新的KPI指标、算法、市场状况从我们的数据存储(Elastic)
(3) 获取最新价格 特定资产从加密货币交易所平台。在“indexPrice”, “lastPrice” 和 “markPrice” — 中选择最佳(最低/最高),这在设定/建议交易的入场价时将重要。
(4) 获取最新的市场新闻数据集 从互联网(网页、文章、社交媒体、经济公告)。我们需要这个来感受市场状况和方向
(5) 在收集了所有数据集之后,进行初步评估 以应用判断。根据您的角色 对所有收集的数据集进行推理。
(6) 在基于所有数据集做出判断后,重新评估 并特别关注数据集中的特定KPI,并根据目标的利润和损失范围进行最终要求。
这完成了工作流程,我们得到了最终响应。当然我们可以有后续对话,但在此时主要决定已经决定了。

3、代码
这里是代码的一部分…
导入你的模块
from __future__ import annotations
import os
import json
import re
import traceback
from datetime import datetime
from dotenv import load_dotenv
import pandas as pd
from pydantic import BaseModel
# 可选的Tavily(网络搜索)
_tavily_ok = True
try:
from langchain_tavily import TavilySearch
except Exception:
_tavily_ok = False
# LangChain + OpenAI兼容导入
try:
from langchain_openai import ChatOpenAI
except Exception:
from langchain.chat_models import ChatOpenAI # 更早版本的langchain
from langchain.agents import initialize_agent, AgentType, tool, Tool
# 新增工具调用代理选项A
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import SystemMessage
try:
from langchain.memory import ConversationBufferMemory
except Exception:
from langchain.memory import ConversationBufferMemory
try:
from langchain.prompts.chat import MessagesPlaceholder
except Exception:
from langchain.prompts import MessagesPlaceholder
# Elasticsearch客户端SDK
from elasticsearch import Elasticsearch
# UI
import gradio as gr
# Bybit世界
from pybit.unified_trading import HTTP
import time
设置你的ENV和客户端
load_dotenv("(YOUR PATH)/.env")
ES_URL=os.environ["ES_URL"]
ES_INDEX=os.environ["ES_INDEX"]
ES_SSL_VERIFY_CERTS=os.environ["ES_SSL_VERIFY_CERTS"]
ES_CACERT=os.environ["ES_CACERT"]
ES_CAKEY=os.environ["ES_CAKEY"]
ES_USER=os.environ["ES_USER"]
ES_PASSWORD=os.environ["ES_PASSWORD"]
TODAY = datetime.utcnow().strftime("%B %d, %Y")
# OpenAI模型(环境变量OPENAI_API_KEY应该存在)
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
# Elastic客户端
es = Elasticsearch(
[os.environ["ES_URL"]],
basic_auth=(os.environ["ES_USER"], os.environ["ES_PASSWORD"]),
verify_certs=os.environ['ES_SSL_VERIFY_CERTS'],
ca_certs=os.environ['ES_CACERT'],
client_key=os.environ['ES_CAKEY'],
request_timeout= 60
)
print(es)
# 加密货币交易所客户端
session = HTTP(
testnet=False,
api_key=os.environ["EXCHANGE_API_KEY"],
api_secret=os.environ["EXCHANGE_API_SECRET"],
timeout=int(os.environ["EXCHANGE_API_TIMEOUT"])
)
然后,我们将开始设置模型在整个工作流中使用的工具。首先让我们检查设置函数工具的结构。你听说过Pydantic吗?
它是Python中最广泛使用的数据验证库,也是代理框架的核心。我们使用它来设置模式并验证函数的输入
# 使用 'BaseModel' 设置你的模式
class ElasticGetDatasetInput(BaseModel):
es_index: str
symbol_asset: str
instruction: str
# 让工具知道这是它在执行此工具时将使用的模式
@tool(args_schema=ElasticGetDatasetInput)
# 构建你的函数工具
def elastic_get_dataset(es_index: str, symbol_asset: str, instruction: str) -> str:
# 你的注释在这里。引导LLM如何执行以及期望什么
""" 文本 """
代码 ....
# 返回你希望LLM将其输入到其记忆中并了解的内容
return
示例(这是数据集收集工具):
class ElasticGetDatasetInput(BaseModel):
es_index: str
symbol_asset: str
instruction: str
@tool(args_schema=ElasticGetDatasetInput)
def elastic_get_dataset(es_index: str, symbol_asset: str, instruction: str) -> str:
"""
目的:从Elasticsearch索引中获取给定symbol_asset的最新历史数据集,并返回JSON。
检索的文档包含所有需要的指标KPI,用于对这个资产的趋势、行为进行分析
你将稍后使用它来与最新检索的数据集进行比较,以做出判断
何时使用:使用此工具从索引'trades_assessments_micka'中获取资产的最新历史数据集,以分析其模式、趋势和成功或失败的交易。
"""
query = {
"_source": {"excludes": ["M_*", "timestamp_updated_win_*", "status_at_*", "timestamp_updated_*", "customer", "FAILED_PURCHASED"]},
"sort": [
{
"timestamp": {
"order": "desc"
}
}
],
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"symbol.keyword": symbol_asset
}
},
{
"exists": {
"field": "btc_price_difference_max_7d"
}
},
{
"exists": {
"field": "high_supply_vs_demand"
}
},
{
"exists": {
"field": "btc_price_difference_min_7d"
}
},
{
"exists": {
"field": "outcome_02.keyword"
}
},
{
"match": {
"side.keyword": "Sell"
}
}
],
"filter": [
{
"range": {
"timestamp": {
"gte": "now-90d/m",
"lte": "now/m"
}
}
}
]
}
}
}
}
res = es.search(index=es_index, scroll="1m", body=query)
hits = res.get("hits", {}).get("hits", [])
records = [h.get("_source", {}) for h in hits]
if not records:
return json.dumps({"shape": [0, 0], "columns": [], "sample": [], "note": f"No records for {symbol_asset} in {es_index}."}, ensure_ascii=False)
df = pd.json_normalize(records)
# 轻量级数值强制转换
for col in df.columns:
if df[col].dtype == object:
try:
df[col] = pd.to_numeric(df[col])
except Exception:
pass
payload = {
"sample": df.head(min(50, len(df))).to_dict(orient="records"),
}
return json.dumps({
"dataset": payload,
"instruction": instruction
},ensure_ascii=False)
推理工具:
class ReasonsInput(BaseModel):
dataframe_json: str
instruction: str
@tool(args_schema=ReasonsInput)
def reasons_based_on_dataset(dataframe_json: str, instruction: str) -> str:
"""
目的:读取之前工具'relastic_get_dataset','search_crypto_info','elastic_get_latest_dataset','bybit_get_price_now'的结果,
并确定应进行的交易。此时是做多还是做空。
何时使用:为了基于所有运行工具的结果进行推理,以便进行交易预测
"""
return json.dumps(
{
"task": instruction,
"today": TODAY,
},
ensure_ascii=False,
)
你会注意到TODAY变量,我发现它很重要,因为它设定了时间点,让LLM模型知道给出最近的信息,尤其是在浏览网络时非常有用。因此,这个结构对于我们在代码中定义的所有工具都是如此。
然后你确保你分组你的工具,设置LLM模型的参数,并最重要的是你的提示。
# LLM模型
llm = ChatOpenAI(
model="gpt-5",
api_key=OPENAI_API_KEY,
streaming=True,
temperature=0,
reasoning={"effort": "medium"} # https://platform.openai.com/docs/guides/reasoning#get-started-with-reasoning
)
# 系统角色
system = """ SET YOUR SYSTEM ROLE"""
# 提示
prompt = ChatPromptTemplate.from_messages([
SystemMessage(content=system),
MessagesPlaceholder(variable_name="chat_history", optional=True),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
agent_core = create_tool_calling_agent(llm, tools, prompt)
agent = AgentExecutor(
agent=agent_core,
tools=tools,
verbose=True,
max_iterations=10,
handle_parsing_errors=True,
return_intermediate_steps=False,
memory=memory
)
return agent, memory
设置我们的UI(Gradio):
with gr.Blocks(fill_height=True, css="#chat {height: 65vh;}") as demo:
gr.Markdown("## FTDanalytics Trading")
with gr.Tab("Pipeline"):
es_index = gr.Textbox(label="Elasticsearch index", placeholder="e.g., crypto_candles", value="")
symbol_asset = gr.Textbox(label="symbol_asset", placeholder="e.g., BTCUSDT", value="")
instruction = gr.Textbox(label="Instruction", value="Based on recent momentum and risk, should I go long or short? Explain briefly.", lines=2)
include_web = gr.Checkbox(label="Include web search (latest 24h)", value=True)
run_btn = gr.Button("Run decision", variant="primary")
final_json = gr.Code(label="Final JSON result")
final_msg = gr.Markdown(label="Message / Decision")
def on_run(es_index_v, symbol_asset_v, instr_v, include_web_v):
try:
result = sequential_decision(
es_index=str(es_index_v).strip(),
symbol_asset=str(symbol_asset_v).strip(),
instruction=str(instr_v).strip(),
include_web_search=bool(include_web_v),
)
msg = result.get("message", "")
dec = result.get("decision", "")
md = f"**Decision:** `{dec}`\n\n{msg}" if msg else f"**Decision:** `{dec}`"
return json.dumps(result, ensure_ascii=False, indent=2), md
except Exception as e:
err = f"ERROR: {e}\n\n{traceback.format_exc()}"
return err, "**Error**\n\n````\n" + err + "\n````"
run_btn.click(on_run, inputs=[es_index, symbol_asset, instruction, include_web], outputs=[final_json, final_msg])
with gr.Tab("Chat (ad-hoc)"):
state = gr.State({})
chat = gr.Chatbot(label="Conversation", elem_id="chat")
with gr.Row():
msg = gr.Textbox(label="Input", placeholder="Ask something…", lines=2, scale=4)
send = gr.Button("Send", variant="primary", scale=1, min_width=100)
clear = gr.Button("Clear", scale=1, min_width=100)
def on_submit(user_input, chat_history, session_state):
try:
if "agent" not in session_state:
a, mem = build_agent_with_memory()
session_state["agent"] = a
session_state["memory"] = mem
else:
a = session_state["agent"]
result = _agent_call(a, user_input)
chat_history = chat_history + [(user_input, str(result))]
return chat_history, "", session_state
except Exception as e:
err = f"ERROR: {e}\n\n{traceback.format_exc()}"
chat_history = chat_history + [(user_input, err)]
return chat_history, "", session_state
msg.submit(on_submit, inputs=[msg, chat, state], outputs=[chat, msg, state])
send.click(on_submit, inputs=[msg, chat, state], outputs=[chat, msg, state])
clear.click(lambda: ([], "", {}), inputs=None, outputs=[chat, msg, state])
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7865, show_error=True)
一旦系统启动,这就是我们的前端界面的样子:

让我们开始一段关于资产的对话……假设我是一个对交易一无所知的交易者或投资者,但想在这个领域增长我的投资。我会让我们的代理AI代理告诉我是否应该购买特定的加密货币代币以及在什么价格,也许……我的(*止盈)*和(*止损)*应该是什么。我们将使用两种不同的模型来执行此操作,Chap-GPT5在左边和DeepseekV3(推理模式)在右边。
Chat-GPT5在大约2分钟内完成了它的运行,而DeepseekV3在不到一分钟内完成,大约50秒。它们被给予了相同的数据集进行处理。它们都得出结论,采取长期头寸,我将在下面贴出详细信息:
DeepseekV3:
## **对OPUSDT做多**
**做多的关键原因:**
1. **技术动量**:
- 当前RSI为33.42(超卖区域),表明潜在反弹
- 1H MACD显示改善(-0.004122 vs 之前的-0.005412)
- ROC_9D为-2.96%,但显示出从更深的负值中恢复的迹象
2. **供需动态**:
- 高供应与需求为44.42%(买家 > 卖家)
- 市场显示出恢复,市场_count_now为178 vs 104之前
3. **价格行动**:
- 当前价格为0.4069,显示出从近期低点的恢复
- 近24小时表现:-3.53%,但显示出稳定化的迹象
- 历史数据显示,当RSI处于这个范围时,长期头寸的成功率较高
4. **市场背景**:
- BTC表现出强劲(BTC价格为110,152.6)
- 最近的网络搜索显示更广泛的加密货币市场复苏动量
- 历史交易显示在类似条件下长期头寸的成功率更高
**风险管理**:
- **止盈**: 2%(目标 ~0.4149)
- **止损**: 1%(止损 ~0.4028)
Chat-GPT5
{"message": "OPUSDT显示日内动量向上转变:1h MACD > 信号(看涨转折),RSI在分钟/小时框架上强劲(M ~68, H ~51),市场广度正在改善(market_count_now 178 > 15m 154 > 30m 101)。价格在过去几小时内反弹(7h→1h: 0.3978 → 0.4039),BTC稳定/上涨,RSI ~46。阻力:整体趋势仍疲软(ROC_9D负,1D/7D下跌),高供应与需求低于50%(~44% → 卖家仍略微占优),以及代币解锁(~31.3M OP)增加了供应风险。在2% TP / 1% SL下,短期广度 + 1h动量有利于快速做多而非做空(后者面临挤仓风险)。交易计划:以 ~0.4069 入场,TP ~0.415 (+~2%),SL ~0.403 (−~1%)。如果BTC明显走弱或广度逆转(例如,market_count_now急剧下降)或OP迅速跌破0.403,则无效。",
"decision": "long"
}
(Chat-GPT5) 推理过程。以下是工具在后台被调用的情况。请注意LLM根据每个工具的注释生成的指令:
调用: `elastic_get_latest_dataset` with `{'es_index': 'long_crypto_statistics', 'symbol_asset': 'OPUSDT', 'instruction': '获取OPUSDT的最新KPI快照,包括RSI、MACD、ROC、cmc_rank、high_supply_vs_demand、btc_*字段、candle_*字段、百分位数和价格差异。'}`
"task": "获取OPUSDT的最新KPI快照,包括RSI、MACD、ROC、cmc_rank、high_supply_vs_demand、btc_*字段、candle_*字段、百分位数和价格差异。"}
调用: `bybit_get_price_now` with `{'symbol_asset': 'OPUSDT', 'instruction': '获取OPUSDT的最新现货价格。'}`
"instruction": "获取OPUSDT的最新现货价格。"
调用: `search_crypto_info` with `{'query': 'OPUSDT OP token news analysis RSI MACD market sentiment Binance Bybit CoinMarketCap Crypto news last 24 hours', 'instruction': '总结最近的相关催化剂、上市、解锁、重大合作伙伴关系、监管头条,这些可能会影响OP(Optimism)价格在未来24-72小时内。'}`
"task": "总结最近的相关催化剂、上市、解锁、重大合作伙伴关系、监管头条,这些可能会影响OP(Optimism)价格在未来24-72小时内。"}
调用: `reasons_based_on_dataset` with `{'dataframe_json': '{"latest_dataset": {"percentiles_1": 0.40324193581461903, "market_count_15m": 154, "ROC_9D": -2.958721068957282, "btc_price_difference_min_7d": 5.343661837134802, "percentiles_5": 0.42909647607658147, "percentiles_99": 0.836462241128087, "RSI_NOW_H": 50.74896163237766, "cmc_rank": 81, "MACD_1H_BELOW_FLAT_AVG": -489.1891891891892, "percentiles_95": 0.8120397941343618, "price_diff_now_7d": 0.44410295934366756, "RSI_NOW_M": 67.8518344007476, "btc_price_max_7d": 112367.0078125, "ROC_9D_H_BELOW_AVG": false, "worked": 0.017776299728436307, "btc_candle_7h_closed": 109475.2, "RSI_NOW_H_BELOW_AVG": false, "MACD_M_5_BELOW_AVG": false, "MACD_M_5": 0.001648, "btc_price_low_hit_occured": false, "MACD_1H_BELOW_MIN": false, "percentage_24": -0.035341, "MACD_M_1": 0.00059, "roc_9d_btc": 2.394096879917562, "candle_7h.closed": 0.3978, "ROC_CURVED": true, "ROC_CURVED_DAY": false, "btc_candle_4h_closed": 109761.4, "zoom_8d_avg": -0.006538106723069938, "btc_candle_4d_closed": 112112.0, "btc_price_difference_max_7d": -1.9706921592101498, "candle_7d.closed": 0.4381, "MACD_M_1_BELOW_MIN": false, "zoom_8d_max_price": 0.4068, "ROC_CURVED_DAY_POSITIVE": false, "ROC_CURVED_DAY_NEGATIVE": true, "market_count_now": 178, "candle_3h.closed": 0.3982, "candle_3d.closed": 0.4249, "track_candle_up_count": 132.0, "MACD_1H": -0.004122, "RSI_NOW_M_1_BELOW_AVG": false, "candle_1d.closed": 0.3962, "rsi": 33.41832711913045, "ROC_AVG_30D_5MIN": -0.5727142042426361, "volume_now": 140946339.22324252, "track_candle_down_avg": 1.8135593220338984, "candle_1h.closed": 0.4039, "btc_candle_6h_closed": 109169.3, "ROC_9D_M_1": 0.4197530864197496, "RSI_NOW_M_BELOW_AVG": false, "btc_avg_7d_mark": 111494.8645710022, "timestamp": "2025-10-31T12:18:15.325839", "price_difference_7d_ago": -8.069620253164558, "btc_candle_3h_closed": 109656.4, "rsi_btc": 45.95179206788483, "side": "Sell", "percentiles_5_below": 0.42909647607658147, "btc_candle_7d_closed": 110618.8, "market_count_30m": 101, "ROC_9D_M_1_BELOW_MIN": false, "MACD_SIGNAL_LINE_M_5": 0.001162, "price_1d_ago": 0.4217, "ROC_CURVED_HOUR_POSITIVE": false, "ROC_9D_M_BELOW_MIN": false, "MACD_DAY_CURVED": false, "MACD_SIGNAL_LINE_M_1": 0.000531, "price_difference_1d_ago": -3.5570310647379686, "track_candle_down_count": 214.0, "price_diff_now_1d": 0.40359999895095827, "RSI_AVG_30D_1MIN": 25.966590346661647, "price_diff_change_10min_1": 0.012288, "price_7d_ago": 0.4424, "btc_candle_3d_closed": 109056.2, "btc_price_low_hit": false, "candle_4h.closed": 0.3971, "candle_4d.closed": 0.426, "percentiles_50": 0.705925970927869, "candle_2d.closed": 0.3859, "RSI_NOW": 33.41832711913045, "tendancies_pct_down": 718.8275862068965, "RSI_NOW_M_1": 66.94240778350334, "ROC_9D_H_BELOW_MIN": false, "RSI_NOW_H_BELOW_MIN": false, "MACD_M_5_BELOW_MIN": false, "RSI_CURVED_H": false, "MACD_1H_BELOW_AVG": false, "zoom_8d_price": 0.44107422710498545, "btc_candle_6d_closed": 111187.8, "tendancies_pct_up": 669.3103448275862, "track_candle_up_avg": 1.4831460674157304, "MACD_M_1_BELOW_AVG": false, "volume_bybit_90d": 51006848.2471527, "price_now": 0.4068, "candle_5d.closed": 0.4477, "roc_9d": -2.958721068957282, "price_diff_change_10min": 0.015938, "candle_5h.closed": 0.3962, "btc_candle_2d_closed": 106225.0, "macd_btc": -1030.854614, "btc_candle_2h_closed": 109409.2, "RSI_NOW_M_1_BELOW_MIN": false, "macd": -0.051564, "macd_sline": -0.057685, "RSI_CURVED": false, "ROC_AVG_30D_1MIN": -0.30851523878418874, "btc_price_now": 110152.6, "percentiles_25_below": 0.5688568147775508, "RSI_NOW_M_BELOW_MIN": false, "candle_6h.closed": 0.3981, "ROC_9D_M": 1.7767767767767673, "high_supply_vs_demand": 44.41676158808684, "RSI_AVG_30D_5MIN": 26.409722497313652, "macd_btc_sline": -1122.959361, "ROC_9D_M_1_BELOW_AVG": false, "ROC_CURVED_NOW": false, "ROC_9D_M_BELOW_AVG": false, "btc_candle_5h_closed": 109154.8, "btc_candle_5d_closed": 113777.3, "volume_90d": 193669990.9976871, "btc_candle_1d_closed": 108223.0, "btc_price_min_7d": 104565.0, "symbol": "OPUSDT", "candle_2h.closed": 0.3989, "candle_6d.closed": 0.4393, "MACD_1H_SIGNAL_LINE": -0.00626, "volume_bybit_now": "34246475.8006", "ROC_9D_H": 1.2951432129514329, "btc_candle_1h_closed": 110090.0, "ROC_CURVED_HOUR_NEGATIVE": false}, "historical_sample": {"timestamp_updated": "2025-10-31T12:22:09.108254", "side": "Sell", "outcome_02": "win", "percentage_difference": -21.107871720116613, "macd_60min": -0.005388, "MACD_1H_SIGNAL_LINE": -0.00686, "RSI_NOW": 31.704581441578682, "RSI_NOW_H": 40.23476913485378, "RSI_NOW_M": 47.68294416424075, "high_supply_vs_demand": 47.45316556186655, "btc_candle_1h_closed": 109555.0, "candle_1h.closed": 0.3989, "market_count_now": 104, "market_count_15m": 114, "market_count_30m": 105, "btc_price_difference_max_7d": -2.498783110061292, "btc_price_difference_min_7d": 4.776167933821066}, "web_search_summary": {"catalysts": ["OP token unlock around Oct 31 (~31.34M OP, ~1.7% of supply) may add supply pressure", "Some technical pieces suggest MACD histogram turning positive and RSI recovery from oversold; a close above ~$0.45 seen as bullish trigger", "General market breadth mixed lately but improving intraday; BTC steady to slightly up"], "sentiment": "mixed-to-cautious: rebound attempts vs. unlock-driven supply"}, "price_now": {"bybit_bid": 0.4069, "bybit_ask": 0.4072}}', 'instruction': '使用历史数据集、最新KPI、实时价格和网络新闻,决定条件是否有利于做多(买入OPUSDT)或做空(卖出OPUSDT),2% TP和1% SL。注意:market_count_now/15m/30m,RSI,MACD与信号(percentage_difference),ROC,BTC蜡烛和百分比变化,high_supply_vs_demand,cmc_rank,price_difference_1d_ago/7d,以及OP和BTC蜡烛。返回简洁的推理和一方。'}`
{"task": "使用历史数据集、最新KPI、实时价格和网络新闻,决定条件是否有利于做多(买入OPUSDT)或做空(卖出OPUSDT),2% TP和1% SL。注意:market_count_now/15m/30m,RSI,MACD与信号(percentage_difference),ROC,BTC蜡烛和百分比变化,high_supply_vs_demand,cmc_rank,price_difference_1d_ago/7d,以及OP和BTC蜡烛。返回简洁的推理和一方。", "today": "October 31, 2025"}
调用: `re_assess_based_on_all_gathered_facts` with `{'instruction': '使用所有收集的事实重新评估OPUSDT的最终交易决策,2%止盈和1%止损。考虑广度(market_count_now/15m/30m)、百分位数、ROC、MACD、RSI、BTC和OP蜡烛、cmc_rank、价格差异、high_supply_vs_demand (>0买家>卖家),以及来自网络搜索的代币解锁催化剂。输出最终的一方(做多或做空)和简短的理由。', 'text': '最新数据集突出显示:market_count_now 178(更强的广度)对比15m 154和30m 101(改善的广度)。OP最后价格约0.4069/0.4072。RSI_NOW约33(略显超卖),RSI_NOW_H约50.7,RSI_NOW_M约67.9(短期力量)。MACD_1H -0.0041 vs signal -0.00626(MACD高于信号 -> 1H看涨转折)。ROC_9D -2.96(弱),但ROC_9D_M +1.78(相比中期改善)。high_supply_vs_demand 44.4%(卖家>买家)。BTC稳定/上涨,1h蜡烛110090,RSI BTC约46,BTC MACD改善;BTC 7d差值最小+5.34%和最大-1.97%表明最近反弹。OP蜡烛:7h:0.3978, 6h:0.3981, 5h:0.3962, 4h:0.3971, 3h:0.3982, 2h:0.3989, 1h:0.4039 → 日内反弹。price_difference_1d_ago -3.56%(下跌1d),price_difference_7d_ago -8.07%(下跌7d)。cmc_rank约81(中盘)。网络:OP代币解锁约31.34M在10月31日(约1.7%供应)→ 可能的短期供应压力;一些报道提到RSI恢复和MACD在> $0.45突破时转为积极。风险框架:2% TP,1% SL。做多:入场0.407 -> TP ~0.415,SL ~0.403;反弹可能实现2%如果动量持续;但供应/需求显示卖家主导和解锁风险。做空:入场0.407 -> TP ~0.399,SL ~0.411;对抗改善的广度和1H MACD交叉。最终交易应权衡短期动量与解锁供应压力。'}`
{"message": "最新数据集突出显示:market_count_now 178(更强的广度)对比15m 154和30m 101(改善的广度)。OP最后价格约0.4069/0.4072。RSI_NOW约33(略显超卖),RSI_NOW_H约50.7,RSI_NOW_M约67.9(短期力量)。MACD_1H -0.0041 vs signal -0.00626(MACD高于信号 -> 1H看涨转折)。ROC_9D -2.96(弱),但ROC_9D_M +1.78(相比中期改善)。high_supply_vs_demand 44.4%(卖家>买家)。BTC稳定/上涨,1h蜡烛110090,RSI BTC约46,BTC MACD改善;BTC 7d差值最小+5.34%和最大-1.97%表明最近反弹。OP蜡烛:7h:0.3978, 6h:0.3981, 5h:0.3962, 4h:0.3971, 3h:0.3982, 2h:0.3989, 1h:0.4039 → 日内反弹。price_difference_1d_ago -3.56%(下跌1d),price_difference_7d_ago -8.07%(下跌7d)。cmc_rank约81(中盘)。网络:OP代币解锁约31.34M在10月31日(约1.7%供应)→ 可能的短期供应压力;一些报道提到RSI恢复和MACD在> $0.45突破时转为积极。风险框架:2% TP,1% SL。做多:入场0.407 -> TP ~0.415,SL ~0.403;反弹可能实现2%如果动量持续;但供应/需求显示卖家主导和解锁风险。做空:入场0.407 -> TP ~0.399,SL ~0.411;对抗改善的广度和1H MACD交叉。最终交易应权衡短期动量与解锁供应压力。", "decision": ""}[{'type': 'text', 'text': '{\n "message": "OPUSDT shows an intraday momentum turn up: 1h MACD > signal (bullish inflection), RSI on minute/hour frames is strong (M ~68, H ~51), and market breadth is improving (market_count_now 178 > 15m 154 > 30m 101). Price has bounced across the past hours (7h→1h: 0.3978 → 0.4039), with BTC stable/up and RSI ~46. Headwinds: broader trend remains weak (ROC_9D negative, 1D/7D drawdowns), high_supply_vs_demand is sub-50% (~44% → sellers still slightly dominant), and a token unlock (~31.3M OP) adds supply risk. With a 2% TP / 1% SL, the short-term breadth + 1h momentum favors a quick long scalp over a short (which risks a squeeze). Trade plan: enter ~0.4069, TP ~0.415 (+~2%), SL ~0.403 (−~1%). Invalidate if BTC weakens materially or breadth reverses (e.g., market_count_now drops sharply) or OP loses 0.403 quickly.",\n "decision": "long"\n}'}
OpenAI的优点之一是你可以轻松地追溯你的对话来权衡你的token使用情况并相应地微调你的代理:

我的对话消耗了大约50k tokens。你可以看到调用了哪些工具以及推理级别:

好了,这完成了我们如何利用代理AI在加密货币领域的讲解。
原文链接:Leveraging Agentic AI in the Crypto trading sector
DefiPlot翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。