自用策略初始提交
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+38
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<TCStageLayout>
|
||||||
|
<control note="控件">
|
||||||
|
<variable note="控件">
|
||||||
|
<item position="" bind="策略名称" value="xg雪球界面" note="策略名称" name="策略名称" type="intput" />
|
||||||
|
<item position="" bind="标记" value="作者:索普量化,微信:xms_quants1" note="标记" name="标记" type="intput" />
|
||||||
|
<item position="" bind="授权码" value="0xd5e814335dd5e19830fd29e14462070f4716b85fea8c34da8378dd0b707e1893607490ea1eeaba8b7c2304ebcccbae30bef3c42e3d262a04268b8894362d977f76f691526c8f11e49822b79974c3b1954b4182647597b76b29be63be246109cd57f60cf0c7d57c1ff80240e67b001f98c536dd06927ceda8d04b932055a49ff0abbd" note="授权码" name="授权码" type="intput" />
|
||||||
|
<item position="" bind="cookie" value="cookiesu=981748929995104; device_id=487d5816161db8ba0d0e25b548cb1bc6; smidV2=20250603135319c1705e137be8f01771f8398c66777f9000ab5c0df92154fa0; s=be1jsjr8bl; bid=f1b5e01be977a7023f9ec859cdf24ad4_mbg66d09; __utmz=1.1748934057.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); u=1342909666; xq_is_login=1; aliyungf_tc=d6ee7c9ec93eec9f500ec34bbfddcb20013f165fe38f6b6b48a24e9e4d5aaa1b; xq_a_token=fe11e9427682896c9dc7a8a445086ef68d4d1dbd; xqat=fe11e9427682896c9dc7a8a445086ef68d4d1dbd; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjEzNDI5MDk2NjYsImlzcyI6InVjIiwiZXhwIjoxNzYxNTcyNjM1LCJjdG0iOjE3NTg5ODA2MzU5NDMsImNpZCI6ImQ5ZDBuNEFadXAifQ.nqRzbWnv6K3_Juhh5Q53lF_UMJif-7NKBQln5dny13rbeqc5TBqwPTr9GU7NxIeJbDhDBskn-PLlS53_bT-pxO1MkbusPMNz98-BueB6-DZ5CJtZCqdtQUXhFJqXm4mLpNHK1wLCLJjjRxyU3-1logf1lDqQDCrDAar--G6aSugFK_ayxU1yXrT5BycS4SXfbVIIJt1CbUugT5Qs3CrgjHjcBqC24Q-owfzjFmHvJnxTs_2PYYNlMXT21B94k7dvNt-CrBKEKg01TklN5ihHcB99bbWsklL1P3j2DU-xvrRVo9WvLQ2tM5xkQr4UVBowpC-NhcFuSTMd6aGWZu3NUA; xq_r_token=f12d8baa95063cc9341d2a8ee5a78a45deefb9c0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1758247622,1758265058,1758291885,1758980641; HMACCOUNT=184FA7E7147838B3; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=GEF/cx00kxMXCqs58kwu08qLxljB/16JoBrmputnWbgjrZhh8AdSf68iBVp+h9EjFUc4ANkteyfQAwJ+957e6w%3D%3D; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1758980662; __utma=1.1154193993.1748934057.1754875149.1758980663.10; __utmc=1; __utmt=1; __utmb=1.2.10.1758980663" note="cookie" name="cookie" type="intput" />
|
||||||
|
<item position="" bind="是否测试" value="否" note="是否测试" name="是否测试" type="intput" />
|
||||||
|
<item position="" bind="测试长度" value="2" note="测试长度" name="测试长度" type="intput" />
|
||||||
|
<item position="" bind="买入价格编码" value="4" note="买入价格编码" name="买入价格编码" type="intput" />
|
||||||
|
<item position="" bind="卖出价格编码" value="6" note="卖出价格编码" name="卖出价格编码" type="intput" />
|
||||||
|
<item position="" bind="买入黑名单" value="600031.SH,600111.SZ" note="买入黑名单" name="买入黑名单" type="intput" />
|
||||||
|
<item position="" bind="卖出黑名单" value="600031.SH,600111.SZ" note="卖出黑名单" name="卖出黑名单" type="intput" />
|
||||||
|
<item position="" bind="剔除代码" value="688,40" note="剔除代码" name="剔除代码" type="intput" />
|
||||||
|
<item position="" bind="组合名称" value="西蒙斯测试1,西蒙斯测试2" note="组合名称" name="组合名称" type="intput" />
|
||||||
|
<item position="" bind="组合代码" value="ZH3368671,ZH3310823" note="组合代码" name="组合代码" type="intput" />
|
||||||
|
<item position="" bind="组合金额模式说明" value="总金额/自定义/比例" note="组合金额模式说明" name="组合金额模式说明" type="intput" />
|
||||||
|
<item position="" bind="组合金额模式" value="自定义" note="组合金额模式" name="组合金额模式" type="intput" />
|
||||||
|
<item position="" bind="组合比例" value="0.1,0.1" note="组合比例" name="组合比例" type="intput" />
|
||||||
|
<item position="" bind="组合金额" value="50000,60000" note="组合金额" name="组合金额" type="intput" />
|
||||||
|
<item position="" bind="不同组合间隔时间" value="1" note="不同组合间隔时间" name="不同组合间隔时间" type="intput" />
|
||||||
|
<item position="" bind="不成交撤单时间" value="300" note="不成交撤单时间" name="不成交撤单时间" type="intput" />
|
||||||
|
<item position="" bind="交易时间段" value="4" note="交易时间段" name="交易时间段" type="intput" />
|
||||||
|
<item position="" bind="交易开始时间" value="9" note="交易开始时间" name="交易开始时间" type="intput" />
|
||||||
|
<item position="" bind="交易结束时间" value="14" note="交易结束时间" name="交易结束时间" type="intput" />
|
||||||
|
<item position="" bind="是否参加集合竞价" value="是" note="是否参加集合竞价" name="是否参加集合竞价" type="intput" />
|
||||||
|
<item position="" bind="开始交易分钟" value="0" note="开始交易分钟" name="开始交易分钟" type="intput" />
|
||||||
|
<item position="" bind="通知发送方式说明" value="QQ/企业微信/钉钉" note="通知发送方式说明" name="通知发送方式说明" type="intput" />
|
||||||
|
<item position="" bind="通知发送方式" value="钉钉" note="通知发送方式" name="通知发送方式" type="intput" />
|
||||||
|
<item position="" bind="发送QQ" value="1029762153@qq.com" note="发送QQ" name="发送QQ" type="intput" />
|
||||||
|
<item position="" bind="接收QQ" value="1029762153@qq.com" note="接收QQ" name="接收QQ" type="intput" />
|
||||||
|
<item position="" bind="QQ掩码" value="jjfgdhklgguebdje" note="QQ掩码" name="QQ掩码" type="intput" />
|
||||||
|
<item position="" bind="企业微信token" value="1,1" note="企业微信token" name="企业微信token" type="intput" />
|
||||||
|
<item position="" bind="钉钉token" value="1,1" note="钉钉token" name="钉钉token" type="intput" />
|
||||||
|
</variable>
|
||||||
|
</control>
|
||||||
|
</TCStageLayout>
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import abc
|
||||||
|
import datetime
|
||||||
|
import re,json
|
||||||
|
import time
|
||||||
|
from typing import List
|
||||||
|
import requests
|
||||||
|
from log import logger
|
||||||
|
from misc import parse_cookies_str
|
||||||
|
|
||||||
|
|
||||||
|
class BaseFollower(metaclass=abc.ABCMeta):
|
||||||
|
"""
|
||||||
|
slippage: 滑点,取值范围为 [0, 1]
|
||||||
|
"""
|
||||||
|
|
||||||
|
LOGIN_PAGE = ""
|
||||||
|
LOGIN_API = ""
|
||||||
|
TRANSACTION_API = ""
|
||||||
|
CMD_CACHE_FILE = "cmd_cache.pk"
|
||||||
|
WEB_REFERER = ""
|
||||||
|
WEB_ORIGIN = ""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
#self.trade_queue = queue.Queue()
|
||||||
|
#self.expired_cmds = set()
|
||||||
|
|
||||||
|
self.s = requests.Session()
|
||||||
|
self.s.verify = False
|
||||||
|
|
||||||
|
self.slippage: float = 0.0
|
||||||
|
|
||||||
|
def login(self, user=None, password=None, **kwargs):
|
||||||
|
"""
|
||||||
|
雪球登陆, 需要设置 cookies
|
||||||
|
:param cookies: 雪球登陆需要设置 cookies, 具体见
|
||||||
|
https://smalltool.github.io/2016/08/02/cookie/
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
cookies = kwargs.get("cookies")
|
||||||
|
|
||||||
|
if cookies is None:
|
||||||
|
raise TypeError(
|
||||||
|
"雪球登陆需要设置 cookies, 具体见" "https://smalltool.github.io/2016/08/02/cookie/"
|
||||||
|
)
|
||||||
|
headers = self._generate_headers()
|
||||||
|
self.s.headers.update(headers)
|
||||||
|
|
||||||
|
self.s.get(self.LOGIN_PAGE)
|
||||||
|
|
||||||
|
cookie_dict = parse_cookies_str(cookies)
|
||||||
|
self.s.cookies.update(cookie_dict)
|
||||||
|
#extract_strategy_name(self, 'ZH1332574')
|
||||||
|
logger.info("登录成功")
|
||||||
|
|
||||||
|
def _generate_headers(self):
|
||||||
|
headers = {
|
||||||
|
"Accept": "application/json, text/javascript, */*; q=0.01",
|
||||||
|
"Accept-Encoding": "gzip, deflate, br",
|
||||||
|
"Accept-Language": "en-US,en;q=0.8",
|
||||||
|
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) "
|
||||||
|
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
||||||
|
"Chrome/54.0.2840.100 Safari/537.36",
|
||||||
|
"Referer": self.WEB_REFERER,
|
||||||
|
"X-Requested-With": "XMLHttpRequest",
|
||||||
|
"Origin": self.WEB_ORIGIN,
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
|
||||||
|
def check_login_success(self, rep):
|
||||||
|
"""检查登录状态是否成功
|
||||||
|
:param rep: post login 接口返回的 response 对象
|
||||||
|
:raise 如果登录失败应该抛出 NotLoginError """
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_login_params(self, user, password, **kwargs) -> dict:
|
||||||
|
"""生成 post 登录接口的参数
|
||||||
|
:param user: 用户名
|
||||||
|
:param password: 密码
|
||||||
|
:return dict 登录参数的字典
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def extract_strategy_name(self, strategy_url):
|
||||||
|
"""
|
||||||
|
抽取 策略名,主要用于日志打印,便于识别
|
||||||
|
:param strategy_url:
|
||||||
|
:return: str 策略名
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
#新增
|
||||||
|
def _query_zh_(self,userid):
|
||||||
|
|
||||||
|
url = 'https://im.xueqiu.com/im-comet/v2/sessions/1681984443-0/messages.json?user_id=%s&limit=%d' %(userid, 1)
|
||||||
|
chat_history = self.s.get(url).json()
|
||||||
|
for chat_record in chat_history:
|
||||||
|
new=chat_record['messageId']#获取messageId
|
||||||
|
messageType=chat_record['messageType']#获取messageId
|
||||||
|
starte='1'
|
||||||
|
if messageType=='VIEW':
|
||||||
|
view1 = json.loads(chat_record['view'])#策略代号
|
||||||
|
starte=view1['url'][21:] #策略代号
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
return new,starte
|
||||||
|
|
||||||
|
#非开盘时间调仓,补充
|
||||||
|
def minutes_2(self, strategys, userid, assets,**kwargs):
|
||||||
|
dayOfWeek = datetime.datetime.now().weekday()
|
||||||
|
time_n=datetime.datetime.now()
|
||||||
|
hour=str(time_n)[11:13]
|
||||||
|
minute=int(str(time_n)[14:16])
|
||||||
|
print(time_n)
|
||||||
|
if dayOfWeek<=4 and ((hour=='09' and minute<32 and minute>=30) or (hour=='13' and minute<2)) :
|
||||||
|
#if dayOfWeek<=6 or (hour=='11' or minute<=59):
|
||||||
|
for j in range(0,len(strategys)):
|
||||||
|
print('开盘自动监测中......',strategys[j])
|
||||||
|
try:
|
||||||
|
transactions = self.query_strategy_transaction(strategys[j], assets[j],**kwargs)
|
||||||
|
if len(transactions)>0:
|
||||||
|
return transactions
|
||||||
|
except Exception as e:
|
||||||
|
#logger.exception("无法获取策略 %s 调仓信息, 错误: %s, 跳过此次调仓查询", name, e)
|
||||||
|
time.sleep(3)
|
||||||
|
if j < len(strategys)-1:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def track_strategy_worker(self, strategys, userid,users, assets, interval=10, **kwargs):
|
||||||
|
|
||||||
|
"""跟踪下单worker
|
||||||
|
:param strategy: 策略id
|
||||||
|
:param name: 策略名字
|
||||||
|
:param interval: 轮询策略的时间间隔,单位为秒"""
|
||||||
|
old,starte=self._query_zh_(userid)
|
||||||
|
|
||||||
|
transactions=[]
|
||||||
|
k=0
|
||||||
|
while True:
|
||||||
|
k=k+1
|
||||||
|
print(k)
|
||||||
|
if k>=100:
|
||||||
|
return []
|
||||||
|
|
||||||
|
#前两分钟补充,非开盘调仓
|
||||||
|
minutes_2_data=self.minutes_2( strategys, userid, assets,**kwargs)
|
||||||
|
if not minutes_2_data is None and len(minutes_2_data)>0:
|
||||||
|
return minutes_2_data
|
||||||
|
|
||||||
|
try:
|
||||||
|
new,starte_n=self._query_zh_(userid)#新增
|
||||||
|
except:
|
||||||
|
time.sleep(5)
|
||||||
|
|
||||||
|
for j in range(0,len(strategys)):
|
||||||
|
print('自动监测中......',strategys[j])
|
||||||
|
if new != old and starte_n==strategys[j]:
|
||||||
|
#if new == old:
|
||||||
|
old=new
|
||||||
|
try:
|
||||||
|
transactions = self.query_strategy_transaction(strategys[j], assets[j],**kwargs)
|
||||||
|
|
||||||
|
if len(transactions)>0:
|
||||||
|
k=5
|
||||||
|
return transactions
|
||||||
|
if k==5:
|
||||||
|
break
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception("无法获取策略 %s 调仓信息, 错误: %s, 跳过此次调仓查询", e)
|
||||||
|
time.sleep(3)
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def query_strategy_transaction(self, strategy,assets, **kwargs):
|
||||||
|
|
||||||
|
params = self.create_query_transaction_params(strategy)
|
||||||
|
|
||||||
|
rep = self.s.get(self.TRANSACTION_API, params=params)
|
||||||
|
|
||||||
|
history = rep.json()
|
||||||
|
|
||||||
|
transactions = self.extract_transactions(history)
|
||||||
|
|
||||||
|
return self.project_transactions(transactions,assets, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def extract_transactions(self, history) -> List[str]:
|
||||||
|
"""
|
||||||
|
抽取接口返回中的调仓记录列表
|
||||||
|
:param history: 调仓接口返回信息的字典对象
|
||||||
|
:return: [] 调参历史记录的列表
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def create_query_transaction_params(self, strategy) -> dict:
|
||||||
|
"""
|
||||||
|
生成用于查询调参记录的参数
|
||||||
|
:param strategy: 策略 id
|
||||||
|
:return: dict 调参记录参数
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def project_transactions(self, transactions, **kwargs):
|
||||||
|
|
||||||
|
"""
|
||||||
|
修证调仓记录为内部使用的统一格式
|
||||||
|
:param transactions: [] 调仓记录的列表
|
||||||
|
:return: [] 修整后的调仓记录
|
||||||
|
"""
|
||||||
|
pass
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger("easytrader")
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
logger.propagate = False
|
||||||
|
|
||||||
|
fmt = logging.Formatter(
|
||||||
|
"%(asctime)s [%(levelname)s] %(filename)s %(lineno)s: %(message)s"
|
||||||
|
)
|
||||||
|
ch = logging.StreamHandler()
|
||||||
|
|
||||||
|
ch.setFormatter(fmt)
|
||||||
|
logger.handlers.append(ch)
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def parse_cookies_str(cookies):
|
||||||
|
"""
|
||||||
|
parse cookies str to dict
|
||||||
|
:param cookies: cookies str
|
||||||
|
:type cookies: str
|
||||||
|
:return: cookie dict
|
||||||
|
:rtype: dict
|
||||||
|
"""
|
||||||
|
cookie_dict = {}
|
||||||
|
for record in cookies.split(";"):
|
||||||
|
key, value = record.strip().split("=", 1)
|
||||||
|
cookie_dict[key] = value
|
||||||
|
return cookie_dict
|
||||||
|
|
||||||
|
|
||||||
|
def file2dict(path):
|
||||||
|
with open(path, encoding="utf-8") as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def grep_comma(num_str):
|
||||||
|
return num_str.replace(",", "")
|
||||||
|
|
||||||
|
|
||||||
|
def str2num(num_str, convert_type="float"):
|
||||||
|
num = float(grep_comma(num_str))
|
||||||
|
return num if convert_type == "float" else int(num)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
cookies,"acw_tc=1a0c640d17531935616981938e006ef252a0559897fab0bba4f9d895a29e9a; cookiesu=511753193562165; device_id=5e4e14f7b544ff2991451c65d5126572; smidV2=202507222212422c69577824fd4da6831e70eaef7c9a0100997f287400fde20; s=aj11k1j1hi; __utma=1.531231151.1753193728.1753193728.1753193728.1; __utmz=1.1753193728.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=1.1.10.1753193728; Hm_lvt_1db88642e346389874251b5a1eded6e3=1753193563,1753193898; HMACCOUNT=D1422B20F0A5BD81; remember=1; xq_a_token=3b113cc4b2ac7d22e86c8eb73d3c8f3fd2d1536b; xqat=3b113cc4b2ac7d22e86c8eb73d3c8f3fd2d1536b; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjMxMDU0NjU2MDgsImlzcyI6InVjIiwiZXhwIjoxNzU0NzAyNDg3LCJjdG0iOjE3NTMxOTM5MTExMzEsImNpZCI6ImQ5ZDBuNEFadXAifQ.LdPrdejNMPM-ajyiurRu4Ibp4ONJ7E_pJ2YpG1yUnXMmQfDjC6ZHZm7YyIuWd1Ly7NZTYK4VrWo2A5nZtQ5pP-4u2wMCCiihxqBcW3njMpvIBstPwxDC8UUy1cmWCp_r2vrKqt0tMIJ4znqZmcf0SAJIuLgfTV6EJ5bxkuPnmSuTHuEAMRX0trBUNmHw0k9pBv8tvquDF_eq-5yJn-VDYUCxXQ2wxJs9sxfJEh6hEkOKGiELhXCXd2s92ga8h9OmshH69nRr0dFsn-jmAz7K_g8ZcpeZqdp7JImuSBAH21ZlJ3C6tXm5PNQin1Guv-s9NzhZhClP_ttkjqmCWE2uDA; xq_r_token=0be44e56eb527c2082c3fdb0c025c13098c60dfd; xq_is_login=1; u=3105465608; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1753194584; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=ohr0r8Af2tz/pULn7oDoWuu08XH8sq/VO2dgPV6B0qsNcf60jDeYHGq9iVQhxZt7wr+fbtczD910dfZzePOeyw%3D%3D; ssxmod_itna=iqGxgDuD90KrG0D27DBGDRDUx4eLqiK4GHDyxWF50CGDLxn4KGdYRaGwb8DcGi=jMbN4gnGo5D/mjkeDZDG9dDqx0ErXKWhAeP8YjkEepkQYOm+33itDwxm7/FxEx5Yo75o8gqlpNZSXKgYDU4GnD06QKE+rDYYfDBYD74G+DDeDixGmteDStxD9DGPdglTi2eDEDYpbxiU4arcFxDLTjebHhDDBzfiDKTpQoDDlzBxq8CDq8PD+3ncT/6Te8F4ojeDMWxGX9hk4jCyUVIDbkUSLHPoYxB69xBQiXpuspoTTq1ax5B6xKhY7GrMio/A4KADdBsYA4a757Dxl0hgixrCqq7D3BsIOwDCeDDfCiDue0rQDUQ4yPXgafqOXP2NVhGyB5m0e0iDXmToieei41nwsAhqFhQt+1i5=8m5S29YD; ssxmod_itna2=iqGxgDuD90KrG0D27DBGDRDUx4eLqiK4GHDyxWF50CGDLxn4KGdYRaGwb8DcGi=jMbN4gnGOeDAK=ARA37fD7pQT2GoYD/+hYfhEYn+rrWob/f6CnxT5A1l8eGs=Id+9X9PPwz18ud=q6FuQefixnl+GEmD=PaC54iuQPwdjAAltUWW4Mnb33pkQPhbtQWlPom8DKr1j7l8DQ8QfHlfu7A==o7DdMlSP=+bqPnDL4nwt0F7r908vG5YOjW7Xx4Uuhw85BDdAEjPQII3Xt5DFBQ0BGyES10S3cAWFTLfg24Iyl9LbQIjOBvuOA4ffTknx6DyMAczQam0TPmbPQTOQi2SHWAT2+9pf4FmDKFud9Y4CveFP6n0cDqPtc5yy3EFUl2Of0EbgOQ56z9O+h4lb44FOFpKmut/PvYvCfg4cDGfD8B4xETmjohDwLtKVm+Yhwj9c4yvx1cxLnHrPC8qYup3syFVBBQFz+xgmaCF7b2bdgF79qfbBqcohRnQp0tejK+n9l+49FWfGx3Q8Yw9CB7ejmB7plkIpweCeN5uzGmkICOtezIl6ewflR5oDLWiYHIIygdi0spdvtTsX7p93K3A5yf1Mm7Ajw1Gq16zAHOy7Dh+4YGjmk9lh5=qx2m5pL79vj4EorL5qVn653LwjtatMnSyLLUZOR66QAtwyM+f15GCi0qYq2nwPY146Pxd/muB87wrGYFib3q3Kh3tKhwGYY4oW5ShsAEjGAOxZ03CxPD",
|
||||||
|
序号,组合,指定资金
|
||||||
|
1,ZH1741493,50000
|
||||||
|
2,ZH3379035,40000
|
||||||
|
3,ZH2120024,50000
|
||||||
|
4,ZH2001065,20000
|
||||||
|
5,,
|
||||||
|
@@ -0,0 +1,118 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import division, print_function, unicode_literals
|
||||||
|
from datetime import datetime
|
||||||
|
from follower import BaseFollower
|
||||||
|
from log import logger
|
||||||
|
from misc import parse_cookies_str
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
class XueQiuFollower(BaseFollower):
|
||||||
|
LOGIN_PAGE = "https://www.xueqiu.com"
|
||||||
|
LOGIN_API = "https://xueqiu.com/snowman/login"
|
||||||
|
TRANSACTION_API = "https://xueqiu.com/cubes/rebalancing/history.json"
|
||||||
|
PORTFOLIO_URL = "https://xueqiu.com/p/"
|
||||||
|
WEB_REFERER = "https://www.xueqiu.com"
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self._adjust_sell = None
|
||||||
|
self._users = None
|
||||||
|
|
||||||
|
def login(self, user=None, password=None, **kwargs):
|
||||||
|
"""
|
||||||
|
雪球登陆, 需要设置 cookies
|
||||||
|
:param cookies: 雪球登陆需要设置 cookies, 具体见
|
||||||
|
https://smalltool.github.io/2016/08/02/cookie/
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
cookies = kwargs.get("cookies")
|
||||||
|
|
||||||
|
if cookies is None:
|
||||||
|
raise TypeError(
|
||||||
|
"雪球登陆需要设置 cookies, 具体见" "https://smalltool.github.io/2016/08/02/cookie/"
|
||||||
|
)
|
||||||
|
headers = self._generate_headers()
|
||||||
|
self.s.headers.update(headers)
|
||||||
|
|
||||||
|
self.s.get(self.LOGIN_PAGE)
|
||||||
|
|
||||||
|
cookie_dict = parse_cookies_str(cookies)
|
||||||
|
self.s.cookies.update(cookie_dict)
|
||||||
|
#extract_strategy_name(self, 'ZH1332574')
|
||||||
|
logger.info("登录成功")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def extract_strategy_name(self, strategy_url):
|
||||||
|
|
||||||
|
base_url = "https://xueqiu.com/cubes/nav_daily/all.json?cube_symbol={}"
|
||||||
|
url = base_url.format(strategy_url)
|
||||||
|
rep = self.s.get(url)
|
||||||
|
|
||||||
|
info_index = 0
|
||||||
|
return rep.json()[info_index]["name"]
|
||||||
|
|
||||||
|
|
||||||
|
def extract_transactions(self, history):
|
||||||
|
|
||||||
|
if history["count"] <= 0:
|
||||||
|
return []
|
||||||
|
rebalancing_index = 0
|
||||||
|
raw_transactions = history["list"][rebalancing_index]["rebalancing_histories"]
|
||||||
|
transactions = []
|
||||||
|
for transaction in raw_transactions:
|
||||||
|
if transaction["price"] is None:
|
||||||
|
logger.info("该笔交易无法获取价格,疑似未成交,跳过。交易详情: %s", transaction)
|
||||||
|
continue
|
||||||
|
transactions.append(transaction)
|
||||||
|
|
||||||
|
|
||||||
|
return transactions
|
||||||
|
|
||||||
|
def create_query_transaction_params(self, strategy):
|
||||||
|
params = {"cube_symbol": strategy, "page": 1, "count": 1}
|
||||||
|
return params
|
||||||
|
|
||||||
|
# noinspection PyMethodOverriding
|
||||||
|
def none_to_zero(self, data):
|
||||||
|
if data is None:
|
||||||
|
return 0
|
||||||
|
return data
|
||||||
|
|
||||||
|
# noinspection PyMethodOverriding
|
||||||
|
def project_transactions(self, transactions, assets):
|
||||||
|
|
||||||
|
pa = pd.DataFrame(index=[],columns=[])
|
||||||
|
for transaction in transactions:
|
||||||
|
weight_diff = self.none_to_zero(transaction["weight"]) - self.none_to_zero(
|
||||||
|
transaction["prev_weight"]
|
||||||
|
)
|
||||||
|
#print(33333,weight_diff,assets,transaction["price"])
|
||||||
|
initial_amount = abs(weight_diff) / 100 * assets / transaction["price"]
|
||||||
|
|
||||||
|
transaction["datetime"] = datetime.fromtimestamp(
|
||||||
|
transaction["created_at"] // 1000
|
||||||
|
)
|
||||||
|
|
||||||
|
transaction["stock_code"] = transaction["stock_symbol"].lower()
|
||||||
|
|
||||||
|
transaction["action"] = "buy" if weight_diff > 0 else "sell"
|
||||||
|
|
||||||
|
if str(transaction["stock_code"][2:4])=='11' or str(transaction["stock_code"][2:4])=='12':
|
||||||
|
shou=1
|
||||||
|
else:
|
||||||
|
shou=2
|
||||||
|
transaction["amount"] = int(round(initial_amount, -shou))
|
||||||
|
|
||||||
|
pa.loc[transaction["stock_code"],"price"]=transaction["price"]
|
||||||
|
pa.loc[transaction["stock_code"],"amount"]=transaction["amount"]
|
||||||
|
pa.loc[transaction["stock_code"],"datetime"]=transaction["datetime"]
|
||||||
|
pa.loc[transaction["stock_code"],"action"]=transaction["action"]
|
||||||
|
current_time = datetime.now()
|
||||||
|
diff = (current_time - transaction["datetime"]).total_seconds()
|
||||||
|
if int(diff)<20:
|
||||||
|
return pa
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import abc
|
||||||
|
import datetime
|
||||||
|
import re,json
|
||||||
|
import time
|
||||||
|
from typing import List
|
||||||
|
import requests
|
||||||
|
from log import logger
|
||||||
|
from misc import parse_cookies_str
|
||||||
|
|
||||||
|
|
||||||
|
class BaseFollower(metaclass=abc.ABCMeta):
|
||||||
|
"""
|
||||||
|
slippage: 滑点,取值范围为 [0, 1]
|
||||||
|
"""
|
||||||
|
|
||||||
|
LOGIN_PAGE = ""
|
||||||
|
LOGIN_API = ""
|
||||||
|
TRANSACTION_API = ""
|
||||||
|
CMD_CACHE_FILE = "cmd_cache.pk"
|
||||||
|
WEB_REFERER = ""
|
||||||
|
WEB_ORIGIN = ""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
#self.trade_queue = queue.Queue()
|
||||||
|
#self.expired_cmds = set()
|
||||||
|
|
||||||
|
self.s = requests.Session()
|
||||||
|
self.s.verify = False
|
||||||
|
|
||||||
|
self.slippage: float = 0.0
|
||||||
|
|
||||||
|
def login(self, user=None, password=None, **kwargs):
|
||||||
|
"""
|
||||||
|
雪球登陆, 需要设置 cookies
|
||||||
|
:param cookies: 雪球登陆需要设置 cookies, 具体见
|
||||||
|
https://smalltool.github.io/2016/08/02/cookie/
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
cookies = kwargs.get("cookies")
|
||||||
|
|
||||||
|
if cookies is None:
|
||||||
|
raise TypeError(
|
||||||
|
"雪球登陆需要设置 cookies, 具体见" "https://smalltool.github.io/2016/08/02/cookie/"
|
||||||
|
)
|
||||||
|
headers = self._generate_headers()
|
||||||
|
self.s.headers.update(headers)
|
||||||
|
|
||||||
|
self.s.get(self.LOGIN_PAGE)
|
||||||
|
|
||||||
|
cookie_dict = parse_cookies_str(cookies)
|
||||||
|
self.s.cookies.update(cookie_dict)
|
||||||
|
#extract_strategy_name(self, 'ZH1332574')
|
||||||
|
logger.info("登录成功")
|
||||||
|
|
||||||
|
def _generate_headers(self):
|
||||||
|
headers = {
|
||||||
|
"Accept": "application/json, text/javascript, */*; q=0.01",
|
||||||
|
"Accept-Encoding": "gzip, deflate, br",
|
||||||
|
"Accept-Language": "en-US,en;q=0.8",
|
||||||
|
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) "
|
||||||
|
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
||||||
|
"Chrome/54.0.2840.100 Safari/537.36",
|
||||||
|
"Referer": self.WEB_REFERER,
|
||||||
|
"X-Requested-With": "XMLHttpRequest",
|
||||||
|
"Origin": self.WEB_ORIGIN,
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
|
||||||
|
def check_login_success(self, rep):
|
||||||
|
"""检查登录状态是否成功
|
||||||
|
:param rep: post login 接口返回的 response 对象
|
||||||
|
:raise 如果登录失败应该抛出 NotLoginError """
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_login_params(self, user, password, **kwargs) -> dict:
|
||||||
|
"""生成 post 登录接口的参数
|
||||||
|
:param user: 用户名
|
||||||
|
:param password: 密码
|
||||||
|
:return dict 登录参数的字典
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def extract_strategy_name(self, strategy_url):
|
||||||
|
"""
|
||||||
|
抽取 策略名,主要用于日志打印,便于识别
|
||||||
|
:param strategy_url:
|
||||||
|
:return: str 策略名
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
#新增
|
||||||
|
def _query_zh_(self,userid):
|
||||||
|
|
||||||
|
url = 'https://im.xueqiu.com/im-comet/v2/sessions/1681984443-0/messages.json?user_id=%s&limit=%d' %(userid, 1)
|
||||||
|
chat_history = self.s.get(url).json()
|
||||||
|
for chat_record in chat_history:
|
||||||
|
new=chat_record['messageId']#获取messageId
|
||||||
|
messageType=chat_record['messageType']#获取messageId
|
||||||
|
starte='1'
|
||||||
|
if messageType=='VIEW':
|
||||||
|
view1 = json.loads(chat_record['view'])#策略代号
|
||||||
|
starte=view1['url'][21:] #策略代号
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
return new,starte
|
||||||
|
|
||||||
|
#非开盘时间调仓,补充
|
||||||
|
def minutes_2(self, strategys, userid, assets,**kwargs):
|
||||||
|
dayOfWeek = datetime.datetime.now().weekday()
|
||||||
|
time_n=datetime.datetime.now()
|
||||||
|
hour=str(time_n)[11:13]
|
||||||
|
minute=int(str(time_n)[14:16])
|
||||||
|
print(time_n)
|
||||||
|
if dayOfWeek<=4 and ((hour=='09' and minute<32 and minute>=30) or (hour=='13' and minute<2)) :
|
||||||
|
#if dayOfWeek<=6 or (hour=='11' or minute<=59):
|
||||||
|
for j in range(0,len(strategys)):
|
||||||
|
print('开盘自动监测中......',strategys[j])
|
||||||
|
try:
|
||||||
|
transactions = self.query_strategy_transaction(strategys[j], assets[j],**kwargs)
|
||||||
|
if len(transactions)>0:
|
||||||
|
return transactions
|
||||||
|
except Exception as e:
|
||||||
|
#logger.exception("无法获取策略 %s 调仓信息, 错误: %s, 跳过此次调仓查询", name, e)
|
||||||
|
time.sleep(3)
|
||||||
|
if j < len(strategys)-1:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def track_strategy_worker(self, strategys, userid,users, assets, interval=10, **kwargs):
|
||||||
|
|
||||||
|
"""跟踪下单worker
|
||||||
|
:param strategy: 策略id
|
||||||
|
:param name: 策略名字
|
||||||
|
:param interval: 轮询策略的时间间隔,单位为秒"""
|
||||||
|
old,starte=self._query_zh_(userid)
|
||||||
|
|
||||||
|
transactions=[]
|
||||||
|
k=0
|
||||||
|
while True:
|
||||||
|
k=k+1
|
||||||
|
print(k)
|
||||||
|
if k>=100:
|
||||||
|
return []
|
||||||
|
|
||||||
|
#前两分钟补充,非开盘调仓
|
||||||
|
minutes_2_data=self.minutes_2( strategys, userid, assets,**kwargs)
|
||||||
|
if not minutes_2_data is None and len(minutes_2_data)>0:
|
||||||
|
return minutes_2_data
|
||||||
|
|
||||||
|
try:
|
||||||
|
new,starte_n=self._query_zh_(userid)#新增
|
||||||
|
except:
|
||||||
|
time.sleep(5)
|
||||||
|
|
||||||
|
for j in range(0,len(strategys)):
|
||||||
|
print('自动监测中......',strategys[j])
|
||||||
|
if new != old and starte_n==strategys[j]:
|
||||||
|
#if new == old:
|
||||||
|
old=new
|
||||||
|
try:
|
||||||
|
transactions = self.query_strategy_transaction(strategys[j], assets[j],**kwargs)
|
||||||
|
|
||||||
|
if len(transactions)>0:
|
||||||
|
k=5
|
||||||
|
return transactions
|
||||||
|
if k==5:
|
||||||
|
break
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception("无法获取策略 %s 调仓信息, 错误: %s, 跳过此次调仓查询", e)
|
||||||
|
time.sleep(3)
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def query_strategy_transaction(self, strategy,assets, **kwargs):
|
||||||
|
|
||||||
|
params = self.create_query_transaction_params(strategy)
|
||||||
|
|
||||||
|
rep = self.s.get(self.TRANSACTION_API, params=params)
|
||||||
|
|
||||||
|
history = rep.json()
|
||||||
|
|
||||||
|
transactions = self.extract_transactions(history)
|
||||||
|
|
||||||
|
return self.project_transactions(transactions,assets, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def extract_transactions(self, history) -> List[str]:
|
||||||
|
"""
|
||||||
|
抽取接口返回中的调仓记录列表
|
||||||
|
:param history: 调仓接口返回信息的字典对象
|
||||||
|
:return: [] 调参历史记录的列表
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def create_query_transaction_params(self, strategy) -> dict:
|
||||||
|
"""
|
||||||
|
生成用于查询调参记录的参数
|
||||||
|
:param strategy: 策略 id
|
||||||
|
:return: dict 调参记录参数
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def project_transactions(self, transactions, **kwargs):
|
||||||
|
|
||||||
|
"""
|
||||||
|
修证调仓记录为内部使用的统一格式
|
||||||
|
:param transactions: [] 调仓记录的列表
|
||||||
|
:return: [] 修整后的调仓记录
|
||||||
|
"""
|
||||||
|
pass
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger("easytrader")
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
logger.propagate = False
|
||||||
|
|
||||||
|
fmt = logging.Formatter(
|
||||||
|
"%(asctime)s [%(levelname)s] %(filename)s %(lineno)s: %(message)s"
|
||||||
|
)
|
||||||
|
ch = logging.StreamHandler()
|
||||||
|
|
||||||
|
ch.setFormatter(fmt)
|
||||||
|
logger.handlers.append(ch)
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def parse_cookies_str(cookies):
|
||||||
|
"""
|
||||||
|
parse cookies str to dict
|
||||||
|
:param cookies: cookies str
|
||||||
|
:type cookies: str
|
||||||
|
:return: cookie dict
|
||||||
|
:rtype: dict
|
||||||
|
"""
|
||||||
|
cookie_dict = {}
|
||||||
|
for record in cookies.split(";"):
|
||||||
|
key, value = record.strip().split("=", 1)
|
||||||
|
cookie_dict[key] = value
|
||||||
|
return cookie_dict
|
||||||
|
|
||||||
|
|
||||||
|
def file2dict(path):
|
||||||
|
with open(path, encoding="utf-8") as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def grep_comma(num_str):
|
||||||
|
return num_str.replace(",", "")
|
||||||
|
|
||||||
|
|
||||||
|
def str2num(num_str, convert_type="float"):
|
||||||
|
num = float(grep_comma(num_str))
|
||||||
|
return num if convert_type == "float" else int(num)
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
cookies,"cookiesu=191750772541614; device_id=1aa02c03552abceadecb2739bbb22753; smidV2=2025062421422684a173893a01b0f3aab647b1593749cd00b3382a030dcc480; s=bu15p9id4j; bid=2c83e23d12700bb5d8115404894461ae_mckhq3o8; __utmz=1.1751372094.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.1565912137.1751372094.1751383237.1751889781.3; remember=1; xq_a_token=8360cc2ee2662e4910fc5e8d28fd9616f5a25c01; xqat=8360cc2ee2662e4910fc5e8d28fd9616f5a25c01; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjcxNjA4MzgwNTgsImlzcyI6InVjIiwiZXhwIjoxNzUzOTY0MDQ5LCJjdG0iOjE3NTIwNjg1MjYxMzQsImNpZCI6ImQ5ZDBuNEFadXAifQ.hK59hAbbz3eK455XzoM2VLOZ8sBYYuimg8YjOF9eeWQM4vfy7gv2Ky56WAhRVLp6JtZtn_XpKPFiLGFZ_9rYWjmlkX7wm62y6S-vsCZbjIgyVhwNr66QK_B7v4xn3EhVSqo0rdgBJGQIaI33YB6MR0WFgkCRLy-fOq0YVNcv_Uh2-9CCgbagB3gcuDl158u68Vhhjlhu38-TLywFBUjbkA8mIYpra24XTRK-qG9sQbgpo3BkNsDZza_Yehwfvtr-1qAybYLaYsXoygxrxTtnpiwIrNaPe3aB8ztA45rPaE6W_b46m8i_agESPOflQ4c3_IJhJOUdzH5Aj8wMEnWr_w; xq_r_token=e0d4e05a6a3a9fec5b78bb2ea3c0f6a78204065d; xq_is_login=1; u=7160838058; acw_tc=1a0c660417523885271697993e00717dbfc46117e29830504427d58eff25fb; is_overseas=0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1751383193,1751889683,1752068495,1752388529; HMACCOUNT=EB45621A3BC707DA; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1752388597; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=su1FaOpXw2ndOH3TZPPLCCcKcT+Imtl21eeDD4joyCH+yUOAF6YPtknsHMr/g6/6ugDA8ioiS2cn5x6cI8Wlew%3D%3D; ssxmod_itna=Wqjx2DyD0DRG0QG0QGCirKqQK0QwFq0dGMD3qiQGgDYq7=GF7DCgrKO=QOGgxDv/xWYDGK4342GitDlO7iYDSxD6HDK4GThz=jyrqeFQ0EhItA7DOxP=5tC=wxM8/000pLsLI6Mp0=tv4K4EviDB3DbqDyziiqeeGGU4GwDGoD34DiDDpLD03Db4D+/lrD7xTNPpWQpjeDQ4GyDit=3xTDm4DfDDdQsixw9WxD0Txwk7DPzDGW0Qnqp6e=DGU54cDq0eDMbxGXKAkP0eDBlKCPt=WL2zgpmeF7xBQD7u9NTWqO9QcrsCgi/cb/aYt4qYnDIwxSxPCuqY4DVp4AG44RqzitY0qiGq8uqrwHY7YDDWYxxhlYqgdhB1RLz7SzgkiY2tQ7YNANdhDZ7oNrQ37xVnDGW5lB5xE5NAYhYY4OYkC5hmxWiDD; ssxmod_itna2=Wqjx2DyD0DRG0QG0QGCirKqQK0QwFq0dGMD3qiQGgDYq7=GF7DCgrKO=QOGgxDv/xWYDGK4342GiYDiP37UxYK47PqNzQ=YD/ziO3aeqn/8AHKz5QW27qZ08irc4wMO7SLzaaYt9nBQ8kQKR8fLKwfx3lhqdj0hn3tMQnUBYGD6Q70BzB2QlTrQceWqA8u5oDhMGkn5bQKfBWd+W=Nq50U79C2x+MpeD6Da5Q9hARHoHlx4UudqO0c8sj7hxc4aT1bqF9Hj53mw4gk2NRGC4wvs4R6+KX1PeD",
|
||||||
|
ÐòºÅ,×éºÏ,Ö¸¶¨×ʽð
|
||||||
|
1,ZH2120024,25000
|
||||||
|
2,ZH1741493,25000
|
||||||
|
3,ZH2001065,20000
|
||||||
|
4,,
|
||||||
|
5,,
|
||||||
|
6,,
|
||||||
|
7,,
|
||||||
|
8,,
|
||||||
|
9,,
|
||||||
|
10,,
|
||||||
|
11,,
|
||||||
|
12,,
|
||||||
|
13,,
|
||||||
|
14,,
|
||||||
|
15,,
|
||||||
|
16,,
|
||||||
|
17,,
|
||||||
|
18,,
|
||||||
|
19,,
|
||||||
|
20,,
|
||||||
|
21,,
|
||||||
|
22,,
|
||||||
|
23,,
|
||||||
|
24,,
|
||||||
|
25,,
|
||||||
|
26,,
|
||||||
|
@@ -0,0 +1,118 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import division, print_function, unicode_literals
|
||||||
|
from datetime import datetime
|
||||||
|
from follower import BaseFollower
|
||||||
|
from log import logger
|
||||||
|
from misc import parse_cookies_str
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
class XueQiuFollower(BaseFollower):
|
||||||
|
LOGIN_PAGE = "https://www.xueqiu.com"
|
||||||
|
LOGIN_API = "https://xueqiu.com/snowman/login"
|
||||||
|
TRANSACTION_API = "https://xueqiu.com/cubes/rebalancing/history.json"
|
||||||
|
PORTFOLIO_URL = "https://xueqiu.com/p/"
|
||||||
|
WEB_REFERER = "https://www.xueqiu.com"
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self._adjust_sell = None
|
||||||
|
self._users = None
|
||||||
|
|
||||||
|
def login(self, user=None, password=None, **kwargs):
|
||||||
|
"""
|
||||||
|
雪球登陆, 需要设置 cookies
|
||||||
|
:param cookies: 雪球登陆需要设置 cookies, 具体见
|
||||||
|
https://smalltool.github.io/2016/08/02/cookie/
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
cookies = kwargs.get("cookies")
|
||||||
|
|
||||||
|
if cookies is None:
|
||||||
|
raise TypeError(
|
||||||
|
"雪球登陆需要设置 cookies, 具体见" "https://smalltool.github.io/2016/08/02/cookie/"
|
||||||
|
)
|
||||||
|
headers = self._generate_headers()
|
||||||
|
self.s.headers.update(headers)
|
||||||
|
|
||||||
|
self.s.get(self.LOGIN_PAGE)
|
||||||
|
|
||||||
|
cookie_dict = parse_cookies_str(cookies)
|
||||||
|
self.s.cookies.update(cookie_dict)
|
||||||
|
#extract_strategy_name(self, 'ZH1332574')
|
||||||
|
logger.info("登录成功")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def extract_strategy_name(self, strategy_url):
|
||||||
|
|
||||||
|
base_url = "https://xueqiu.com/cubes/nav_daily/all.json?cube_symbol={}"
|
||||||
|
url = base_url.format(strategy_url)
|
||||||
|
rep = self.s.get(url)
|
||||||
|
|
||||||
|
info_index = 0
|
||||||
|
return rep.json()[info_index]["name"]
|
||||||
|
|
||||||
|
|
||||||
|
def extract_transactions(self, history):
|
||||||
|
|
||||||
|
if history["count"] <= 0:
|
||||||
|
return []
|
||||||
|
rebalancing_index = 0
|
||||||
|
raw_transactions = history["list"][rebalancing_index]["rebalancing_histories"]
|
||||||
|
transactions = []
|
||||||
|
for transaction in raw_transactions:
|
||||||
|
if transaction["price"] is None:
|
||||||
|
logger.info("该笔交易无法获取价格,疑似未成交,跳过。交易详情: %s", transaction)
|
||||||
|
continue
|
||||||
|
transactions.append(transaction)
|
||||||
|
|
||||||
|
|
||||||
|
return transactions
|
||||||
|
|
||||||
|
def create_query_transaction_params(self, strategy):
|
||||||
|
params = {"cube_symbol": strategy, "page": 1, "count": 1}
|
||||||
|
return params
|
||||||
|
|
||||||
|
# noinspection PyMethodOverriding
|
||||||
|
def none_to_zero(self, data):
|
||||||
|
if data is None:
|
||||||
|
return 0
|
||||||
|
return data
|
||||||
|
|
||||||
|
# noinspection PyMethodOverriding
|
||||||
|
def project_transactions(self, transactions, assets):
|
||||||
|
|
||||||
|
pa = pd.DataFrame(index=[],columns=[])
|
||||||
|
for transaction in transactions:
|
||||||
|
weight_diff = self.none_to_zero(transaction["weight"]) - self.none_to_zero(
|
||||||
|
transaction["prev_weight"]
|
||||||
|
)
|
||||||
|
#print(33333,weight_diff,assets,transaction["price"])
|
||||||
|
initial_amount = abs(weight_diff) / 100 * assets / transaction["price"]
|
||||||
|
|
||||||
|
transaction["datetime"] = datetime.fromtimestamp(
|
||||||
|
transaction["created_at"] // 1000
|
||||||
|
)
|
||||||
|
|
||||||
|
transaction["stock_code"] = transaction["stock_symbol"].lower()
|
||||||
|
|
||||||
|
transaction["action"] = "buy" if weight_diff > 0 else "sell"
|
||||||
|
|
||||||
|
if str(transaction["stock_code"][2:4])=='11' or str(transaction["stock_code"][2:4])=='12':
|
||||||
|
shou=1
|
||||||
|
else:
|
||||||
|
shou=2
|
||||||
|
transaction["amount"] = int(round(initial_amount, -shou))
|
||||||
|
|
||||||
|
pa.loc[transaction["stock_code"],"price"]=transaction["price"]
|
||||||
|
pa.loc[transaction["stock_code"],"amount"]=transaction["amount"]
|
||||||
|
pa.loc[transaction["stock_code"],"datetime"]=transaction["datetime"]
|
||||||
|
pa.loc[transaction["stock_code"],"action"]=transaction["action"]
|
||||||
|
current_time = datetime.now()
|
||||||
|
diff = (current_time - transaction["datetime"]).total_seconds()
|
||||||
|
if int(diff)<20:
|
||||||
|
return pa
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
+475
@@ -0,0 +1,475 @@
|
|||||||
|
|
||||||
|
0128132
|
||||||
|
1110060
|
||||||
|
1113651
|
||||||
|
1118004
|
||||||
|
0123156
|
||||||
|
1118014
|
||||||
|
0123130
|
||||||
|
0127096
|
||||||
|
0127092
|
||||||
|
0123160
|
||||||
|
1113665
|
||||||
|
1113618
|
||||||
|
1110094
|
||||||
|
0123215
|
||||||
|
1113695
|
||||||
|
0128081
|
||||||
|
1113565
|
||||||
|
0123251
|
||||||
|
0123063
|
||||||
|
1111020
|
||||||
|
1111003
|
||||||
|
0127084
|
||||||
|
1113689
|
||||||
|
1113593
|
||||||
|
1118044
|
||||||
|
1113064
|
||||||
|
0123189
|
||||||
|
1111022
|
||||||
|
0127070
|
||||||
|
0123108
|
||||||
|
1118057
|
||||||
|
0123161
|
||||||
|
0127035
|
||||||
|
1113664
|
||||||
|
0123034
|
||||||
|
1111004
|
||||||
|
0123245
|
||||||
|
1118020
|
||||||
|
1110087
|
||||||
|
0123089
|
||||||
|
0127033
|
||||||
|
1113681
|
||||||
|
0127079
|
||||||
|
0123216
|
||||||
|
1118023
|
||||||
|
0128127
|
||||||
|
0128105
|
||||||
|
0127031
|
||||||
|
0127042
|
||||||
|
0123128
|
||||||
|
1113579
|
||||||
|
1113574
|
||||||
|
1111015
|
||||||
|
0123056
|
||||||
|
0127068
|
||||||
|
0127064
|
||||||
|
1113615
|
||||||
|
1113069
|
||||||
|
0123194
|
||||||
|
1113584
|
||||||
|
1111023
|
||||||
|
1113597
|
||||||
|
0123149
|
||||||
|
0123253
|
||||||
|
0127054
|
||||||
|
1113039
|
||||||
|
1113632
|
||||||
|
0127019
|
||||||
|
1113631
|
||||||
|
0123192
|
||||||
|
0123193
|
||||||
|
0123236
|
||||||
|
1113641
|
||||||
|
0127083
|
||||||
|
0128131
|
||||||
|
1113545
|
||||||
|
0123250
|
||||||
|
1113676
|
||||||
|
1113687
|
||||||
|
1113672
|
||||||
|
1113054
|
||||||
|
1113058
|
||||||
|
1110076
|
||||||
|
1111018
|
||||||
|
0123257
|
||||||
|
1113667
|
||||||
|
1111021
|
||||||
|
0123121
|
||||||
|
0123212
|
||||||
|
0123175
|
||||||
|
0128109
|
||||||
|
1111001
|
||||||
|
0123220
|
||||||
|
1113563
|
||||||
|
1113659
|
||||||
|
0128133
|
||||||
|
1111013
|
||||||
|
0127103
|
||||||
|
0123217
|
||||||
|
1118018
|
||||||
|
0127085
|
||||||
|
1110084
|
||||||
|
0127105
|
||||||
|
0123112
|
||||||
|
0123235
|
||||||
|
1113656
|
||||||
|
1113610
|
||||||
|
0127045
|
||||||
|
1113048
|
||||||
|
0127109
|
||||||
|
0127028
|
||||||
|
1113688
|
||||||
|
0123183
|
||||||
|
1111005
|
||||||
|
0127069
|
||||||
|
0127067
|
||||||
|
0123144
|
||||||
|
0123243
|
||||||
|
1113694
|
||||||
|
0123214
|
||||||
|
1110077
|
||||||
|
0123092
|
||||||
|
0128125
|
||||||
|
0127015
|
||||||
|
1110059
|
||||||
|
1118051
|
||||||
|
1110097
|
||||||
|
0123180
|
||||||
|
0123146
|
||||||
|
1113657
|
||||||
|
0127082
|
||||||
|
0123088
|
||||||
|
0127052
|
||||||
|
1113680
|
||||||
|
1113674
|
||||||
|
1113636
|
||||||
|
1118008
|
||||||
|
1113686
|
||||||
|
0123178
|
||||||
|
0128108
|
||||||
|
0123196
|
||||||
|
1118042
|
||||||
|
0128128
|
||||||
|
1110092
|
||||||
|
0127016
|
||||||
|
0123195
|
||||||
|
0123185
|
||||||
|
1113682
|
||||||
|
1110074
|
||||||
|
1118029
|
||||||
|
0127099
|
||||||
|
0123188
|
||||||
|
0123147
|
||||||
|
0127098
|
||||||
|
0123085
|
||||||
|
0127020
|
||||||
|
0127093
|
||||||
|
0123239
|
||||||
|
0127107
|
||||||
|
0123207
|
||||||
|
1113051
|
||||||
|
0127030
|
||||||
|
0127047
|
||||||
|
1113606
|
||||||
|
1113654
|
||||||
|
1118013
|
||||||
|
0123168
|
||||||
|
0127034
|
||||||
|
1111000
|
||||||
|
0123230
|
||||||
|
0123234
|
||||||
|
0127078
|
||||||
|
0123064
|
||||||
|
1113646
|
||||||
|
0123071
|
||||||
|
1118022
|
||||||
|
0128137
|
||||||
|
1113623
|
||||||
|
0123166
|
||||||
|
0123109
|
||||||
|
1113624
|
||||||
|
0127080
|
||||||
|
1113067
|
||||||
|
1113059
|
||||||
|
0127026
|
||||||
|
1118035
|
||||||
|
1113643
|
||||||
|
0123247
|
||||||
|
1113679
|
||||||
|
0127102
|
||||||
|
0127095
|
||||||
|
0127090
|
||||||
|
1111009
|
||||||
|
0123224
|
||||||
|
1111002
|
||||||
|
1118024
|
||||||
|
0123172
|
||||||
|
1118027
|
||||||
|
1118030
|
||||||
|
0123252
|
||||||
|
0123244
|
||||||
|
0123165
|
||||||
|
1113649
|
||||||
|
1110089
|
||||||
|
0127039
|
||||||
|
1113638
|
||||||
|
0127056
|
||||||
|
1113650
|
||||||
|
0127022
|
||||||
|
0127017
|
||||||
|
1118036
|
||||||
|
0127046
|
||||||
|
0128138
|
||||||
|
1113549
|
||||||
|
0127086
|
||||||
|
0128121
|
||||||
|
0123090
|
||||||
|
0127066
|
||||||
|
0127075
|
||||||
|
0128097
|
||||||
|
1110064
|
||||||
|
0123159
|
||||||
|
1113647
|
||||||
|
1113666
|
||||||
|
0123080
|
||||||
|
0123203
|
||||||
|
0123126
|
||||||
|
0127108
|
||||||
|
1118041
|
||||||
|
1113644
|
||||||
|
0127059
|
||||||
|
1113070
|
||||||
|
1113652
|
||||||
|
1118038
|
||||||
|
0123039
|
||||||
|
0123119
|
||||||
|
0123225
|
||||||
|
0123117
|
||||||
|
0127040
|
||||||
|
1113669
|
||||||
|
0128076
|
||||||
|
1113660
|
||||||
|
1110082
|
||||||
|
0123049
|
||||||
|
0123223
|
||||||
|
1110070
|
||||||
|
0127073
|
||||||
|
0123133
|
||||||
|
1113658
|
||||||
|
0123107
|
||||||
|
0123221
|
||||||
|
1113655
|
||||||
|
0123242
|
||||||
|
0127077
|
||||||
|
1118033
|
||||||
|
1110081
|
||||||
|
1111016
|
||||||
|
0123158
|
||||||
|
1118009
|
||||||
|
1113609
|
||||||
|
1113575
|
||||||
|
1110817
|
||||||
|
1110816
|
||||||
|
1110815
|
||||||
|
1110808
|
||||||
|
1110801
|
||||||
|
0128044
|
||||||
|
0127106
|
||||||
|
0124024
|
||||||
|
0123248
|
||||||
|
0123186
|
||||||
|
0123177
|
||||||
|
0123082
|
||||||
|
0123052
|
||||||
|
0123038
|
||||||
|
0123029
|
||||||
|
1113037
|
||||||
|
1113639
|
||||||
|
1113668
|
||||||
|
1110093
|
||||||
|
1113673
|
||||||
|
1113633
|
||||||
|
0127044
|
||||||
|
0123091
|
||||||
|
1113577
|
||||||
|
1110095
|
||||||
|
1118032
|
||||||
|
1111017
|
||||||
|
0123179
|
||||||
|
0123197
|
||||||
|
1111014
|
||||||
|
1110096
|
||||||
|
1113648
|
||||||
|
1113671
|
||||||
|
0123072
|
||||||
|
0128119
|
||||||
|
1110063
|
||||||
|
1118010
|
||||||
|
0127060
|
||||||
|
1118011
|
||||||
|
0128141
|
||||||
|
0123182
|
||||||
|
0123061
|
||||||
|
1118034
|
||||||
|
1113062
|
||||||
|
0127018
|
||||||
|
1118031
|
||||||
|
1118006
|
||||||
|
1118056
|
||||||
|
0123254
|
||||||
|
0127089
|
||||||
|
1113605
|
||||||
|
0128135
|
||||||
|
0123065
|
||||||
|
0123240
|
||||||
|
0127050
|
||||||
|
1113627
|
||||||
|
1113683
|
||||||
|
0123198
|
||||||
|
0127088
|
||||||
|
1118005
|
||||||
|
1113653
|
||||||
|
0123150
|
||||||
|
0128071
|
||||||
|
0127094
|
||||||
|
1113625
|
||||||
|
0127071
|
||||||
|
0123222
|
||||||
|
1113661
|
||||||
|
0123122
|
||||||
|
1113670
|
||||||
|
0123142
|
||||||
|
0128142
|
||||||
|
0123154
|
||||||
|
1110062
|
||||||
|
1110098
|
||||||
|
0127027
|
||||||
|
1113696
|
||||||
|
1118025
|
||||||
|
1110086
|
||||||
|
1113053
|
||||||
|
0128134
|
||||||
|
0123104
|
||||||
|
1110075
|
||||||
|
0123129
|
||||||
|
0123124
|
||||||
|
0123118
|
||||||
|
1110085
|
||||||
|
0123246
|
||||||
|
1113628
|
||||||
|
0127049
|
||||||
|
1113052
|
||||||
|
1113056
|
||||||
|
0123151
|
||||||
|
1118054
|
||||||
|
1113691
|
||||||
|
0123210
|
||||||
|
0123155
|
||||||
|
0123113
|
||||||
|
1118037
|
||||||
|
0128116
|
||||||
|
0127024
|
||||||
|
0123229
|
||||||
|
1118039
|
||||||
|
1113042
|
||||||
|
1113634
|
||||||
|
1113046
|
||||||
|
1113693
|
||||||
|
1113033
|
||||||
|
0123114
|
||||||
|
1113675
|
||||||
|
0127061
|
||||||
|
1113049
|
||||||
|
1113045
|
||||||
|
1111019
|
||||||
|
0123176
|
||||||
|
1113589
|
||||||
|
1118015
|
||||||
|
1118045
|
||||||
|
0123199
|
||||||
|
0127025
|
||||||
|
0127041
|
||||||
|
0123076
|
||||||
|
1113685
|
||||||
|
0127038
|
||||||
|
0123206
|
||||||
|
1113043
|
||||||
|
0127110
|
||||||
|
0127062
|
||||||
|
1113640
|
||||||
|
1111007
|
||||||
|
1113692
|
||||||
|
0128129
|
||||||
|
1110073
|
||||||
|
0128101
|
||||||
|
1118049
|
||||||
|
0123241
|
||||||
|
1113047
|
||||||
|
1118000
|
||||||
|
1118040
|
||||||
|
0127053
|
||||||
|
1111010
|
||||||
|
0127072
|
||||||
|
0128095
|
||||||
|
0127055
|
||||||
|
1118050
|
||||||
|
1118052
|
||||||
|
0123171
|
||||||
|
1113068
|
||||||
|
0123233
|
||||||
|
0123255
|
||||||
|
0123138
|
||||||
|
0127076
|
||||||
|
1110067
|
||||||
|
1113616
|
||||||
|
0123231
|
||||||
|
0123256
|
||||||
|
0123087
|
||||||
|
0127097
|
||||||
|
0128120
|
||||||
|
1113621
|
||||||
|
1110090
|
||||||
|
0123157
|
||||||
|
1118003
|
||||||
|
1111012
|
||||||
|
1118007
|
||||||
|
1118016
|
||||||
|
1113569
|
||||||
|
1113066
|
||||||
|
0128144
|
||||||
|
0123249
|
||||||
|
1113065
|
||||||
|
0123211
|
||||||
|
1113601
|
||||||
|
0123237
|
||||||
|
0123059
|
||||||
|
1113663
|
||||||
|
1118048
|
||||||
|
1118053
|
||||||
|
1118055
|
||||||
|
0127104
|
||||||
|
0128124
|
||||||
|
0123213
|
||||||
|
0123131
|
||||||
|
0123187
|
||||||
|
0128136
|
||||||
|
1113678
|
||||||
|
1118012
|
||||||
|
1118043
|
||||||
|
0123141
|
||||||
|
0128074
|
||||||
|
0123173
|
||||||
|
0128130
|
||||||
|
0123201
|
||||||
|
0123048
|
||||||
|
0123200
|
||||||
|
1113690
|
||||||
|
0127081
|
||||||
|
1113030
|
||||||
|
0123169
|
||||||
|
1113677
|
||||||
|
1118021
|
||||||
|
0123120
|
||||||
|
1113588
|
||||||
|
0123054
|
||||||
|
0127037
|
||||||
|
0123031
|
||||||
|
0127101
|
||||||
|
0123145
|
||||||
|
0123209
|
||||||
|
0123232
|
||||||
|
0123162
|
||||||
|
1118058
|
||||||
|
1118500
|
||||||
+1001
File diff suppressed because it is too large
Load Diff
+2001
File diff suppressed because it is too large
Load Diff
+101
@@ -0,0 +1,101 @@
|
|||||||
|
|
||||||
|
0002475
|
||||||
|
0300750
|
||||||
|
0002422
|
||||||
|
0002241
|
||||||
|
0002648
|
||||||
|
0002463
|
||||||
|
0002001
|
||||||
|
0300014
|
||||||
|
1600438
|
||||||
|
0002466
|
||||||
|
1688008
|
||||||
|
0300896
|
||||||
|
0300308
|
||||||
|
0000063
|
||||||
|
0000792
|
||||||
|
0300274
|
||||||
|
0002714
|
||||||
|
0000100
|
||||||
|
0002460
|
||||||
|
0000938
|
||||||
|
0002371
|
||||||
|
1601919
|
||||||
|
1600426
|
||||||
|
1600030
|
||||||
|
1603799
|
||||||
|
0002594
|
||||||
|
1600346
|
||||||
|
1600019
|
||||||
|
0000725
|
||||||
|
1601668
|
||||||
|
1603259
|
||||||
|
0002415
|
||||||
|
1601166
|
||||||
|
1600150
|
||||||
|
1600585
|
||||||
|
1600690
|
||||||
|
1600584
|
||||||
|
1600309
|
||||||
|
1600760
|
||||||
|
1601899
|
||||||
|
0000333
|
||||||
|
0300124
|
||||||
|
1603501
|
||||||
|
0000538
|
||||||
|
1600519
|
||||||
|
1601766
|
||||||
|
1600276
|
||||||
|
0002027
|
||||||
|
0300122
|
||||||
|
1688256
|
||||||
|
1600048
|
||||||
|
1600009
|
||||||
|
0002252
|
||||||
|
0000651
|
||||||
|
1603993
|
||||||
|
1601669
|
||||||
|
1600111
|
||||||
|
1688271
|
||||||
|
1688981
|
||||||
|
0000338
|
||||||
|
1601888
|
||||||
|
0300015
|
||||||
|
1688111
|
||||||
|
1601989
|
||||||
|
1601985
|
||||||
|
1600050
|
||||||
|
1600436
|
||||||
|
1601318
|
||||||
|
0002230
|
||||||
|
1601012
|
||||||
|
1601600
|
||||||
|
1688041
|
||||||
|
0002049
|
||||||
|
1600031
|
||||||
|
0001979
|
||||||
|
1600893
|
||||||
|
1600489
|
||||||
|
0002179
|
||||||
|
1601390
|
||||||
|
1688012
|
||||||
|
1601006
|
||||||
|
1600406
|
||||||
|
1601398
|
||||||
|
1600028
|
||||||
|
1600900
|
||||||
|
1600010
|
||||||
|
1601857
|
||||||
|
0000002
|
||||||
|
1600941
|
||||||
|
1600036
|
||||||
|
1601728
|
||||||
|
1601816
|
||||||
|
1603986
|
||||||
|
0000425
|
||||||
|
1600989
|
||||||
|
1600089
|
||||||
|
0002352
|
||||||
|
0300760
|
||||||
|
1600547
|
||||||
|
1601088
|
||||||
+501
@@ -0,0 +1,501 @@
|
|||||||
|
|
||||||
|
0000001
|
||||||
|
0000002
|
||||||
|
0000009
|
||||||
|
0000032
|
||||||
|
0000034
|
||||||
|
0000035
|
||||||
|
0000039
|
||||||
|
0000063
|
||||||
|
0000066
|
||||||
|
0000069
|
||||||
|
0000100
|
||||||
|
0000157
|
||||||
|
0000301
|
||||||
|
0000333
|
||||||
|
0000338
|
||||||
|
0000400
|
||||||
|
0000408
|
||||||
|
0000423
|
||||||
|
0000425
|
||||||
|
0000426
|
||||||
|
0000519
|
||||||
|
0000538
|
||||||
|
0000547
|
||||||
|
0000563
|
||||||
|
0000568
|
||||||
|
0000617
|
||||||
|
0000623
|
||||||
|
0000625
|
||||||
|
0000629
|
||||||
|
0000630
|
||||||
|
0000651
|
||||||
|
0000661
|
||||||
|
0000683
|
||||||
|
0000708
|
||||||
|
0000725
|
||||||
|
0000733
|
||||||
|
0000738
|
||||||
|
0000768
|
||||||
|
0000786
|
||||||
|
0000792
|
||||||
|
0000807
|
||||||
|
0000818
|
||||||
|
0000830
|
||||||
|
0000831
|
||||||
|
0000858
|
||||||
|
0000878
|
||||||
|
0000887
|
||||||
|
0000932
|
||||||
|
0000933
|
||||||
|
0000938
|
||||||
|
0000960
|
||||||
|
0000963
|
||||||
|
0000967
|
||||||
|
0000975
|
||||||
|
0000977
|
||||||
|
0000988
|
||||||
|
0000998
|
||||||
|
0000999
|
||||||
|
0001914
|
||||||
|
0001965
|
||||||
|
0001979
|
||||||
|
0002001
|
||||||
|
0002007
|
||||||
|
0002008
|
||||||
|
0002025
|
||||||
|
0002027
|
||||||
|
0002028
|
||||||
|
0002044
|
||||||
|
0002049
|
||||||
|
0002050
|
||||||
|
0002064
|
||||||
|
0002065
|
||||||
|
0002074
|
||||||
|
0002078
|
||||||
|
0002085
|
||||||
|
0002091
|
||||||
|
0002120
|
||||||
|
0002128
|
||||||
|
0002129
|
||||||
|
0002130
|
||||||
|
0002131
|
||||||
|
0002138
|
||||||
|
0002145
|
||||||
|
0002152
|
||||||
|
0002155
|
||||||
|
0002156
|
||||||
|
0002176
|
||||||
|
0002179
|
||||||
|
0002180
|
||||||
|
0002185
|
||||||
|
0002195
|
||||||
|
0002202
|
||||||
|
0002223
|
||||||
|
0002230
|
||||||
|
0002236
|
||||||
|
0002241
|
||||||
|
0002244
|
||||||
|
0002245
|
||||||
|
0002252
|
||||||
|
0002266
|
||||||
|
0002271
|
||||||
|
0002273
|
||||||
|
0002281
|
||||||
|
0002292
|
||||||
|
0002294
|
||||||
|
0002312
|
||||||
|
0002318
|
||||||
|
0002340
|
||||||
|
0002352
|
||||||
|
0002353
|
||||||
|
0002371
|
||||||
|
0002372
|
||||||
|
0002384
|
||||||
|
0002389
|
||||||
|
0002405
|
||||||
|
0002407
|
||||||
|
0002409
|
||||||
|
0002410
|
||||||
|
0002414
|
||||||
|
0002415
|
||||||
|
0002422
|
||||||
|
0002432
|
||||||
|
0002436
|
||||||
|
0002439
|
||||||
|
0002444
|
||||||
|
0002456
|
||||||
|
0002459
|
||||||
|
0002460
|
||||||
|
0002463
|
||||||
|
0002465
|
||||||
|
0002466
|
||||||
|
0002472
|
||||||
|
0002475
|
||||||
|
0002493
|
||||||
|
0002497
|
||||||
|
0002508
|
||||||
|
0002517
|
||||||
|
0002532
|
||||||
|
0002544
|
||||||
|
0002555
|
||||||
|
0002558
|
||||||
|
0002572
|
||||||
|
0002594
|
||||||
|
0002595
|
||||||
|
0002601
|
||||||
|
0002603
|
||||||
|
0002607
|
||||||
|
0002624
|
||||||
|
0002625
|
||||||
|
0002648
|
||||||
|
0002709
|
||||||
|
0002714
|
||||||
|
0002738
|
||||||
|
0002739
|
||||||
|
0002756
|
||||||
|
0002812
|
||||||
|
0002821
|
||||||
|
0002831
|
||||||
|
0002841
|
||||||
|
0002916
|
||||||
|
0002920
|
||||||
|
0002938
|
||||||
|
0003816
|
||||||
|
0300001
|
||||||
|
0300002
|
||||||
|
0300003
|
||||||
|
0300012
|
||||||
|
0300014
|
||||||
|
0300015
|
||||||
|
0300017
|
||||||
|
0300024
|
||||||
|
0300033
|
||||||
|
0300037
|
||||||
|
0300054
|
||||||
|
0300058
|
||||||
|
0300059
|
||||||
|
0300068
|
||||||
|
0300070
|
||||||
|
0300073
|
||||||
|
0300088
|
||||||
|
0300118
|
||||||
|
0300122
|
||||||
|
0300124
|
||||||
|
0300136
|
||||||
|
0300142
|
||||||
|
0300144
|
||||||
|
0300182
|
||||||
|
0300207
|
||||||
|
0300223
|
||||||
|
0300251
|
||||||
|
0300253
|
||||||
|
0300274
|
||||||
|
0300285
|
||||||
|
0300296
|
||||||
|
0300308
|
||||||
|
0300315
|
||||||
|
0300316
|
||||||
|
0300339
|
||||||
|
0300346
|
||||||
|
0300347
|
||||||
|
0300383
|
||||||
|
0300390
|
||||||
|
0300394
|
||||||
|
0300395
|
||||||
|
0300408
|
||||||
|
0300413
|
||||||
|
0300418
|
||||||
|
0300433
|
||||||
|
0300438
|
||||||
|
0300442
|
||||||
|
0300450
|
||||||
|
0300454
|
||||||
|
0300457
|
||||||
|
0300459
|
||||||
|
0300474
|
||||||
|
0300476
|
||||||
|
0300496
|
||||||
|
0300502
|
||||||
|
0300529
|
||||||
|
0300558
|
||||||
|
0300567
|
||||||
|
0300568
|
||||||
|
0300573
|
||||||
|
0300601
|
||||||
|
0300604
|
||||||
|
0300627
|
||||||
|
0300628
|
||||||
|
0300661
|
||||||
|
0300676
|
||||||
|
0300699
|
||||||
|
0300724
|
||||||
|
0300750
|
||||||
|
0300751
|
||||||
|
0300757
|
||||||
|
0300759
|
||||||
|
0300760
|
||||||
|
0300763
|
||||||
|
0300769
|
||||||
|
0300782
|
||||||
|
0300832
|
||||||
|
0300866
|
||||||
|
0300896
|
||||||
|
0300919
|
||||||
|
0301236
|
||||||
|
0301358
|
||||||
|
0301381
|
||||||
|
0302132
|
||||||
|
1600000
|
||||||
|
1600004
|
||||||
|
1600007
|
||||||
|
1600008
|
||||||
|
1600009
|
||||||
|
1600010
|
||||||
|
1600011
|
||||||
|
1600018
|
||||||
|
1600019
|
||||||
|
1600026
|
||||||
|
1600028
|
||||||
|
1600029
|
||||||
|
1600030
|
||||||
|
1600031
|
||||||
|
1600036
|
||||||
|
1600038
|
||||||
|
1600039
|
||||||
|
1600048
|
||||||
|
1600050
|
||||||
|
1600066
|
||||||
|
1600085
|
||||||
|
1600089
|
||||||
|
1600096
|
||||||
|
1600104
|
||||||
|
1600111
|
||||||
|
1600115
|
||||||
|
1600118
|
||||||
|
1600129
|
||||||
|
1600131
|
||||||
|
1600141
|
||||||
|
1600143
|
||||||
|
1600150
|
||||||
|
1600153
|
||||||
|
1600160
|
||||||
|
1600161
|
||||||
|
1600166
|
||||||
|
1600170
|
||||||
|
1600176
|
||||||
|
1600177
|
||||||
|
1600183
|
||||||
|
1600188
|
||||||
|
1600196
|
||||||
|
1600208
|
||||||
|
1600219
|
||||||
|
1600233
|
||||||
|
1600256
|
||||||
|
1600258
|
||||||
|
1600276
|
||||||
|
1600309
|
||||||
|
1600312
|
||||||
|
1600315
|
||||||
|
1600316
|
||||||
|
1600323
|
||||||
|
1600325
|
||||||
|
1600332
|
||||||
|
1600335
|
||||||
|
1600346
|
||||||
|
1600352
|
||||||
|
1600362
|
||||||
|
1600372
|
||||||
|
1600392
|
||||||
|
1600398
|
||||||
|
1600406
|
||||||
|
1600415
|
||||||
|
1600418
|
||||||
|
1600426
|
||||||
|
1600436
|
||||||
|
1600438
|
||||||
|
1600460
|
||||||
|
1600482
|
||||||
|
1600486
|
||||||
|
1600487
|
||||||
|
1600489
|
||||||
|
1600497
|
||||||
|
1600498
|
||||||
|
1600499
|
||||||
|
1600511
|
||||||
|
1600515
|
||||||
|
1600516
|
||||||
|
1600519
|
||||||
|
1600521
|
||||||
|
1600529
|
||||||
|
1600535
|
||||||
|
1600547
|
||||||
|
1600549
|
||||||
|
1600563
|
||||||
|
1600570
|
||||||
|
1600584
|
||||||
|
1600585
|
||||||
|
1600588
|
||||||
|
1600637
|
||||||
|
1600655
|
||||||
|
1600660
|
||||||
|
1600667
|
||||||
|
1600674
|
||||||
|
1600690
|
||||||
|
1600699
|
||||||
|
1600704
|
||||||
|
1600741
|
||||||
|
1600745
|
||||||
|
1600754
|
||||||
|
1600760
|
||||||
|
1600763
|
||||||
|
1600765
|
||||||
|
1600795
|
||||||
|
1600803
|
||||||
|
1600820
|
||||||
|
1600839
|
||||||
|
1600845
|
||||||
|
1600859
|
||||||
|
1600862
|
||||||
|
1600864
|
||||||
|
1600867
|
||||||
|
1600879
|
||||||
|
1600885
|
||||||
|
1600886
|
||||||
|
1600887
|
||||||
|
1600893
|
||||||
|
1600895
|
||||||
|
1600900
|
||||||
|
1600905
|
||||||
|
1600919
|
||||||
|
1600938
|
||||||
|
1600941
|
||||||
|
1600988
|
||||||
|
1600989
|
||||||
|
1600998
|
||||||
|
1601000
|
||||||
|
1601006
|
||||||
|
1601012
|
||||||
|
1601018
|
||||||
|
1601021
|
||||||
|
1601058
|
||||||
|
1601088
|
||||||
|
1601100
|
||||||
|
1601111
|
||||||
|
1601117
|
||||||
|
1601127
|
||||||
|
1601155
|
||||||
|
1601166
|
||||||
|
1601168
|
||||||
|
1601179
|
||||||
|
1601186
|
||||||
|
1601216
|
||||||
|
1601225
|
||||||
|
1601233
|
||||||
|
1601238
|
||||||
|
1601288
|
||||||
|
1601318
|
||||||
|
1601319
|
||||||
|
1601328
|
||||||
|
1601360
|
||||||
|
1601390
|
||||||
|
1601398
|
||||||
|
1601567
|
||||||
|
1601600
|
||||||
|
1601601
|
||||||
|
1601607
|
||||||
|
1601615
|
||||||
|
1601618
|
||||||
|
1601628
|
||||||
|
1601633
|
||||||
|
1601636
|
||||||
|
1601658
|
||||||
|
1601668
|
||||||
|
1601669
|
||||||
|
1601677
|
||||||
|
1601689
|
||||||
|
1601727
|
||||||
|
1601728
|
||||||
|
1601766
|
||||||
|
1601799
|
||||||
|
1601800
|
||||||
|
1601816
|
||||||
|
1601857
|
||||||
|
1601866
|
||||||
|
1601868
|
||||||
|
1601872
|
||||||
|
1601877
|
||||||
|
1601880
|
||||||
|
1601888
|
||||||
|
1601899
|
||||||
|
1601919
|
||||||
|
1601966
|
||||||
|
1601985
|
||||||
|
1601988
|
||||||
|
1601989
|
||||||
|
1603000
|
||||||
|
1603019
|
||||||
|
1603077
|
||||||
|
1603087
|
||||||
|
1603129
|
||||||
|
1603259
|
||||||
|
1603260
|
||||||
|
1603288
|
||||||
|
1603392
|
||||||
|
1603486
|
||||||
|
1603501
|
||||||
|
1603568
|
||||||
|
1603596
|
||||||
|
1603605
|
||||||
|
1603606
|
||||||
|
1603613
|
||||||
|
1603650
|
||||||
|
1603659
|
||||||
|
1603799
|
||||||
|
1603806
|
||||||
|
1603816
|
||||||
|
1603833
|
||||||
|
1603885
|
||||||
|
1603899
|
||||||
|
1603939
|
||||||
|
1603979
|
||||||
|
1603986
|
||||||
|
1603993
|
||||||
|
1605117
|
||||||
|
1605358
|
||||||
|
1605499
|
||||||
|
1605589
|
||||||
|
1688002
|
||||||
|
1688005
|
||||||
|
1688008
|
||||||
|
1688009
|
||||||
|
1688012
|
||||||
|
1688036
|
||||||
|
1688041
|
||||||
|
1688047
|
||||||
|
1688063
|
||||||
|
1688072
|
||||||
|
1688099
|
||||||
|
1688111
|
||||||
|
1688120
|
||||||
|
1688122
|
||||||
|
1688126
|
||||||
|
1688169
|
||||||
|
1688180
|
||||||
|
1688188
|
||||||
|
1688213
|
||||||
|
1688223
|
||||||
|
1688235
|
||||||
|
1688256
|
||||||
|
1688266
|
||||||
|
1688271
|
||||||
|
1688303
|
||||||
|
1688390
|
||||||
|
1688396
|
||||||
|
1688506
|
||||||
|
1688578
|
||||||
|
1688599
|
||||||
|
1688608
|
||||||
|
1688617
|
||||||
|
1688777
|
||||||
|
1688981
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,469 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"参数研究*args, **kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"https://blog.csdn.net/GODSuner/article/details/117961990"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args 和 ``kwargs` 这两个魔法变量需要花费大量时间来解释。别被这些语句所绊倒。其实这些并不是什么超级特殊的参数,也并不奇特,只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。 接下来我们就来一起了解他们的用法**,以及在什么情况下使用?·\n",
|
||||||
|
"\n",
|
||||||
|
"首先你要明白的是:\n",
|
||||||
|
"\n",
|
||||||
|
"其实并不是写成 *args 和 **kwargs ,只有前面的 * (星号)才是必须的。\n",
|
||||||
|
"向python传递参数的方式有两种:\n",
|
||||||
|
"位置参数(positional argument)\n",
|
||||||
|
"关键词参数(keyword argument)\n",
|
||||||
|
"现在我们再来看 *args 与 **kwargs 的区别,两者都是 python 中可变的参数\n",
|
||||||
|
"*args 表示任何多个无名参数, 他本质上是一个 tuple\n",
|
||||||
|
"** kwargs 表示关键字参数, 它本质上是一个 dict\n",
|
||||||
|
"\n",
|
||||||
|
"同时使用时必须要求 *args 参数列要在** kwargs 前面 【因为位置参数在关键字参数的前面。】"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args 的用法\n",
|
||||||
|
"* args 和 ** args 主要用于函数定义,你可以将不定数量的参数传递给一个函数。\n",
|
||||||
|
"\n",
|
||||||
|
"这里不定的意思是: 预先并不知道,函数使用者会传递多少个参数给你,所在在这个场景下使用这两个关键字。 * args 是用来发送一个 非键值 的可变数量的参数列表给一个函数。"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"first normal arg: yasoob\n",
|
||||||
|
"another arg through *argv: python\n",
|
||||||
|
"another arg through *argv: eggs\n",
|
||||||
|
"another arg through *argv: test\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_var_args(f_arg, *argv):\n",
|
||||||
|
" print(\"first normal arg:\",f_arg)\n",
|
||||||
|
" for arg in argv:\n",
|
||||||
|
" print(\"another arg through *argv:\",arg)\n",
|
||||||
|
"test_var_args('yasoob','python','eggs','test')\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args的用法"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args就是就是传递一个可变参数列表给函数实参,这个参数列表的数目未知,甚至长度可以为0。下面这段代码演示了如何使用args"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Required argument: 1\n",
|
||||||
|
"<class 'tuple'>\n",
|
||||||
|
"Optional argument: 2\n",
|
||||||
|
"Optional argument: 3\n",
|
||||||
|
"Optional argument: 4\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_args(first, *args):\n",
|
||||||
|
" print('Required argument: ', first)\n",
|
||||||
|
" print(type(args))\n",
|
||||||
|
" for v in args:\n",
|
||||||
|
" print ('Optional argument: ', v)\n",
|
||||||
|
" print(type(v))\n",
|
||||||
|
"\n",
|
||||||
|
"test_args(1, 2, 3, 4)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"第一个参数是必须要传入的参数,所以使用了第一个形参,而后面三个参数则作为可变参数列表传入了实参,并且是作为元组tuple来使用的。代码的运行结果如下"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"**kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"而**kwargs则是将一个可变的关键字参数的字典传给函数实参,同样参数列表长度可以为0或为其他值。下面这段代码演示了如何使用kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Required argument: 1\n",
|
||||||
|
"<class 'dict'>\n",
|
||||||
|
"Optional argument (args): 2\n",
|
||||||
|
"Optional argument (args): 3\n",
|
||||||
|
"Optional argument (args): 4\n",
|
||||||
|
"{'k1': 5, 'k2': 6}\n",
|
||||||
|
"Optional argument k1 (kwargs): 5\n",
|
||||||
|
"Optional argument k2 (kwargs): 6\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_kwargs(first, *args, **kwargs):\n",
|
||||||
|
" print('Required argument: ', first)\n",
|
||||||
|
" print(type(kwargs))\n",
|
||||||
|
" for v in args:\n",
|
||||||
|
" print ('Optional argument (args): ', v)\n",
|
||||||
|
" print(kwargs)\n",
|
||||||
|
" for k, v in kwargs.items():\n",
|
||||||
|
" print ('Optional argument %s (kwargs): %s' % (k, v))\n",
|
||||||
|
"\n",
|
||||||
|
"test_kwargs(1, 2, 3, 4, k1=5, k2=6)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"正如前面所说的,args类型是一个tuple,而kwargs则是一个字典dict,并且args只能位于kwargs的前面。代码的运行结果如下"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"调用函数\n",
|
||||||
|
"args和kwargs不仅可以在函数定义中使用,还可以在函数调用中使用。在调用时使用就相当于pack(打包)和unpack(解包),类似于元组的打包和解包。\n",
|
||||||
|
"\n",
|
||||||
|
"首先来看一下使用args来解包调用函数的代码,"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"arg1: two\n",
|
||||||
|
"arg2: 3\n",
|
||||||
|
"arg3: 5\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_args_kwargs(arg1, arg2, arg3):\n",
|
||||||
|
" print(\"arg1:\", arg1)\n",
|
||||||
|
" print(\"arg2:\", arg2)\n",
|
||||||
|
" print(\"arg3:\", arg3)\n",
|
||||||
|
"\n",
|
||||||
|
"args = (\"two\", 3, 5)\n",
|
||||||
|
"test_args_kwargs(*args)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"将元组解包后传给对应的实参,kwargs的用法与其类似。"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"arg1: 5\n",
|
||||||
|
"arg2: two\n",
|
||||||
|
"arg3: 3\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"kwargs = {\"arg3\": 3, \"arg2\": \"two\", \"arg1\": 5}\n",
|
||||||
|
"test_args_kwargs(**kwargs)\n",
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"聚合宽数据研究"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"交易函数"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"1 order(security, amount, style=None, side='long', pindex=0, close_today=False)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"交易函数\n",
|
||||||
|
"1 order(security, amount, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖标的。调用成功后, 您将可以调用[get_open_orders]取得所有未完成的交易, 也可以调用[cancel_order]取消交易\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的代码\n",
|
||||||
|
"amount: 交易数量, 正数表示买入, 负数表示卖出\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0 指定第一个 subportfolio, 1 指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建订单成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#买入平安银行股票100股\n",
|
||||||
|
"order('000001.XSHE', 100) # 下一个市价单\n",
|
||||||
|
"order('000001.XSHE', 100, MarketOrderStyle()) # 下一个市价单, 功能同上(科创板市价单需要指定保护价)\n",
|
||||||
|
"order('000001.XSHE', 100, LimitOrderStyle(10.0)) # 以10块价格下一个限价单\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_target(security, amount, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖标的, 使最终标的的数量达到指定的amount,注意使用此接口下单时若指定的标的有未完成的订单,则先前未完成的订单将会被取消\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的代码\n",
|
||||||
|
"amount: 期望的最终数量\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"# 卖出平安银行所有股票\n",
|
||||||
|
"order_target('000001.XSHE', 0)\n",
|
||||||
|
"# 买入平安银行所有股票到100股\n",
|
||||||
|
"order_target('000001.XSHE', 100)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_value(security, value, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖价值为value的标的。\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 股票名字\n",
|
||||||
|
"\n",
|
||||||
|
"value: 股票价值,value = 最新价 * 手数 * 保证金率(股票为1) * 乘数(股票为100)\n",
|
||||||
|
"\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#卖出价值为10000元的平安银行股票\n",
|
||||||
|
"order_value('000001.XSHE', -10000)\n",
|
||||||
|
"#买入价值为10000元的平安银行股票\n",
|
||||||
|
"order_value('000001.XSHE', 10000)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_target_value(security, value, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"调整标的仓位到value价值,注意使用此接口下单时若指定的标的有未完成的订单,则先前未完成的订单将会被取消\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的名字\n",
|
||||||
|
"value: 期望的标的最终价值,value = 最新价 * 手数 * 保证金率(股票为1) * 乘数(股票为100)\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#卖出平安银行所有股票\n",
|
||||||
|
"order_target_value('000001.XSHE', 0)\n",
|
||||||
|
"#调整平安银行股票仓位到10000元价值\n",
|
||||||
|
"order_target_value('000001.XSHE', 10000)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"聚宽的类研究"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Order对象"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"买卖订单\n",
|
||||||
|
"关于order/trader对象及订单处理\n",
|
||||||
|
"以csv格式保存order、trade、position数据\n",
|
||||||
|
"\n",
|
||||||
|
"status: 状态, 一个OrderStatus值\n",
|
||||||
|
"add_time: 订单添加时间, [datetime.datetime]对象\n",
|
||||||
|
"is_buy: bool值, 买还是卖,对于期货:\n",
|
||||||
|
"开多/平空 -> 买\n",
|
||||||
|
"开空/平多 -> 卖\n",
|
||||||
|
"amount: 下单数量, 不管是买还是卖, 都是正数\n",
|
||||||
|
"filled: 已经成交的股票数量, 正数\n",
|
||||||
|
"security: 股票代码\n",
|
||||||
|
"order_id: 订单ID\n",
|
||||||
|
"price: 平均成交价格, 已经成交的股票的平均成交价格(一个订单可能分多次成交)\n",
|
||||||
|
"avg_cost: 卖出时表示下卖单前的此股票的持仓成本, 用来计算此次卖出的收益. 买入时表示此次买入的均价(等同于price).\n",
|
||||||
|
"side: 多/空,'long'/'short'\n",
|
||||||
|
"action: 开/平, 'open'/'close'\n",
|
||||||
|
"commission:交易费用(佣金、税费等)\n",
|
||||||
|
"orders = order('000001.XSHE', 100)\n",
|
||||||
|
"print(orders)\n",
|
||||||
|
"if orders is None:\n",
|
||||||
|
" print(\"创建订单失败...\")\n",
|
||||||
|
"else:\n",
|
||||||
|
" print(\"交易费用单:{0}\".format(orders.commission))\n",
|
||||||
|
" print(\"是否买单:{0}\".format(orders.is_buy))\n",
|
||||||
|
" print(\"订单状态:{0}\".format(orders.status))\n",
|
||||||
|
" print(\"订单平均成交价格:{0}\".format(orders.price))\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.8.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态
|
||||||
|
0,held,2019-03-19 11:30:00,False,7900,7900,501018.XSHG,1760686687,1.076,1.068,long,5.0,2025-11-06,True
|
||||||
|
1,held,2020-07-06 11:00:00,True,3700,3700,518880.XSHG,1760686663,3.908,3.908,long,5.0,2025-11-06,True
|
||||||
|
2,held,2020-07-06 11:00:00,True,13300,13300,512800.XSHG,1760686664,1.102,1.102,long,5.0,2025-11-06,True
|
||||||
|
3,held,2020-07-07 09:32:00,False,5600,5600,159915.XSHE,1760686665,2.462,2.1073100534162483,long,5.0,2025-11-06,True
|
||||||
|
4,held,2019-03-21 11:30:00,True,5400,5400,159915.XSHE,1760686690,1.622,1.622,long,5.0,2025-11-06,True
|
||||||
|
5,held,2020-07-07 09:32:00,True,10600,10600,515980.XSHG,1760686666,1.279,1.279,long,5.0,2025-11-06,True
|
||||||
|
6,held,2020-07-07 14:45:00,False,3700,3700,518880.XSHG,1760686668,3.908,3.908,long,5.0,2025-11-06,True
|
||||||
|
7,held,2020-07-07 14:45:00,False,13300,13300,512800.XSHG,1760686669,1.152,1.102,long,5.0,2025-11-06,True
|
||||||
|
8,held,2019-03-28 11:30:00,False,5400,5400,159915.XSHE,1760686693,1.57,1.622,long,5.0,2025-11-06,True
|
||||||
|
9,held,2020-07-07 14:45:00,True,700,700,002144.XSHE,1760686670,9.57,9.57,long,5.0,2025-11-06,True
|
||||||
|
10,held,2020-07-07 14:45:00,True,900,900,002843.XSHE,1760686672,8.18,8.18,long,5.0,2025-11-06,True
|
||||||
|
11,held,2019-04-01 09:45:00,False,300,300,000898.XSHE,1760686695,5.79,5.09,long,5.8685,2025-11-06,True
|
||||||
|
12,held,2019-04-01 09:45:00,False,100,100,601997.XSHG,1760686696,13.26,12.86,long,5.663,2025-11-06,True
|
||||||
|
13,held,2019-04-01 09:45:00,True,200,200,000402.XSHE,1760686697,8.88,8.88,long,5.0,2025-11-06,True
|
||||||
|
14,held,2019-04-01 09:45:00,True,100,100,601166.XSHG,1760686698,18.66,18.66,long,5.0,2025-11-06,True
|
||||||
|
15,held,2020-07-10 09:32:00,False,10600,10600,515980.XSHG,1760686676,1.33,1.279,long,5.0,2025-11-06,True
|
||||||
|
16,held,2019-04-01 11:00:00,False,500,500,002633.XSHE,1760686699,10.9,8.54,long,7.725,2025-11-06,True
|
||||||
|
17,held,2020-07-10 09:32:00,True,13700,13700,159980.XSHE,1760686677,1.002,1.002,long,5.0,2025-11-06,True
|
||||||
|
18,held,2020-07-13 09:32:00,False,5500,5500,159915.XSHE,1760686678,2.722,2.1073100534162483,long,5.0,2025-11-06,True
|
||||||
|
19,held,2020-07-13 09:32:00,True,3500,3500,513100.XSHG,1760686679,3.908,3.908,long,5.0,2025-11-06,True
|
||||||
|
20,held,2019-04-01 11:00:00,False,200,200,002729.XSHE,1760686702,28.29,22.18,long,7.829000000000001,2025-11-06,True
|
||||||
|
21,held,2019-04-01 11:00:00,False,200,200,002715.XSHE,1760686703,18.24,19.12,long,6.824,2025-11-06,True
|
||||||
|
22,held,2020-07-20 11:00:00,True,300,300,002921.XSHE,1760686682,21.33,21.33,long,5.0,2025-11-06,True
|
||||||
|
23,held,2019-04-01 11:00:00,True,9400,9400,512800.XSHG,1760686706,1.058,1.058,long,5.0,2025-11-06,True
|
||||||
|
24,held,2020-07-21 09:32:00,False,13700,13700,159980.XSHE,1760686684,1.02,1.002,long,5.0,2025-11-06,True
|
||||||
|
25,held,2020-07-21 09:32:00,True,11300,11300,515980.XSHG,1760686685,1.234,1.234,long,5.0,2025-11-06,True
|
||||||
|
26,held,2019-04-08 11:30:00,True,8000,8000,501018.XSHG,1760686708,1.142,1.142,long,5.0,2025-11-06,True
|
||||||
|
27,held,2020-07-24 09:32:00,False,11300,11300,515980.XSHG,1760686686,1.227,1.234,long,5.0,2025-11-06,True
|
||||||
|
28,held,2020-07-24 09:32:00,True,5100,5100,159915.XSHE,1760686687,2.672,2.672,long,5.0,2025-11-06,True
|
||||||
|
29,held,2020-07-27 09:32:00,False,5100,5100,159915.XSHE,1760686688,2.556,2.672,long,5.0,2025-11-06,True
|
||||||
|
30,held,2020-07-27 09:32:00,True,12100,12100,513030.XSHG,1760686689,1.104,1.104,long,5.0,2025-11-06,True
|
||||||
|
31,held,2019-04-30 11:30:00,False,8000,8000,501018.XSHG,1760686709,1.138,1.142,long,5.0,2025-11-06,True
|
||||||
|
32,held,2019-04-30 11:30:00,True,3200,3200,513100.XSHG,1760686710,2.802,2.802,long,5.0,2025-11-06,True
|
||||||
|
33,held,2020-07-27 11:00:00,True,600,600,002836.XSHE,1760686691,11.03,11.03,long,5.0,2025-11-06,True
|
||||||
|
34,held,2019-05-06 09:45:00,False,300,300,600019.XSHG,1760686711,6.99,6.440000000000001,long,6.0485,2025-11-06,True
|
||||||
|
35,held,2020-07-31 09:32:00,False,12100,12100,513030.XSHG,1760686692,1.08,1.104,long,5.0,2025-11-06,True
|
||||||
|
36,held,2019-05-06 09:45:00,False,600,600,000709.XSHE,1760686712,3.1,3.4,long,5.93,2025-11-06,True
|
||||||
|
37,held,2020-07-31 09:32:00,True,3200,3200,518880.XSHG,1760686693,4.184,4.184,long,5.0,2025-11-06,True
|
||||||
|
38,held,2019-05-06 09:45:00,False,200,200,000402.XSHE,1760686713,7.99,8.880000000000003,long,5.799,2025-11-06,True
|
||||||
|
39,held,2019-05-06 09:45:00,True,400,400,000157.XSHE,1760686714,4.85,4.85,long,5.0,2025-11-06,True
|
||||||
|
40,held,2019-05-06 09:45:00,True,200,200,601186.XSHG,1760686715,10.44,10.44,long,5.0,2025-11-06,True
|
||||||
|
41,held,2020-07-31 14:45:00,True,1200,1200,002357.XSHE,1760686695,5.93,5.93,long,5.0,2025-11-06,True
|
||||||
|
42,held,2019-05-06 09:45:00,True,300,300,600016.XSHG,1760686716,6.27,6.27,long,5.0,2025-11-06,True
|
||||||
|
43,held,2020-08-03 09:45:00,False,400,400,600390.XSHG,1760686696,7.9,7.21,long,6.58,2025-11-06,True
|
||||||
|
44,held,2020-08-03 09:45:00,False,800,800,600027.XSHG,1760686697,3.65,3.524,long,6.46,2025-11-06,True
|
||||||
|
45,held,2020-08-03 09:45:00,False,1100,1100,601618.XSHG,1760686698,2.81,2.528,long,6.5455000000000005,2025-11-06,True
|
||||||
|
46,held,2019-05-06 11:00:00,False,3500,3500,518880.XSHG,1760686717,2.794,2.8037228843736903,long,5.0,2025-11-06,True
|
||||||
|
47,held,2020-08-03 09:45:00,False,500,500,601390.XSHG,1760686699,5.64,5.9,long,6.41,2025-11-06,True
|
||||||
|
48,held,2019-05-06 11:00:00,False,9400,9400,512800.XSHG,1760686718,1.032,1.058,long,5.0,2025-11-06,True
|
||||||
|
49,held,2020-08-03 09:45:00,True,700,700,601169.XSHG,1760686700,4.86,4.86,long,5.0,2025-11-06,True
|
||||||
|
50,held,2020-08-03 09:45:00,True,200,200,601166.XSHG,1760686701,15.77,15.77,long,5.0,2025-11-06,True
|
||||||
|
51,held,2020-08-03 09:45:00,True,600,600,601939.XSHG,1760686702,6.13,6.13,long,5.0,2025-11-06,True
|
||||||
|
52,held,2020-08-03 09:45:00,True,700,700,601328.XSHG,1760686703,4.77,4.77,long,5.0,2025-11-06,True
|
||||||
|
53,held,2019-05-06 11:00:00,True,600,600,002112.XSHE,1760686722,7.58,7.58,long,5.0,2025-11-06,True
|
||||||
|
54,held,2020-08-04 14:45:00,False,600,600,002836.XSHE,1760686704,13.29,11.03,long,8.987,2025-11-06,True
|
||||||
|
55,held,2020-08-04 14:45:00,False,1200,1200,002357.XSHE,1760686705,6.27,5.93,long,8.762,2025-11-06,True
|
||||||
|
56,held,2020-08-04 14:45:00,True,300,300,002760.XSHE,1760686706,22.5,22.5,long,5.0,2025-11-06,True
|
||||||
|
57,held,2020-08-04 14:45:00,True,500,500,002849.XSHE,1760686707,15.22,15.22,long,5.0,2025-11-06,True
|
||||||
|
58,held,2020-08-10 11:00:00,False,900,900,002843.XSHE,1760686708,9.42,8.18,long,9.239,2025-11-06,True
|
||||||
|
59,held,2020-08-10 11:00:00,True,300,300,002800.XSHE,1760686709,23.3,23.3,long,5.0,2025-11-06,True
|
||||||
|
60,held,2019-05-13 11:00:00,True,200,200,002778.XSHE,1760686729,18.03,18.03,long,5.0,2025-11-06,True
|
||||||
|
61,held,2020-08-12 09:32:00,False,3200,3200,518880.XSHG,1760686710,4.017,4.184,long,5.0,2025-11-06,True
|
||||||
|
62,held,2020-08-12 09:32:00,True,13400,13400,159980.XSHE,1760686711,1.035,1.035,long,5.0,2025-11-06,True
|
||||||
|
63,held,2019-05-15 11:30:00,False,3200,3200,513100.XSHG,1760686731,2.653,2.802,long,5.0,2025-11-06,True
|
||||||
|
64,held,2020-08-13 09:32:00,False,13400,13400,159980.XSHE,1760686712,1.04,1.0349999999999997,long,5.0,2025-11-06,True
|
||||||
|
65,held,2019-05-15 11:30:00,True,3500,3500,518880.XSHG,1760686732,2.854,2.854,long,5.0,2025-11-06,True
|
||||||
|
66,held,2020-08-13 09:32:00,True,3400,3400,513100.XSHG,1760686713,4.04,4.04,long,5.0,2025-11-06,True
|
||||||
|
67,held,2020-08-17 11:00:00,False,700,700,002144.XSHE,1760686714,11.25,9.57,long,8.9375,2025-11-06,True
|
||||||
|
68,held,2020-08-17 11:00:00,False,300,300,002760.XSHE,1760686715,22.84,22.5,long,8.426,2025-11-06,True
|
||||||
|
69,held,2020-08-17 11:00:00,False,500,500,002849.XSHE,1760686716,14.87,15.22,long,8.717500000000001,2025-11-06,True
|
||||||
|
70,held,2020-08-17 11:00:00,True,600,600,002576.XSHE,1760686719,11.72,11.72,long,5.0,2025-11-06,True
|
||||||
|
71,held,2019-05-27 11:00:00,False,600,600,002112.XSHE,1760686737,8.82,8.04,long,7.646,2025-11-06,True
|
||||||
|
72,held,2019-05-27 11:00:00,True,200,200,002800.XSHE,1760686738,18.55,18.55,long,5.0,2025-11-06,True
|
||||||
|
73,held,2020-08-19 14:45:00,False,300,300,002921.XSHE,1760686720,22.9,21.33,long,8.435,2025-11-06,True
|
||||||
|
74,held,2019-05-27 11:00:00,True,200,200,002817.XSHE,1760686739,18.94,18.94,long,5.0,2025-11-06,True
|
||||||
|
75,held,2019-05-27 11:00:00,True,300,300,002899.XSHE,1760686740,13.81,13.81,long,5.0,2025-11-06,True
|
||||||
|
76,held,2020-08-19 14:45:00,False,300,300,002800.XSHE,1760686722,25.4,23.3,long,8.81,2025-11-06,True
|
||||||
|
77,held,2019-06-03 09:45:00,False,300,300,601398.XSHG,1760686741,5.67,5.74,long,5.8505,2025-11-06,True
|
||||||
|
78,held,2019-06-03 09:45:00,False,400,400,000157.XSHE,1760686742,5.4,4.849999999999999,long,6.08,2025-11-06,True
|
||||||
|
79,held,2020-08-19 14:45:00,False,600,600,002576.XSHE,1760686725,11.93,11.72,long,8.579,2025-11-06,True
|
||||||
|
80,held,2019-06-03 09:45:00,True,100,100,600739.XSHG,1760686743,12.87,12.87,long,5.0,2025-11-06,True
|
||||||
|
81,held,2020-08-19 14:45:00,True,100,100,511260.XSHG,1760686726,110.634,110.634,long,5.0,2025-11-06,True
|
||||||
|
82,held,2019-06-03 09:45:00,True,200,200,600188.XSHG,1760686744,10.61,10.61,long,5.0,2025-11-06,True
|
||||||
|
83,held,2020-08-19 14:45:00,True,3800,3800,518880.XSHG,1760686727,4.182,4.182,long,5.0,2025-11-06,True
|
||||||
|
84,held,2020-08-19 14:45:00,True,14600,14600,512800.XSHG,1760686728,1.098,1.098,long,5.0,2025-11-06,True
|
||||||
|
85,held,2019-06-03 11:00:00,True,200,200,002760.XSHE,1760686746,17.78,17.78,long,5.0,2025-11-06,True
|
||||||
|
86,held,2020-08-24 11:00:00,False,100,100,511260.XSHG,1760686729,110.209,110.634,long,5.0,2025-11-06,True
|
||||||
|
87,held,2020-08-24 11:00:00,False,3800,3800,518880.XSHG,1760686730,4.06,4.182,long,5.0,2025-11-06,True
|
||||||
|
88,held,2019-06-10 11:00:00,False,200,200,002817.XSHE,1760686747,18.48,18.940000000000005,long,6.848,2025-11-06,True
|
||||||
|
89,held,2020-08-24 11:00:00,False,14600,14600,512800.XSHG,1760686731,1.078,1.098,long,5.0,2025-11-06,True
|
||||||
|
90,held,2020-08-24 11:00:00,True,500,500,002857.XSHE,1760686732,13.75,13.75,long,5.0,2025-11-06,True
|
||||||
|
91,held,2020-08-24 11:00:00,True,700,700,002836.XSHE,1760686733,11.21,11.21,long,5.0,2025-11-06,True
|
||||||
|
92,held,2020-08-24 11:00:00,True,800,800,002112.XSHE,1760686734,9.19,9.19,long,5.0,2025-11-06,True
|
||||||
|
93,held,2020-08-24 11:00:00,True,500,500,002899.XSHE,1760686735,15.39,15.39,long,5.0,2025-11-06,True
|
||||||
|
94,held,2019-06-17 11:00:00,False,200,200,002760.XSHE,1760686750,17.91,17.78,long,6.791,2025-11-06,True
|
||||||
|
95,held,2020-08-24 11:00:00,True,600,600,002805.XSHE,1760686736,12.77,12.77,long,5.0,2025-11-06,True
|
||||||
|
96,held,2019-06-17 11:00:00,True,700,700,002112.XSHE,1760686751,6.78,6.78,long,5.0,2025-11-06,True
|
||||||
|
97,held,2020-08-24 11:00:00,True,2600,2600,002694.XSHE,1760686737,3.09,3.09,long,5.0,2025-11-06,True
|
||||||
|
98,held,2019-06-17 11:00:00,True,200,200,002921.XSHE,1760686752,19.89,19.89,long,5.0,2025-11-06,True
|
||||||
|
99,held,2020-08-25 14:50:00,False,700,700,002836.XSHE,1760686738,11.27,11.210000000000004,long,8.9445,2025-11-06,True
|
||||||
|
100,held,2020-08-26 09:32:00,False,500,500,513100.XSHG,1760686739,4.668,3.9730434782608697,long,5.0,2025-11-06,True
|
||||||
|
101,held,2019-06-24 11:00:00,False,200,200,002890.XSHE,1760686753,20.88,19.170000000000005,long,7.088,2025-11-06,True
|
||||||
|
102,held,2020-08-31 09:32:00,False,3400,3400,513100.XSHG,1760686740,4.932,3.9730434782608697,long,5.0,2025-11-06,True
|
||||||
|
103,held,2019-06-24 11:00:00,False,200,200,002778.XSHE,1760686754,18.55,18.03,long,6.855,2025-11-06,True
|
||||||
|
104,held,2020-08-31 09:32:00,True,14100,14100,159980.XSHE,1760686741,1.084,1.084,long,5.0,2025-11-06,True
|
||||||
|
105,held,2019-06-24 11:00:00,False,200,200,002800.XSHE,1760686755,19.9,18.534,long,6.99,2025-11-06,True
|
||||||
|
106,held,2019-06-24 11:00:00,False,300,300,002899.XSHE,1760686756,13.96,13.716,long,7.093999999999999,2025-11-06,True
|
||||||
|
107,held,2020-08-31 11:00:00,False,500,500,002899.XSHE,1760686742,16.44,15.39,long,9.11,2025-11-06,True
|
||||||
|
108,held,2019-06-24 11:00:00,False,700,700,002112.XSHE,1760686757,7.28,6.78,long,7.548,2025-11-06,True
|
||||||
|
109,held,2020-08-31 11:00:00,False,600,600,002805.XSHE,1760686743,12.89,12.77,long,8.867,2025-11-06,True
|
||||||
|
110,held,2019-06-24 11:00:00,False,200,200,002921.XSHE,1760686758,21.83,19.89,long,7.183,2025-11-06,True
|
||||||
|
111,held,2020-08-31 11:00:00,True,800,800,002633.XSHE,1760686744,9.66,9.66,long,5.0,2025-11-06,True
|
||||||
|
112,held,2019-06-24 11:00:00,True,3400,3400,518880.XSHG,1760686759,3.108,3.108,long,5.0,2025-11-06,True
|
||||||
|
113,held,2019-06-24 11:00:00,True,9700,9700,512800.XSHG,1760686760,1.084,1.084,long,5.0,2025-11-06,True
|
||||||
|
114,held,2019-07-01 09:45:00,False,100,100,600739.XSHG,1760686761,14.72,12.87,long,5.736,2025-11-06,True
|
||||||
|
115,held,2019-07-01 09:45:00,False,200,200,600188.XSHG,1760686762,10.95,10.07,long,6.095,2025-11-06,True
|
||||||
|
116,held,2019-07-01 09:45:00,True,600,600,601988.XSHG,1760686763,3.77,3.77,long,5.0,2025-11-06,True
|
||||||
|
117,held,2019-07-01 09:45:00,True,400,400,601669.XSHG,1760686764,5.38,5.38,long,5.0,2025-11-06,True
|
||||||
|
118,new,2025-10-20 09:27:00,True,100,0,002813.XSHE,1760921898,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
119,held,2025-10-15 09:31:00,True,10300,10300,512800.XSHG,1760926704,0.804,0.804,long,5.0,2025-11-06,True
|
||||||
|
120,held,2025-10-17 14:45:00,True,8400,8400,513100.XSHG,1760926707,1.812,1.812,long,5.0,2025-11-06,True
|
||||||
|
121,held,2025-10-20 11:30:00,False,800,800,518880.XSHG,1760922970,9.33,8.91064,long,5.0,2025-11-06,True
|
||||||
|
122,held,2025-10-20 11:30:00,False,9400,9400,515980.XSHG,1760922971,0.832,0.8170000000000001,long,5.0,2025-11-06,True
|
||||||
|
123,held,2025-10-20 11:30:00,True,8300,8300,513100.XSHG,1760922972,1.848,1.848,long,5.0,2025-11-06,True
|
||||||
|
124,held,2025-10-09 14:45:00,True,17400,17400,513130.XSHG,1760936688,0.86,0.86,long,5.0,2025-11-06,True
|
||||||
|
125,held,2025-10-13 14:45:00,False,17400,17400,513130.XSHG,1760936689,0.811,0.86,long,5.0,2025-11-06,True
|
||||||
|
126,held,2019-01-02 09:31:00,True,2900,2900,518880.XSHG,1760949069,2.824,2.824,long,5.0,2025-11-06,True
|
||||||
|
127,held,2019-01-02 09:31:00,True,9300,9300,512800.XSHG,1760949070,0.892,0.892,long,5.0,2025-11-06,True
|
||||||
|
128,held,2019-01-02 09:34:00,True,300,300,000898.XSHE,1760949071,5.12,5.12,long,5.0,2025-11-06,True
|
||||||
|
129,held,2019-01-02 09:34:00,True,300,300,600019.XSHG,1760949072,6.5,6.5,long,5.0,2025-11-06,True
|
||||||
|
130,held,2019-01-02 09:34:00,True,200,200,600383.XSHG,1760949073,9.55,9.55,long,5.0,2025-11-06,True
|
||||||
|
131,held,2019-01-02 09:34:00,True,900,900,600219.XSHG,1760949074,2.12,2.12,long,5.0,2025-11-06,True
|
||||||
|
132,held,2019-01-02 09:34:00,True,300,300,600028.XSHG,1760949075,5.08,5.08,long,5.0,2025-11-06,True
|
||||||
|
133,held,2019-01-02 14:25:00,True,5200,5200,518880.XSHG,1760949076,2.838,2.838,long,5.0,2025-11-06,True
|
||||||
|
134,held,2019-01-17 14:25:00,False,5200,5200,518880.XSHG,1760949077,2.806,2.832987654320988,long,5.0,2025-11-06,True
|
||||||
|
135,held,2019-01-17 14:25:00,True,15300,15300,501018.XSHG,1760949078,0.985,0.985,long,5.0,2025-11-06,True
|
||||||
|
136,held,2019-02-01 09:34:00,False,200,200,600383.XSHG,1760949079,11.09,9.550000000000002,long,6.109,2025-11-06,True
|
||||||
|
137,held,2019-02-01 09:34:00,True,300,300,600518.XSHG,1760949080,5.95,5.95,long,5.0,2025-11-06,True
|
||||||
|
138,held,2019-02-12 14:25:00,False,15300,15300,501018.XSHG,1760949081,1.008,0.985,long,5.0,2025-11-06,True
|
||||||
|
139,held,2019-02-12 14:25:00,True,6300,6300,513100.XSHG,1760949082,2.46,2.46,long,5.0,2025-11-06,True
|
||||||
|
140,held,2019-02-18 14:25:00,False,6300,6300,513100.XSHG,1760949083,2.488,2.46,long,5.0,2025-11-06,True
|
||||||
|
141,held,2019-02-18 14:25:00,True,11800,11800,159915.XSHE,1760949084,1.352,1.352,long,5.0,2025-11-06,True
|
||||||
|
142,held,2019-02-25 09:31:00,False,2900,2900,518880.XSHG,1760949085,2.854,2.832987654320988,long,5.0,2025-11-06,True
|
||||||
|
143,held,2019-02-25 09:31:00,False,9300,9300,512800.XSHG,1760949086,0.99,0.892,long,5.0,2025-11-06,True
|
||||||
|
144,held,2019-02-25 09:31:00,True,500,500,002633.XSHE,1760949087,8.54,8.54,long,5.0,2025-11-06,True
|
||||||
|
145,held,2019-02-25 09:31:00,True,200,200,002890.XSHE,1760949088,19.45,19.45,long,5.0,2025-11-06,True
|
||||||
|
146,new,2025-10-21 09:27:00,True,500,0,002825.XSHE,1761008297,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
147,new,2025-10-21 09:27:00,True,500,0,002208.XSHE,1761008298,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
148,held,2025-10-21 13:00:00,False,100,100,002813.XSHE,1761022735,27.93,27.82,long,2.3965,2025-11-06,True
|
||||||
|
149,new,2025-10-22 09:27:00,True,200,0,002893.XSHE,1761094698,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
150,held,2025-10-22 13:00:00,False,1000,1000,002775.XSHE,1761109138,4.79,4.7,long,3.395,2025-11-06,True
|
||||||
|
151,held,2025-10-22 13:00:00,False,500,500,002825.XSHE,1761109139,11.76,12.38,long,3.94,2025-11-06,True
|
||||||
|
152,held,2025-10-22 13:00:00,False,500,500,002208.XSHE,1761109140,14.78,12.75,long,4.695,2025-11-06,True
|
||||||
|
153,new,2025-10-24 09:27:00,True,800,0,002370.XSHE,1761267504,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
154,new,2025-10-24 09:27:00,True,800,0,002546.XSHE,1761267505,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
155,new,2025-10-24 09:27:00,True,400,0,002900.XSHE,1761267506,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
156,held,2025-10-24 11:30:00,False,8300,8300,513100.XSHG,1761267474,1.902,1.848,long,5.0,2025-11-06,True
|
||||||
|
157,held,2025-10-24 11:30:00,True,1700,1700,518880.XSHG,1761267475,9.012,9.012,long,5.0,2025-11-06,True
|
||||||
|
158,held,2025-10-09 11:00:00,True,900,900,518880.XSHG,1761278015,8.71,8.71,long,5.0,2025-11-06,True
|
||||||
|
159,held,2025-10-09 11:00:00,True,10700,10700,512800.XSHG,1761278016,0.774,0.774,long,5.0,2025-11-06,True
|
||||||
|
160,held,2025-10-09 14:25:00,True,17300,17300,513130.XSHG,1761278017,0.863,0.863,long,5.0,2025-11-06,True
|
||||||
|
161,held,2025-10-10 14:25:00,False,17300,17300,513130.XSHG,1761278018,0.836,0.863,long,5.0,2025-11-06,True
|
||||||
|
162,held,2025-10-10 14:25:00,True,16900,16900,515980.XSHG,1761278019,0.876,0.876,long,5.0,2025-11-06,True
|
||||||
|
163,held,2025-10-13 14:25:00,False,16900,16900,515980.XSHG,1761278020,0.858,0.876,long,5.0,2025-11-06,True
|
||||||
|
164,held,2025-10-13 14:25:00,True,1600,1600,518880.XSHG,1761278021,8.862,8.862,long,5.0,2025-11-06,True
|
||||||
|
165,held,2025-10-17 14:25:00,False,1600,1600,518880.XSHG,1761278022,9.548,8.807280000000002,long,5.0,2025-11-06,True
|
||||||
|
166,held,2025-10-17 14:25:00,True,8500,8500,513100.XSHG,1761278023,1.812,1.812,long,5.0,2025-11-06,True
|
||||||
|
167,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,,1732208241,10.5,10.59,long,128.31,2025-11-06,True
|
||||||
|
168,held,2025-10-24 13:00:00,False,200,200,002893.XSHE,1761281943,12.1,12.95,long,2.21,2025-11-06,True
|
||||||
|
169,new,2025-10-27 09:27:00,True,400,0,002054.XSHE,1761526696,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
170,held,2025-10-27 13:00:00,False,800,800,002370.XSHE,1761541152,7.21,7.28,long,3.884,2025-11-06,True
|
||||||
|
171,held,2025-10-27 13:00:00,False,800,800,002546.XSHE,1761541153,7.21,6.94,long,3.884,2025-11-06,True
|
||||||
|
172,new,2025-10-28 09:27:00,True,1100,0,002682.XSHE,1761613082,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
173,new,2025-10-28 09:27:00,True,400,0,002457.XSHE,1761613083,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
174,held,2025-10-28 13:00:00,False,400,400,002054.XSHE,1761627544,8.83,8.4,long,2.766,2025-11-06,True
|
||||||
|
175,new,2025-10-29 09:27:00,True,200,0,002104.XSHE,1761699499,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
176,held,2025-10-29 11:30:00,False,1700,1700,518880.XSHG,1761699469,8.66,8.976913846153847,long,5.0,2025-11-06,True
|
||||||
|
177,held,2025-10-29 11:30:00,True,7600,7600,513100.XSHG,1761699470,1.99,1.99,long,5.0,2025-11-06,True
|
||||||
|
178,held,2025-10-29 13:00:00,False,400,400,002900.XSHE,1761713952,13.68,14.0,long,3.736,2025-11-06,True
|
||||||
|
179,new,2025-10-30 09:27:00,True,1200,0,002512.XSHE,1761785883,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
180,held,2025-10-30 13:00:00,False,1100,1100,002682.XSHE,1761800353,4.86,5.11,long,3.673,2025-11-06,True
|
||||||
|
181,held,2025-10-30 14:55:00,False,400,400,002457.XSHE,1761800354,11.65,12.1,long,3.33,2025-11-06,True
|
||||||
|
182,held,2025-10-13 09:32:00,False,2800,2800,601939.XSHG,1761872612,8.72,8.64,long,17.208,2025-11-06,True
|
||||||
|
183,held,2025-10-14 09:31:00,True,3600,3600,601288.XSHG,1761872615,6.84,6.84,long,5.0,2025-11-06,True
|
||||||
|
184,held,2025-10-15 09:39:00,False,3600,3600,601288.XSHG,1761872616,7.17,6.84,long,17.906,2025-11-06,True
|
||||||
|
185,held,2025-10-15 09:39:00,True,3400,3400,601398.XSHG,1761872617,7.51,7.51,long,5.0,2025-11-06,True
|
||||||
|
186,held,2025-10-16 09:58:00,False,3400,3400,601398.XSHG,1761872618,7.52,7.51,long,17.784,2025-11-06,True
|
||||||
|
187,held,2025-10-16 09:58:00,True,3500,3500,601288.XSHG,1761872619,7.29,7.29,long,5.0,2025-11-06,True
|
||||||
|
188,held,2025-10-17 09:31:00,False,3500,3500,601288.XSHG,1761872620,7.55,7.29,long,18.2125,2025-11-06,True
|
||||||
|
189,held,2025-10-17 09:31:00,True,4800,4800,601988.XSHG,1761872621,5.4,5.4,long,5.0,2025-11-06,True
|
||||||
|
190,held,2025-10-20 09:31:00,False,4800,4800,601988.XSHG,1761872622,5.29,5.4,long,17.695999999999998,2025-11-06,True
|
||||||
|
191,held,2025-10-20 09:31:00,True,3400,3400,601288.XSHG,1761872623,7.44,7.44,long,5.0,2025-11-06,True
|
||||||
|
192,held,2025-10-21 09:37:00,False,3400,3400,601288.XSHG,1761872624,7.78,7.44,long,18.226,2025-11-06,True
|
||||||
|
193,held,2025-10-21 09:37:00,True,2800,2800,601939.XSHG,1761872625,9.24,9.24,long,5.0,2025-11-06,True
|
||||||
|
194,new,2025-10-31 09:27:00,True,1000,0,002689.XSHE,1761872299,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
195,new,2025-10-31 09:27:00,True,400,0,002212.XSHE,1761872300,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
196,held,2025-11-03 13:00:00,False,200,200,002104.XSHE,1762145948,21.38,23.21,long,3.138,2025-11-06,True
|
||||||
|
197,held,2025-11-03 13:00:00,False,1200,1200,002512.XSHE,1762145949,4.69,4.94,long,3.814000000000001,2025-11-06,True
|
||||||
|
198,held,2025-11-03 13:00:00,False,1000,1000,002689.XSHE,1762145950,5.0,4.8,long,3.5,2025-11-06,True
|
||||||
|
199,held,2025-11-03 13:00:00,False,400,400,002212.XSHE,1762145951,10.94,10.38,long,3.188,2025-11-06,True
|
||||||
|
200,new,2025-11-04 09:27:00,True,1500,0,002374.XSHE,1762217892,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
201,new,2025-11-04 09:27:00,True,900,0,002522.XSHE,1762217893,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
202,new,2025-11-04 09:27:00,True,100,0,002812.XSHE,1762217894,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
203,held,2025-11-04 09:33:00,False,3700,3700,601288.XSHG,1762219696,8.07,7.99,long,19.9295,2025-11-06,True
|
||||||
|
204,held,2025-11-04 09:33:00,True,3800,3800,601398.XSHG,1762219697,7.92,7.92,long,5.0,2025-11-06,True
|
||||||
|
205,new,2025-11-05 09:27:00,True,600,0,002370.XSHE,1762304293,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
206,held,2025-11-05 09:31:00,False,3800,3800,601398.XSHG,1762306091,8.18,7.92,long,20.542,2025-11-06,True
|
||||||
|
207,held,2025-11-05 09:31:00,True,5300,5300,601988.XSHG,1762306092,5.74,5.74,long,5.0,2025-11-06,True
|
||||||
|
208,held,2025-11-05 13:00:00,False,1500,1500,002374.XSHE,1762318750,3.31,3.25,long,3.4825,2025-11-06,True
|
||||||
|
209,held,2025-11-05 14:55:00,False,900,900,002522.XSHE,1762318751,5.35,5.34,long,3.4075,2025-11-06,True
|
||||||
|
210,new,2025-11-06 09:27:00,True,900,0,002512.XSHE,1762390693,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
211,new,2025-11-06 09:27:00,True,300,0,002248.XSHE,1762390694,0.0,0.0,long,0.0,2025-11-06,True
|
||||||
|
212,held,2025-11-06 09:46:00,False,5300,5300,601988.XSHG,1762392499,5.68,5.74,long,20.052,2025-11-06,True
|
||||||
|
213,held,2025-11-06 09:46:00,True,3700,3700,601288.XSHG,1762392500,8.13,8.13,long,5.0,2025-11-06,True
|
||||||
|
215,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,001.XSHE,1732208241,10.5,10.59,long,128.31,2025-11-06,True
|
||||||
|
216,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,001.XSHE,1732208241,10.5,10.59,long,128.31,2025-11-06,True
|
||||||
|
@@ -0,0 +1,286 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态
|
||||||
|
0,held,2025-07-10 13:00:00,False,3500,3500.0,002562.XSHE,1761187270.0,6.45,5.82,long,13.545,2025-11-05,True
|
||||||
|
1,held,2025-07-10 13:00:00,False,2100,2100.0,002094.XSHE,1761187271.0,9.76,9.49,long,12.2976,2025-11-05,True
|
||||||
|
2,held,2025-07-10 13:00:00,False,4300,4300.0,002721.XSHE,1761187272.0,4.86,4.63,long,12.5388,2025-11-05,True
|
||||||
|
3,new,2025-07-11 09:27:00,True,3000,0.0,002520.XSHE,1761187273.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
4,held,2025-07-11 13:00:00,False,5200,5200.0,002263.XSHE,1761187274.0,4.06,4.52,long,12.6672,2025-11-05,True
|
||||||
|
5,new,2025-07-14 09:27:00,True,600,0.0,002657.XSHE,1761187275.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
6,new,2025-07-14 09:27:00,True,1000,0.0,003005.XSHE,1761187276.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
7,new,2025-07-14 09:27:00,True,6800,0.0,002437.XSHE,1761187277.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
8,held,2025-07-14 13:00:00,False,3000,3000.0,002520.XSHE,1761187278.0,7.27,6.99,long,13.086,2025-11-05,True
|
||||||
|
9,new,2025-07-15 09:27:00,True,3300,0.0,002279.XSHE,1761187279.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
10,held,2025-07-16 13:00:00,False,1000,1000.0,003005.XSHE,1761187280.0,21.29,21.21,long,12.774,2025-11-05,True
|
||||||
|
11,held,2025-07-16 13:00:00,False,6800,6800.0,002437.XSHE,1761187281.0,3.14,3.13,long,12.8112,2025-11-05,True
|
||||||
|
12,held,2025-07-16 13:00:00,False,3300,3300.0,002279.XSHE,1761187282.0,7.06,7.04,long,13.9788,2025-11-05,True
|
||||||
|
13,new,2025-07-17 09:27:00,True,1500,0.0,002725.XSHE,1761187283.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
14,new,2025-07-17 09:27:00,True,5900,0.0,002131.XSHE,1761187284.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
15,new,2025-07-17 09:27:00,True,3000,0.0,002161.XSHE,1761187285.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
16,held,2025-07-18 13:00:00,False,1500,1500.0,002725.XSHE,1761187286.0,13.98,13.88,long,12.582,2025-11-05,True
|
||||||
|
17,held,2025-07-18 14:55:00,False,600,600.0,002657.XSHE,1761187287.0,30.47,32.91,long,10.9692,2025-11-05,True
|
||||||
|
18,new,2025-07-21 09:27:00,True,1000,0.0,002229.XSHE,1761187288.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
19,new,2025-07-21 09:27:00,True,1800,0.0,002394.XSHE,1761187289.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
20,held,2025-07-21 13:00:00,False,5900,5900.0,002131.XSHE,1761187290.0,3.85,3.75,long,13.629,2025-11-05,True
|
||||||
|
21,new,2025-07-22 09:27:00,True,2000,0.0,002167.XSHE,1761187291.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
22,held,2025-07-22 14:55:00,False,1800,1800.0,002394.XSHE,1761187292.0,10.17,10.57,long,10.9836,2025-11-05,True
|
||||||
|
23,new,2025-07-23 09:27:00,True,1300,0.0,002809.XSHE,1761187293.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
24,held,2025-07-23 13:00:00,False,1000,1000.0,002229.XSHE,1761187294.0,18.77,19.58,long,11.262,2025-11-05,True
|
||||||
|
25,held,2025-07-23 13:00:00,False,2000,2000.0,002167.XSHE,1761187295.0,13.08,12.7,long,15.696,2025-11-05,True
|
||||||
|
26,new,2025-07-24 09:27:00,True,1700,0.0,002205.XSHE,1761187296.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
27,held,2025-07-24 13:00:00,False,3000,3000.0,002161.XSHE,1761187297.0,7.16,7.13,long,12.888,2025-11-05,True
|
||||||
|
28,new,2025-07-25 09:27:00,True,1800,0.0,002639.XSHE,1761187298.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
29,new,2025-07-25 09:27:00,True,1200,0.0,002771.XSHE,1761187299.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
30,held,2025-07-25 13:00:00,False,1300,1300.0,002809.XSHE,1761187300.0,12.91,13.85,long,10.0698,2025-11-05,True
|
||||||
|
31,held,2025-07-25 13:00:00,False,1700,1700.0,002205.XSHE,1761187301.0,13.37,12.72,long,13.6374,2025-11-05,True
|
||||||
|
32,new,2025-07-28 09:27:00,True,4700,0.0,002596.XSHE,1761187302.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
33,new,2025-07-28 09:27:00,True,1200,0.0,002240.XSHE,1761187303.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
34,held,2025-07-28 13:00:00,False,1200,1200.0,002771.XSHE,1761187304.0,17.86,17.84,long,12.8592,2025-11-05,True
|
||||||
|
35,new,2025-07-29 09:27:00,True,3000,0.0,002298.XSHE,1761187305.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
36,held,2025-07-29 13:00:00,False,1800,1800.0,002639.XSHE,1761187306.0,11.01,11.85,long,11.8908,2025-11-05,True
|
||||||
|
37,held,2025-07-29 13:00:00,False,4700,4700.0,002596.XSHE,1761187307.0,4.09,4.46,long,11.5338,2025-11-05,True
|
||||||
|
38,held,2025-07-29 13:00:00,False,1200,1200.0,002240.XSHE,1761187308.0,16.46,16.22,long,11.8512,2025-11-05,True
|
||||||
|
39,new,2025-07-30 09:27:00,True,2000,0.0,002278.XSHE,1761187310.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
40,new,2025-07-30 09:27:00,True,1300,0.0,002205.XSHE,1761187311.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
41,held,2025-07-31 13:00:00,False,2000,2000.0,002278.XSHE,1761187313.0,9.9,9.67,long,11.88,2025-11-05,True
|
||||||
|
42,held,2025-07-31 14:55:00,False,1300,1300.0,002205.XSHE,1761187314.0,13.79,14.2,long,10.7562,2025-11-05,True
|
||||||
|
43,new,2025-08-01 09:27:00,True,2500,0.0,002570.XSHE,1761187315.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
44,new,2025-08-01 09:27:00,True,1700,0.0,002905.XSHE,1761187316.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
45,new,2025-08-01 09:27:00,True,2200,0.0,002564.XSHE,1761187317.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
46,held,2025-08-01 13:00:00,False,3000,3000.0,002298.XSHE,1761187318.0,7.23,7.51,long,13.014,2025-11-05,True
|
||||||
|
47,new,2025-08-04 09:27:00,True,1900,0.0,002272.XSHE,1761187319.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
48,held,2025-08-04 14:55:00,False,2500,2500.0,002570.XSHE,1761187320.0,7.39,7.37,long,11.085,2025-11-05,True
|
||||||
|
49,new,2025-08-05 09:27:00,True,2300,0.0,002370.XSHE,1761187321.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
50,held,2025-08-05 13:00:00,False,1700,1700.0,002905.XSHE,1761187322.0,9.64,10.66,long,9.8328,2025-11-05,True
|
||||||
|
51,held,2025-08-05 13:00:00,False,2200,2200.0,002564.XSHE,1761187323.0,8.54,8.49,long,11.272799999999998,2025-11-05,True
|
||||||
|
52,held,2025-08-05 13:00:00,False,1900,1900.0,002272.XSHE,1761187324.0,12.85,12.25,long,14.649,2025-11-05,True
|
||||||
|
53,new,2025-08-06 09:27:00,True,400,0.0,002977.XSHE,1761187325.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
54,new,2025-08-06 09:27:00,True,400,0.0,002265.XSHE,1761187326.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
55,new,2025-08-06 09:27:00,True,1500,0.0,002651.XSHE,1761187327.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
56,long,128.31,2025-10-23,True,,,,,,,,2025-11-05,True
|
||||||
|
57,held,2025-08-07 13:00:00,False,2300,2300.0,002370.XSHE,1761187328.0,6.74,7.71,long,9.3012,2025-11-05,True
|
||||||
|
58,held,2025-08-07 13:00:00,False,400,400.0,002977.XSHE,1761187329.0,41.36,41.12,long,9.9264,2025-11-05,True
|
||||||
|
59,held,2025-08-07 13:00:00,False,400,400.0,002265.XSHE,1761187330.0,43.57,42.02,long,10.4568,2025-11-05,True
|
||||||
|
60,held,2025-08-07 13:00:00,False,1500,1500.0,002651.XSHE,1761187331.0,14.25,13.42,long,12.825,2025-11-05,True
|
||||||
|
61,new,2025-08-08 09:27:00,True,900,0.0,002536.XSHE,1761187332.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
62,new,2025-08-08 09:27:00,True,500,0.0,002190.XSHE,1761187333.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
63,new,2025-08-08 09:27:00,True,2100,0.0,002331.XSHE,1761187334.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
64,new,2025-08-08 09:27:00,True,1200,0.0,002885.XSHE,1761187335.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
65,held,2025-08-11 13:00:00,False,900,900.0,002536.XSHE,1761187336.0,21.87,20.0,long,11.8098,2025-11-05,True
|
||||||
|
66,held,2025-08-11 13:00:00,False,500,500.0,002190.XSHE,1761187337.0,37.73,37.39,long,11.319,2025-11-05,True
|
||||||
|
67,held,2025-08-11 13:00:00,False,1200,1200.0,002885.XSHE,1761187338.0,16.2,15.69,long,11.664,2025-11-05,True
|
||||||
|
68,new,2025-08-12 09:27:00,True,1800,0.0,002706.XSHE,1761187339.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
69,new,2025-08-12 09:27:00,True,400,0.0,002837.XSHE,1761187340.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
70,new,2025-08-12 09:27:00,True,1700,0.0,002674.XSHE,1761187341.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
71,held,2025-08-12 13:00:00,False,2100,2100.0,002331.XSHE,1761187342.0,9.26,9.0,long,11.6676,2025-11-05,True
|
||||||
|
72,new,2025-08-13 09:27:00,True,700,0.0,002915.XSHE,1761187343.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
73,held,2025-08-13 13:00:00,False,400,400.0,002837.XSHE,1761187344.0,56.55,50.01,long,13.572,2025-11-05,True
|
||||||
|
74,held,2025-08-13 13:00:00,False,1700,1700.0,002674.XSHE,1761187345.0,11.67,11.61,long,11.9034,2025-11-05,True
|
||||||
|
75,new,2025-08-14 09:27:00,True,3800,0.0,002307.XSHE,1761187346.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
76,new,2025-08-14 09:27:00,True,6200,0.0,002622.XSHE,1761187347.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
77,held,2025-08-14 13:00:00,False,700,700.0,002915.XSHE,1761187348.0,29.7,28.42,long,12.474,2025-11-05,True
|
||||||
|
78,held,2025-08-14 14:55:00,False,1800,1800.0,002706.XSHE,1761187349.0,10.5,11.34,long,11.340000000000002,2025-11-05,True
|
||||||
|
79,new,2025-08-15 09:27:00,True,1600,0.0,002148.XSHE,1761187350.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
80,new,2025-08-15 09:27:00,True,2100,0.0,002298.XSHE,1761187351.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
81,held,2025-08-15 13:00:00,False,6200,6200.0,002622.XSHE,1761187352.0,3.69,3.5,long,13.7268,2025-11-05,True
|
||||||
|
82,new,2025-08-18 09:27:00,True,900,0.0,002173.XSHE,1761187353.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
83,held,2025-08-18 13:00:00,False,3800,3800.0,002307.XSHE,1761187354.0,4.9,5.4,long,11.172,2025-11-05,True
|
||||||
|
84,held,2025-08-18 13:00:00,False,1600,1600.0,002148.XSHE,1761187355.0,14.0,12.45,long,13.44,2025-11-05,True
|
||||||
|
85,held,2025-08-18 14:55:00,False,2100,2100.0,002298.XSHE,1761187356.0,11.27,9.33,long,14.2002,2025-11-05,True
|
||||||
|
86,new,2025-08-19 09:27:00,True,1600,0.0,002598.XSHE,1761187357.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
87,new,2025-08-19 09:27:00,True,4300,0.0,002551.XSHE,1761187358.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
88,new,2025-08-19 09:27:00,True,3100,0.0,002909.XSHE,1761187359.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
89,held,2025-08-20 13:00:00,False,900,900.0,002173.XSHE,1761187360.0,22.83,26.1,long,12.3282,2025-11-05,True
|
||||||
|
90,held,2025-08-20 13:00:00,False,3100,3100.0,002909.XSHE,1761187361.0,7.0,6.95,long,13.02,2025-11-05,True
|
||||||
|
91,held,2025-08-21 13:00:00,False,4300,4300.0,002551.XSHE,1761187364.0,4.7,5.01,long,12.126,2025-11-05,True
|
||||||
|
92,new,2025-08-22 09:27:00,True,600,0.0,002553.XSHE,1761187365.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
93,held,2025-08-22 13:00:00,False,1600,1600.0,002598.XSHE,1761187366.0,12.57,13.0,long,12.0672,2025-11-05,True
|
||||||
|
94,new,2025-08-25 09:27:00,True,3600,0.0,002640.XSHE,1761187368.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
95,new,2025-08-25 09:27:00,True,1900,0.0,002278.XSHE,1761187369.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
96,held,2025-08-25 13:00:00,False,600,600.0,002553.XSHE,1761187371.0,34.38,31.82,long,12.3768,2025-11-05,True
|
||||||
|
97,new,2025-08-26 09:27:00,True,2200,0.0,002177.XSHE,1761187372.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
98,new,2025-08-26 09:27:00,True,1000,0.0,002272.XSHE,1761187373.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
99,held,2025-08-26 13:00:00,False,3600,3600.0,002640.XSHE,1761187374.0,6.0,5.98,long,12.96,2025-11-05,True
|
||||||
|
100,new,2025-08-27 09:27:00,True,400,0.0,002190.XSHE,1761187375.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
101,held,2025-08-27 13:00:00,False,1900,1900.0,002278.XSHE,1761187376.0,11.15,11.14,long,12.711,2025-11-05,True
|
||||||
|
102,held,2025-08-27 13:00:00,False,1000,1000.0,002272.XSHE,1761187377.0,20.09,19.36,long,12.054,2025-11-05,True
|
||||||
|
103,held,2025-08-27 14:55:00,False,2200,2200.0,002177.XSHE,1761187378.0,8.42,9.58,long,11.1144,2025-11-05,True
|
||||||
|
104,new,2025-08-28 09:27:00,True,1700,0.0,002298.XSHE,1761187379.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
105,new,2025-08-28 09:27:00,True,1300,0.0,002953.XSHE,1761187380.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
106,new,2025-08-28 09:27:00,True,3900,0.0,002131.XSHE,1761187381.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
107,held,2025-08-29 13:00:00,False,400,400.0,002190.XSHE,1761187382.0,48.14,55.0,long,11.5536,2025-11-05,True
|
||||||
|
108,held,2025-08-29 13:00:00,False,1700,1700.0,002298.XSHE,1761187383.0,11.33,11.61,long,11.5566,2025-11-05,True
|
||||||
|
109,held,2025-08-29 13:00:00,False,3900,3900.0,002131.XSHE,1761187384.0,5.26,5.08,long,12.3084,2025-11-05,True
|
||||||
|
110,new,2025-09-01 09:27:00,True,2000,0.0,002165.XSHE,1761187385.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
111,new,2025-09-01 09:27:00,True,1600,0.0,002842.XSHE,1761187386.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
112,new,2025-09-01 09:27:00,True,1100,0.0,002815.XSHE,1761187387.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
113,held,2025-09-01 13:00:00,False,1300,1300.0,002953.XSHE,1761187388.0,15.55,15.02,long,12.129,2025-11-05,True
|
||||||
|
114,new,2025-09-02 09:27:00,True,1900,0.0,002530.XSHE,1761187389.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
115,held,2025-09-02 13:00:00,False,2000,2000.0,002165.XSHE,1761187390.0,10.09,9.93,long,12.108,2025-11-05,True
|
||||||
|
116,held,2025-09-02 13:00:00,False,1600,1600.0,002842.XSHE,1761187391.0,12.54,12.45,long,12.0384,2025-11-05,True
|
||||||
|
117,held,2025-09-02 13:00:00,False,1100,1100.0,002815.XSHE,1761187392.0,16.15,17.22,long,10.659,2025-11-05,True
|
||||||
|
118,new,2025-09-03 09:27:00,True,3300,0.0,002131.XSHE,1761187393.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
119,new,2025-09-03 09:27:00,True,2000,0.0,002642.XSHE,1761187394.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
120,new,2025-09-03 09:27:00,True,400,0.0,002074.XSHE,1761187395.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
121,held,2025-09-03 14:55:00,False,1900,1900.0,002530.XSHE,1761187396.0,10.86,11.6,long,12.3804,2025-11-05,True
|
||||||
|
122,new,2025-09-04 09:27:00,True,2800,0.0,002031.XSHE,1761187397.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
123,held,2025-09-04 13:00:00,False,3300,3300.0,002131.XSHE,1761187398.0,5.35,5.86,long,10.593,2025-11-05,True
|
||||||
|
124,held,2025-09-04 13:00:00,False,2000,2000.0,002642.XSHE,1761187399.0,9.02,9.4,long,10.824,2025-11-05,True
|
||||||
|
125,held,2025-09-04 13:00:00,False,400,400.0,002074.XSHE,1761187400.0,41.9,40.33,long,10.056,2025-11-05,True
|
||||||
|
126,new,2025-09-05 09:27:00,True,2500,0.0,002514.XSHE,1761187401.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
127,new,2025-09-05 09:27:00,True,6200,0.0,002021.XSHE,1761187402.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
128,held,2025-09-05 13:00:00,False,2800,2800.0,002031.XSHE,1761187403.0,9.02,8.8,long,15.1536,2025-11-05,True
|
||||||
|
129,new,2025-09-08 09:27:00,True,4300,0.0,002067.XSHE,1761187404.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
130,new,2025-09-08 09:27:00,True,3400,0.0,002251.XSHE,1761187405.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
131,held,2025-09-08 13:00:00,False,2500,2500.0,002514.XSHE,1761187406.0,7.39,6.91,long,11.085,2025-11-05,True
|
||||||
|
132,new,2025-09-09 09:27:00,True,1200,0.0,002858.XSHE,1761187407.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
133,held,2025-09-09 13:00:00,False,4300,4300.0,002067.XSHE,1761187408.0,5.34,5.04,long,13.7772,2025-11-05,True
|
||||||
|
134,held,2025-09-09 13:00:00,False,3400,3400.0,002251.XSHE,1761187409.0,6.6,6.39,long,13.464,2025-11-05,True
|
||||||
|
135,new,2025-09-10 09:27:00,True,1800,0.0,002115.XSHE,1761187410.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
136,new,2025-09-10 09:27:00,True,1300,0.0,002407.XSHE,1761187411.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
137,held,2025-09-10 13:00:00,False,6200,6200.0,002021.XSHE,1761187412.0,2.69,2.72,long,10.0068,2025-11-05,True
|
||||||
|
138,held,2025-09-10 13:00:00,False,1200,1200.0,002858.XSHE,1761187413.0,15.94,15.44,long,11.4768,2025-11-05,True
|
||||||
|
139,new,2025-09-11 09:27:00,True,2700,0.0,002547.XSHE,1761187415.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
140,held,2025-09-11 13:00:00,False,1800,1800.0,002115.XSHE,1761187416.0,14.25,12.29,long,15.39,2025-11-05,True
|
||||||
|
141,held,2025-09-11 13:00:00,False,1300,1300.0,002407.XSHE,1761187417.0,17.67,17.01,long,13.782600000000002,2025-11-05,True
|
||||||
|
142,new,2025-09-12 09:27:00,True,1700,0.0,002115.XSHE,1761187418.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
143,new,2025-09-12 09:27:00,True,4100,0.0,002131.XSHE,1761187419.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
144,held,2025-09-12 13:00:00,False,2700,2700.0,002547.XSHE,1761187421.0,6.58,6.5,long,10.6596,2025-11-05,True
|
||||||
|
145,new,2025-09-15 09:27:00,True,700,0.0,002130.XSHE,1761187422.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
146,new,2025-09-15 09:27:00,True,900,0.0,002527.XSHE,1761187423.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
147,held,2025-09-15 14:55:00,False,1700,1700.0,002115.XSHE,1761187424.0,12.71,14.09,long,12.9642,2025-11-05,True
|
||||||
|
148,new,2025-09-16 09:27:00,True,2300,0.0,002772.XSHE,1761187425.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
149,held,2025-09-16 13:00:00,False,4100,4100.0,002131.XSHE,1761187426.0,6.32,6.09,long,15.5472,2025-11-05,True
|
||||||
|
150,held,2025-09-16 13:00:00,False,700,700.0,002130.XSHE,1761187427.0,27.25,26.61,long,11.445,2025-11-05,True
|
||||||
|
151,held,2025-09-16 13:00:00,False,900,900.0,002527.XSHE,1761187428.0,20.93,19.98,long,11.3022,2025-11-05,True
|
||||||
|
152,new,2025-09-17 09:27:00,True,4000,0.0,002471.XSHE,1761187429.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
153,new,2025-09-17 09:27:00,True,4400,0.0,002418.XSHE,1761187430.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
154,new,2025-09-17 09:27:00,True,2500,0.0,002055.XSHE,1761187431.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
155,held,2025-09-17 13:00:00,False,2300,2300.0,002772.XSHE,1761187432.0,10.28,9.95,long,14.1864,2025-11-05,True
|
||||||
|
156,new,2025-09-18 09:27:00,True,1400,0.0,002759.XSHE,1761187433.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
157,held,2025-09-18 13:00:00,False,4400,4400.0,002418.XSHE,1761187434.0,4.88,4.74,long,12.8832,2025-11-05,True
|
||||||
|
158,held,2025-09-18 13:00:00,False,2500,2500.0,002055.XSHE,1761187435.0,8.65,8.41,long,12.975,2025-11-05,True
|
||||||
|
159,new,2025-09-19 09:27:00,True,1700,0.0,002148.XSHE,1761187436.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
160,held,2025-09-19 13:00:00,False,1400,1400.0,002759.XSHE,1761187438.0,16.19,17.66,long,13.5996,2025-11-05,True
|
||||||
|
161,held,2025-09-19 14:55:00,False,4000,4000.0,002471.XSHE,1761187439.0,4.94,5.19,long,11.856000000000002,2025-11-05,True
|
||||||
|
162,new,2025-09-22 09:27:00,True,1100,0.0,002272.XSHE,1761187440.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
163,new,2025-09-22 09:27:00,True,400,0.0,002768.XSHE,1761187441.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
164,held,2025-09-22 13:00:00,False,1700,1700.0,002148.XSHE,1761187442.0,10.79,11.77,long,11.0058,2025-11-05,True
|
||||||
|
165,new,2025-09-23 09:27:00,True,1300,0.0,002097.XSHE,1761187444.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
166,new,2025-09-23 09:27:00,True,2400,0.0,002584.XSHE,1761187445.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
167,held,2025-09-23 13:00:00,False,1100,1100.0,002272.XSHE,1761187446.0,18.94,17.99,long,12.5004,2025-11-05,True
|
||||||
|
168,held,2025-09-23 13:00:00,False,400,400.0,002768.XSHE,1761187447.0,45.49,47.36,long,10.9176,2025-11-05,True
|
||||||
|
169,new,2025-09-24 09:27:00,True,1800,0.0,002298.XSHE,1761187448.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
170,new,2025-09-24 09:27:00,True,1300,0.0,002849.XSHE,1761187449.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
171,held,2025-09-24 13:00:00,False,1300,1300.0,002097.XSHE,1761187450.0,14.74,16.03,long,11.4972,2025-11-05,True
|
||||||
|
172,held,2025-09-24 13:00:00,False,2400,2400.0,002584.XSHE,1761187451.0,9.99,8.98,long,14.3856,2025-11-05,True
|
||||||
|
173,new,2025-09-25 09:27:00,True,800,0.0,002549.XSHE,1761187452.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
174,new,2025-09-25 09:27:00,True,1900,0.0,002249.XSHE,1761187453.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
175,held,2025-09-25 13:00:00,False,1300,1300.0,002849.XSHE,1761187454.0,15.57,16.01,long,12.1446,2025-11-05,True
|
||||||
|
176,new,2025-09-26 09:27:00,True,3000,0.0,002562.XSHE,1761187455.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
177,held,2025-09-26 13:00:00,False,1800,1800.0,002298.XSHE,1761187456.0,13.77,11.18,long,14.8716,2025-11-05,True
|
||||||
|
178,held,2025-09-26 13:00:00,False,1900,1900.0,002249.XSHE,1761187457.0,11.79,11.53,long,13.4406,2025-11-05,True
|
||||||
|
179,held,2025-09-29 14:55:00,False,800,800.0,002549.XSHE,1761187458.0,23.27,25.15,long,11.1696,2025-11-05,True
|
||||||
|
180,new,2025-09-30 09:27:00,True,1500,0.0,002765.XSHE,1761187459.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
181,new,2025-09-30 09:27:00,True,1400,0.0,002725.XSHE,1761187460.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
182,new,2025-09-30 09:27:00,True,3400,0.0,002659.XSHE,1761187461.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
183,held,2025-09-30 13:00:00,False,3000,3000.0,002562.XSHE,1761187462.0,7.29,7.6,long,13.122,2025-11-05,True
|
||||||
|
184,new,2025-10-09 09:27:00,True,3500,0.0,002067.XSHE,1761187463.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
185,held,2025-10-09 13:00:00,False,1500,1500.0,002765.XSHE,1761187464.0,14.35,14.61,long,12.915,2025-11-05,True
|
||||||
|
186,held,2025-10-09 13:00:00,False,1400,1400.0,002725.XSHE,1761187465.0,16.12,15.61,long,13.5408,2025-11-05,True
|
||||||
|
187,held,2025-10-09 13:00:00,False,3400,3400.0,002659.XSHE,1761187466.0,5.58,6.32,long,11.3832,2025-11-05,True
|
||||||
|
188,new,2025-10-10 09:27:00,True,1500,0.0,002298.XSHE,1761187467.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
189,new,2025-10-10 09:27:00,True,1100,0.0,002045.XSHE,1761187468.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
190,new,2025-10-10 09:27:00,True,1000,0.0,002150.XSHE,1761187469.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
191,held,2025-10-10 13:00:00,False,3500,3500.0,002067.XSHE,1761187470.0,6.56,6.34,long,13.776,2025-11-05,True
|
||||||
|
192,new,2025-10-13 09:27:00,True,1200,0.0,002759.XSHE,1761187471.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
193,held,2025-10-13 13:00:00,False,1500,1500.0,002298.XSHE,1761187472.0,13.08,13.05,long,11.772,2025-11-05,True
|
||||||
|
194,held,2025-10-13 13:00:00,False,1100,1100.0,002045.XSHE,1761187473.0,17.15,18.05,long,11.319,2025-11-05,True
|
||||||
|
195,held,2025-10-13 13:00:00,False,1000,1000.0,002150.XSHE,1761187474.0,18.3,19.95,long,10.98,2025-11-05,True
|
||||||
|
196,new,2025-10-14 09:27:00,True,1000,0.0,002941.XSHE,1761187475.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
197,new,2025-10-14 09:27:00,True,1300,0.0,002082.XSHE,1761187476.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
198,held,2025-10-14 13:00:00,False,1200,1200.0,002759.XSHE,1761187477.0,23.0,20.85,long,16.560000000000002,2025-11-05,True
|
||||||
|
199,new,2025-10-15 09:27:00,True,1000,0.0,002759.XSHE,1761187478.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
200,new,2025-10-15 09:27:00,True,1400,0.0,002645.XSHE,1761187479.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
201,held,2025-10-15 13:00:00,False,1000,1000.0,002941.XSHE,1761187480.0,21.05,19.35,long,12.63,2025-11-05,True
|
||||||
|
202,held,2025-10-15 13:00:00,False,1300,1300.0,002082.XSHE,1761187481.0,14.83,14.36,long,11.5674,2025-11-05,True
|
||||||
|
203,new,2025-10-16 09:27:00,True,1800,0.0,002171.XSHE,1761187482.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
204,new,2025-10-16 09:27:00,True,4800,0.0,002084.XSHE,1761187483.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
205,held,2025-10-16 13:00:00,False,1000,1000.0,002759.XSHE,1761187484.0,23.39,22.61,long,14.034,2025-11-05,True
|
||||||
|
206,held,2025-10-16 13:00:00,False,1400,1400.0,002645.XSHE,1761187485.0,16.0,16.92,long,13.44,2025-11-05,True
|
||||||
|
207,new,2025-10-17 09:27:00,True,900,0.0,002922.XSHE,1761187486.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
208,new,2025-10-17 09:27:00,True,700,0.0,002364.XSHE,1761187487.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
209,held,2025-10-17 13:00:00,False,1800,1800.0,002171.XSHE,1761187488.0,11.98,11.55,long,12.9384,2025-11-05,True
|
||||||
|
210,held,2025-10-17 13:00:00,False,4800,4800.0,002084.XSHE,1761187489.0,4.19,4.13,long,12.067200000000003,2025-11-05,True
|
||||||
|
211,new,2025-10-20 09:27:00,True,800,0.0,002813.XSHE,1761187490.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
212,held,2025-10-20 13:00:00,False,900,900.0,002922.XSHE,1761187491.0,22.28,24.43,long,12.0312,2025-11-05,True
|
||||||
|
213,held,2025-10-20 13:00:00,False,700,700.0,002364.XSHE,1761187492.0,27.4,30.91,long,11.508,2025-11-05,True
|
||||||
|
214,new,2025-10-21 09:27:00,True,1600,0.0,002825.XSHE,1761187493.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
215,new,2025-10-21 09:27:00,True,1500,0.0,002208.XSHE,1761187494.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
216,new,2025-10-21 09:27:00,True,700,0.0,002017.XSHE,1761187495.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
217,held,2025-10-21 13:00:00,False,800,800.0,002813.XSHE,1761187496.0,27.93,27.82,long,13.4064,2025-11-05,True
|
||||||
|
218,new,2025-10-22 09:27:00,True,2000,0.0,002893.XSHE,1761187497.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
219,held,2025-10-22 13:00:00,False,1600,1600.0,002825.XSHE,1761187498.0,11.76,12.38,long,11.2896,2025-11-05,True
|
||||||
|
220,held,2025-10-22 13:00:00,False,1500,1500.0,002208.XSHE,1761187499.0,14.78,12.75,long,13.302,2025-11-05,True
|
||||||
|
221,held,2025-10-22 13:00:00,False,700,700.0,002017.XSHE,1761187500.0,27.64,27.5,long,11.6088,2025-11-05,True
|
||||||
|
222,new,2025-10-24 09:27:00,True,1000,0.0,002370.XSHE,1761267497.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
223,new,2025-10-24 09:27:00,True,1000,0.0,002546.XSHE,1761267498.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
224,new,2025-10-24 09:27:00,True,500,0.0,002900.XSHE,1761267499.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
225,new,2025-10-24 09:27:00,True,1200,0.0,002481.XSHE,1761267500.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
226,held,2025-10-27 13:00:00,False,1000,1000.0,002370.XSHE,1761541133.0,7.21,7.28,long,4.605,2025-11-05,True
|
||||||
|
227,held,2025-10-27 13:00:00,False,1000,1000.0,002546.XSHE,1761541134.0,7.21,6.94,long,4.605,2025-11-05,True
|
||||||
|
228,held,2025-10-27 13:00:00,False,1200,1200.0,002481.XSHE,1761541135.0,5.78,6.17,long,4.468,2025-11-05,True
|
||||||
|
229,new,2025-10-28 09:27:00,True,1400,0.0,002682.XSHE,1761613075.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
230,new,2025-10-28 09:27:00,True,600,0.0,002457.XSHE,1761613076.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
231,new,2025-10-28 09:27:00,True,100,0.0,003009.XSHE,1761613077.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
232,held,2025-10-29 13:00:00,False,500,500.0,002900.XSHE,1761713933.0,13.68,14.0,long,4.42,2025-11-05,True
|
||||||
|
233,held,2025-10-29 13:00:00,False,100,100.0,003009.XSHE,1761713934.0,55.1,53.53,long,3.755,2025-11-05,True
|
||||||
|
234,new,2025-10-30 09:27:00,True,1500,0.0,002512.XSHE,1761785877.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
235,new,2025-10-30 09:27:00,True,900,0.0,002474.XSHE,1761785878.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
236,held,2025-10-30 13:00:00,False,1400,1400.0,002682.XSHE,1761800344.0,4.86,5.11,long,4.402,2025-11-05,True
|
||||||
|
237,held,2025-10-30 14:55:00,False,600,600.0,002457.XSHE,1761800345.0,11.65,12.1,long,4.495,2025-11-05,True
|
||||||
|
238,new,2025-10-31 09:27:00,True,1500,0.0,002689.XSHE,1761872294.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
239,new,2025-10-31 09:27:00,True,600,0.0,002212.XSHE,1761872295.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
240,held,2025-10-31 13:00:00,False,900,900.0,002474.XSHE,1761886744.0,8.48,8.050000000000002,long,4.816000000000001,2025-11-05,True
|
||||||
|
241,new,2025-10-09 09:28:00,True,11700,0.0,000793.XSHE,1761894980.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
242,new,2025-10-09 09:28:00,True,9200,0.0,600355.XSHG,1761894981.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
243,new,2025-10-09 09:28:00,True,9200,0.0,002822.XSHE,1761894982.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
244,held,2025-10-10 13:00:00,False,11700,11700.0,000793.XSHE,1761894983.0,2.98,2.87,long,52.299,2025-11-05,True
|
||||||
|
245,held,2025-10-10 13:00:00,False,9200,9200.0,600355.XSHG,1761894984.0,3.43,3.64,long,47.334,2025-11-05,True
|
||||||
|
246,held,2025-10-10 13:00:00,False,9200,9200.0,002822.XSHE,1761894985.0,3.68,3.6,long,50.784000000000006,2025-11-05,True
|
||||||
|
247,new,2025-10-13 09:28:00,True,11000,0.0,000793.XSHE,1761894986.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
248,new,2025-10-13 09:28:00,True,14000,0.0,000518.XSHE,1761894987.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
249,new,2025-10-14 09:28:00,True,5500,0.0,300472.XSHE,1761894988.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
250,held,2025-10-14 13:00:00,False,11000,11000.0,000793.XSHE,1761894989.0,3.01,2.88,long,49.665,2025-11-05,True
|
||||||
|
251,held,2025-10-14 13:00:00,False,14000,14000.0,000518.XSHE,1761894990.0,2.39,2.33,long,50.19,2025-11-05,True
|
||||||
|
252,new,2025-10-15 09:28:00,True,2400,0.0,000004.XSHE,1761894991.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
253,new,2025-10-15 09:28:00,True,1400,0.0,002816.XSHE,1761894992.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
254,held,2025-10-15 13:00:00,False,5500,5500.0,300472.XSHE,1761894993.0,6.7,6.53,long,55.275000000000006,2025-11-05,True
|
||||||
|
255,new,2025-10-16 09:28:00,True,9300,0.0,600777.XSHG,1761894994.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
256,held,2025-10-16 13:00:00,False,1400,1400.0,002816.XSHE,1761894995.0,22.65,21.98,long,47.565,2025-11-05,True
|
||||||
|
257,held,2025-10-16 14:55:00,False,2400,2400.0,000004.XSHE,1761894996.0,12.81,13.33,long,46.116,2025-11-05,True
|
||||||
|
258,new,2025-10-17 09:28:00,True,5500,0.0,002808.XSHE,1761894997.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
259,new,2025-10-17 09:28:00,True,4900,0.0,300167.XSHE,1761894998.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
260,held,2025-10-17 14:00:00,False,9300,9300.0,600777.XSHG,1761894999.0,4.17,4.34,long,58.1715,2025-11-05,True
|
||||||
|
261,new,2025-10-20 09:28:00,True,6300,0.0,603007.XSHG,1761895000.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
262,held,2025-10-20 14:00:00,False,4900,4900.0,300167.XSHE,1761895001.0,6.12,6.33,long,44.982,2025-11-05,True
|
||||||
|
263,new,2025-10-21 09:28:00,True,11600,0.0,002305.XSHE,1761895002.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
264,held,2025-10-21 13:00:00,False,5500,5500.0,002808.XSHE,1761895003.0,5.28,5.47,long,43.56,2025-11-05,True
|
||||||
|
265,new,2025-10-22 09:28:00,True,3300,0.0,002713.XSHE,1761895004.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
266,held,2025-10-22 13:00:00,False,6300,6300.0,603007.XSHG,1761895005.0,6.91,6.29,long,65.2995,2025-11-05,True
|
||||||
|
267,new,2025-10-23 09:28:00,True,6500,0.0,603007.XSHG,1761895006.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
268,held,2025-10-23 13:00:00,False,11600,11600.0,002305.XSHE,1761895007.0,2.87,2.53,long,49.938,2025-11-05,True
|
||||||
|
269,held,2025-10-23 13:00:00,False,3300,3300.0,002713.XSHE,1761895008.0,9.2,8.380000000000003,long,45.53999999999999,2025-11-05,True
|
||||||
|
270,new,2025-10-24 09:28:00,True,11200,0.0,002305.XSHE,1761895009.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
271,new,2025-10-24 09:28:00,True,10500,0.0,000903.XSHE,1761895010.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
272,held,2025-10-24 13:00:00,False,6500,6500.0,603007.XSHG,1761895011.0,7.1,7.0,long,69.225,2025-11-05,True
|
||||||
|
273,new,2025-11-03 09:27:00,True,600,0.0,002248.XSHE,1762131506.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
274,held,2025-11-03 13:00:00,False,1500,1500.0,002512.XSHE,1762145937.0,4.69,4.940000000000001,long,4.5175,2025-11-05,True
|
||||||
|
275,held,2025-11-03 13:00:00,False,1500,1500.0,002689.XSHE,1762145938.0,5.0,4.8,long,4.75,2025-11-05,True
|
||||||
|
276,held,2025-11-03 13:00:00,False,600,600.0,002212.XSHE,1762145939.0,10.94,10.38,long,4.282,2025-11-05,True
|
||||||
|
277,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400.0,,1732208241.0,10.5,10.59,long,128.31,2025-11-05,True
|
||||||
|
278,new,2025-11-04 09:27:00,True,2200,0.0,002374.XSHE,1762217882.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
279,new,2025-11-04 09:27:00,True,1300,0.0,002522.XSHE,1762217883.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
280,new,2025-11-04 09:27:00,True,100,0.0,002812.XSHE,1762217884.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
281,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400.0,001.XSHE,1732208241.0,10.5,10.59,long,128.31,2025-11-05,True
|
||||||
|
282,held,2025-11-05 13:00:00,False,600,600.0,002248.XSHE,1762318734.0,13.24,12.69,long,4.972,2025-11-05,True
|
||||||
|
283,held,2025-11-05 13:00:00,False,2200,2200.0,002374.XSHE,1762318735.0,3.31,3.25,long,4.641,2025-11-05,True
|
||||||
|
284,held,2025-11-05 14:55:00,False,1300,1300,002522.XSHE,1762318736,5.35,5.34,long,4.477499999999999,2025-11-05,True
|
||||||
|
@@ -0,0 +1,514 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态
|
||||||
|
0,new,2025-01-02 09:27:00,True,1700.0,0.0,002861.XSHE,1761104015.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
1,new,2025-01-02 09:27:00,True,2100.0,0.0,002117.XSHE,1761104016.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
2,new,2025-01-02 09:27:00,True,1700.0,0.0,003015.XSHE,1761104017.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
3,new,2025-01-02 09:27:00,True,1500.0,0.0,002931.XSHE,1761104018.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
4,held,2025-01-03 13:00:00,False,1700.0,1700.0,002861.XSHE,1761104019.0,12.5,13.85,long,12.75,2025-11-05,True
|
||||||
|
5,held,2025-01-03 13:00:00,False,1500.0,1500.0,002931.XSHE,1761104020.0,16.29,16.2,long,14.661,2025-11-05,True
|
||||||
|
6,new,2025-01-06 09:27:00,True,5600.0,0.0,002640.XSHE,1761104021.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
7,new,2025-01-06 09:27:00,True,2100.0,0.0,002364.XSHE,1761104022.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
8,held,2025-01-06 13:00:00,False,1700.0,1700.0,003015.XSHE,1761104023.0,15.68,14.32,long,15.9936,2025-11-05,True
|
||||||
|
9,new,2025-01-07 09:27:00,True,7800.0,0.0,002397.XSHE,1761104024.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
10,held,2025-01-07 13:00:00,False,2100.0,2100.0,002117.XSHE,1761104025.0,12.18,11.46,long,15.3468,2025-11-05,True
|
||||||
|
11,held,2025-01-07 13:00:00,False,5600.0,5600.0,002640.XSHE,1761104026.0,4.53,4.2,long,15.2208,2025-11-05,True
|
||||||
|
12,new,2025-01-08 09:27:00,True,1600.0,0.0,002552.XSHE,1761104027.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
13,new,2025-01-08 09:27:00,True,4500.0,0.0,002225.XSHE,1761104028.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
14,held,2025-01-08 13:00:00,False,2100.0,2100.0,002364.XSHE,1761104029.0,14.45,11.0,long,18.207,2025-11-05,True
|
||||||
|
15,held,2025-01-08 13:00:00,False,7800.0,7800.0,002397.XSHE,1761104030.0,4.4,3.74,long,20.592,2025-11-05,True
|
||||||
|
16,new,2025-01-09 09:27:00,True,8400.0,0.0,002397.XSHE,1761104031.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
17,new,2025-01-09 09:27:00,True,1900.0,0.0,002119.XSHE,1761104032.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
18,held,2025-01-09 13:00:00,False,4500.0,4500.0,002225.XSHE,1761104033.0,5.56,5.45,long,15.012,2025-11-05,True
|
||||||
|
19,held,2025-01-10 13:00:00,False,1600.0,1600.0,002552.XSHE,1761104035.0,16.0,14.7,long,15.36,2025-11-05,True
|
||||||
|
20,held,2025-01-10 13:00:00,False,1900.0,1900.0,002119.XSHE,1761104036.0,17.7,17.100000000000005,long,20.178,2025-11-05,True
|
||||||
|
21,new,2025-01-13 09:27:00,True,8200.0,0.0,002131.XSHE,1761104037.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
22,new,2025-01-13 09:27:00,True,3700.0,0.0,002400.XSHE,1761104038.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
23,held,2025-01-13 13:00:00,False,8400.0,8400.0,002397.XSHE,1761104039.0,3.24,3.86,long,16.3296,2025-11-05,True
|
||||||
|
24,new,2025-01-14 09:27:00,True,2000.0,0.0,002536.XSHE,1761104041.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
25,new,2025-01-14 09:27:00,True,2300.0,0.0,002346.XSHE,1761104042.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
26,held,2025-01-14 13:00:00,False,3700.0,3700.0,002400.XSHE,1761104043.0,8.1,7.76,long,17.982,2025-11-05,True
|
||||||
|
27,new,2025-01-15 09:27:00,True,6600.0,0.0,002692.XSHE,1761104044.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
28,held,2025-01-15 13:00:00,False,2000.0,2000.0,002536.XSHE,1761104045.0,13.47,13.19,long,16.164,2025-11-05,True
|
||||||
|
29,held,2025-01-15 13:00:00,False,2300.0,2300.0,002346.XSHE,1761104046.0,13.7,11.63,long,18.906,2025-11-05,True
|
||||||
|
30,new,2025-01-16 09:27:00,True,6100.0,0.0,002175.XSHE,1761104047.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
31,new,2025-01-16 09:27:00,True,2900.0,0.0,002660.XSHE,1761104048.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
32,held,2025-01-16 13:00:00,False,8200.0,8200.0,002131.XSHE,1761104049.0,3.95,3.56,long,19.434,2025-11-05,True
|
||||||
|
33,new,2025-01-17 09:27:00,True,1700.0,0.0,002967.XSHE,1761104050.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
34,held,2025-01-17 13:00:00,False,6100.0,6100.0,002175.XSHE,1761104051.0,5.23,4.88,long,19.141800000000003,2025-11-05,True
|
||||||
|
35,held,2025-01-17 13:00:00,False,2900.0,2900.0,002660.XSHE,1761104052.0,9.7,10.210000000000004,long,16.877999999999997,2025-11-05,True
|
||||||
|
36,new,2025-01-20 09:27:00,True,4800.0,0.0,002164.XSHE,1761104053.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
37,new,2025-01-20 09:27:00,True,3200.0,0.0,002187.XSHE,1761104054.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
38,held,2025-01-20 13:00:00,False,1700.0,1700.0,002967.XSHE,1761104055.0,18.47,18.309999999999995,long,18.8394,2025-11-05,True
|
||||||
|
39,new,2025-01-21 09:27:00,True,1800.0,0.0,002119.XSHE,1761104056.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
40,held,2025-01-21 13:00:00,False,4800.0,4800.0,002164.XSHE,1761104057.0,5.74,6.03,long,16.5312,2025-11-05,True
|
||||||
|
41,held,2025-01-21 13:00:00,False,3200.0,3200.0,002187.XSHE,1761104058.0,9.9,9.26,long,19.008,2025-11-05,True
|
||||||
|
42,new,2025-01-22 09:27:00,True,1000.0,0.0,002130.XSHE,1761104059.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
43,new,2025-01-22 09:27:00,True,3200.0,0.0,002580.XSHE,1761104060.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
44,held,2025-01-22 13:00:00,False,6600.0,6600.0,002692.XSHE,1761104061.0,5.97,4.599999999999999,long,23.6412,2025-11-05,True
|
||||||
|
45,held,2025-01-22 14:55:00,False,1800.0,1800.0,002119.XSHE,1761104062.0,17.87,18.93,long,19.2996,2025-11-05,True
|
||||||
|
46,held,2025-01-23 13:00:00,False,1000.0,1000.0,002130.XSHE,1761104063.0,28.99,28.31,long,17.394000000000002,2025-11-05,True
|
||||||
|
47,held,2025-01-23 13:00:00,False,3200.0,3200.0,002580.XSHE,1761104064.0,9.18,9.07,long,17.625600000000002,2025-11-05,True
|
||||||
|
48,new,2025-01-27 09:27:00,True,2100.0,0.0,002729.XSHE,1761104065.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
49,new,2025-01-27 09:27:00,True,6900.0,0.0,002666.XSHE,1761104066.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
50,new,2025-01-27 09:27:00,True,1000.0,0.0,003033.XSHE,1761104067.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
51,held,2025-02-05 13:00:00,False,6900.0,6900.0,002666.XSHE,1761104068.0,4.7,4.78,long,19.458,2025-11-05,True
|
||||||
|
52,held,2025-02-05 13:00:00,False,1000.0,1000.0,003033.XSHE,1761104069.0,31.59,31.01,long,18.954,2025-11-05,True
|
||||||
|
53,new,2025-02-06 09:27:00,True,2800.0,0.0,002530.XSHE,1761104070.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
54,new,2025-02-06 09:27:00,True,1900.0,0.0,002760.XSHE,1761104071.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
55,new,2025-02-06 09:27:00,True,5200.0,0.0,002549.XSHE,1761104072.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
56,held,2025-02-06 13:00:00,False,2100.0,2100.0,002729.XSHE,1761104073.0,15.0,15.36,long,18.9,2025-11-05,True
|
||||||
|
57,new,2025-02-07 09:27:00,True,3900.0,0.0,002599.XSHE,1761104074.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
58,held,2025-02-07 13:00:00,False,2800.0,2800.0,002530.XSHE,1761104075.0,13.29,11.41,long,22.3272,2025-11-05,True
|
||||||
|
59,held,2025-02-07 13:00:00,False,5200.0,5200.0,002549.XSHE,1761104076.0,6.4,6.33,long,19.968,2025-11-05,True
|
||||||
|
60,new,2025-02-10 09:27:00,True,4800.0,0.0,002354.XSHE,1761104077.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
61,new,2025-02-10 09:27:00,True,2900.0,0.0,002530.XSHE,1761104078.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
62,held,2025-02-11 13:00:00,False,3900.0,3900.0,002599.XSHE,1761104079.0,9.34,8.44,long,21.855600000000003,2025-11-05,True
|
||||||
|
63,held,2025-02-11 13:00:00,False,4800.0,4800.0,002354.XSHE,1761104080.0,8.49,7.39,long,24.4512,2025-11-05,True
|
||||||
|
64,new,2025-02-12 09:27:00,True,3900.0,0.0,002173.XSHE,1761104081.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
65,held,2025-02-12 13:00:00,False,2900.0,2900.0,002530.XSHE,1761104083.0,12.88,12.02,long,22.4112,2025-11-05,True
|
||||||
|
66,held,2025-02-12 14:55:00,False,1900.0,1900.0,002760.XSHE,1761104084.0,17.08,17.07,long,19.4712,2025-11-05,True
|
||||||
|
67,new,2025-02-13 09:27:00,True,3600.0,0.0,002441.XSHE,1761104085.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
68,new,2025-02-13 09:27:00,True,9400.0,0.0,002397.XSHE,1761104086.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
69,held,2025-02-13 13:00:00,False,3900.0,3900.0,002173.XSHE,1761104087.0,9.97,9.86,long,23.3298,2025-11-05,True
|
||||||
|
70,new,2025-02-14 09:27:00,True,3900.0,0.0,002272.XSHE,1761104088.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
71,new,2025-02-17 09:27:00,True,2300.0,0.0,002693.XSHE,1761104090.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
72,held,2025-02-17 13:00:00,False,3900.0,3900.0,002272.XSHE,1761104091.0,10.28,9.89,long,24.0552,2025-11-05,True
|
||||||
|
73,new,2025-02-18 09:27:00,True,1300.0,0.0,002261.XSHE,1761104092.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
74,held,2025-02-18 13:00:00,False,9400.0,9400.0,002397.XSHE,1761104093.0,3.84,3.73,long,21.6576,2025-11-05,True
|
||||||
|
75,held,2025-02-18 13:00:00,False,2300.0,2300.0,002693.XSHE,1761104094.0,15.85,16.76,long,21.873,2025-11-05,True
|
||||||
|
76,held,2025-02-18 14:55:00,False,3600.0,3600.0,002441.XSHE,1761104095.0,8.92,9.66,long,19.267200000000003,2025-11-05,True
|
||||||
|
77,new,2025-02-19 09:27:00,True,3600.0,0.0,002137.XSHE,1761104096.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
78,new,2025-02-19 09:27:00,True,7800.0,0.0,002067.XSHE,1761104097.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
79,new,2025-02-19 09:27:00,True,3800.0,0.0,003032.XSHE,1761104098.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
80,held,2025-02-19 13:00:00,False,1300.0,1300.0,002261.XSHE,1761104099.0,34.61,31.21,long,26.995800000000003,2025-11-05,True
|
||||||
|
81,new,2025-02-20 09:27:00,True,5700.0,0.0,002520.XSHE,1761104100.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
82,held,2025-02-20 13:00:00,False,3600.0,3600.0,002137.XSHE,1761104101.0,9.88,9.51,long,21.3408,2025-11-05,True
|
||||||
|
83,held,2025-02-20 13:00:00,False,7800.0,7800.0,002067.XSHE,1761104102.0,4.57,4.39,long,21.3876,2025-11-05,True
|
||||||
|
84,held,2025-02-20 13:00:00,False,3800.0,3800.0,003032.XSHE,1761104103.0,9.47,9.22,long,21.591600000000003,2025-11-05,True
|
||||||
|
85,new,2025-02-21 09:27:00,True,3900.0,0.0,002031.XSHE,1761104104.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
86,new,2025-02-21 09:27:00,True,3400.0,0.0,002908.XSHE,1761104105.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
87,new,2025-02-21 09:27:00,True,900.0,0.0,003005.XSHE,1761104106.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
88,held,2025-02-21 13:00:00,False,5700.0,5700.0,002520.XSHE,1761104107.0,7.94,7.86,long,27.1548,2025-11-05,True
|
||||||
|
89,new,2025-02-24 09:27:00,True,12800.0,0.0,002426.XSHE,1761104108.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
90,held,2025-02-24 13:00:00,False,3900.0,3900.0,002031.XSHE,1761104109.0,9.64,9.19,long,22.5576,2025-11-05,True
|
||||||
|
91,held,2025-02-24 13:00:00,False,3400.0,3400.0,002908.XSHE,1761104110.0,10.43,10.25,long,21.2772,2025-11-05,True
|
||||||
|
92,held,2025-02-24 13:00:00,False,900.0,900.0,003005.XSHE,1761104111.0,39.16,40.14,long,21.1464,2025-11-05,True
|
||||||
|
93,new,2025-02-25 09:27:00,True,3700.0,0.0,002334.XSHE,1761104112.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
94,new,2025-02-25 09:27:00,True,600.0,0.0,002979.XSHE,1761104113.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
95,new,2025-02-25 09:27:00,True,400.0,0.0,002896.XSHE,1761104114.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
96,held,2025-02-26 13:00:00,False,12800.0,12800.0,002426.XSHE,1761104115.0,3.69,3.63,long,28.3392,2025-11-05,True
|
||||||
|
97,held,2025-02-26 13:00:00,False,600.0,600.0,002979.XSHE,1761104116.0,56.0,51.1,long,20.16,2025-11-05,True
|
||||||
|
98,held,2025-02-26 14:55:00,False,3700.0,3700.0,002334.XSHE,1761104117.0,10.56,9.42,long,23.4432,2025-11-05,True
|
||||||
|
99,new,2025-02-27 09:27:00,True,4100.0,0.0,002031.XSHE,1761104118.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
100,new,2025-02-27 09:27:00,True,6700.0,0.0,002298.XSHE,1761104119.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
101,new,2025-02-27 09:27:00,True,2000.0,0.0,002824.XSHE,1761104120.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
102,held,2025-02-27 13:00:00,False,400.0,400.0,002896.XSHE,1761104121.0,111.74,84.02,long,26.8176,2025-11-05,True
|
||||||
|
103,new,2025-02-28 09:27:00,True,5800.0,0.0,002474.XSHE,1761104122.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
104,held,2025-02-28 13:00:00,False,4100.0,4100.0,002031.XSHE,1761104123.0,10.36,10.3,long,25.4856,2025-11-05,True
|
||||||
|
105,new,2025-03-03 09:27:00,True,5700.0,0.0,002406.XSHE,1761104124.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
106,held,2025-03-03 13:00:00,False,6700.0,6700.0,002298.XSHE,1761104125.0,7.07,6.5,long,28.4214,2025-11-05,True
|
||||||
|
107,held,2025-03-03 13:00:00,False,5800.0,5800.0,002474.XSHE,1761104126.0,7.79,8.34,long,27.1092,2025-11-05,True
|
||||||
|
108,held,2025-03-03 14:55:00,False,2000.0,2000.0,002824.XSHE,1761104127.0,18.43,20.0,long,22.116,2025-11-05,True
|
||||||
|
109,new,2025-03-04 09:27:00,True,8100.0,0.0,002692.XSHE,1761104128.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
110,new,2025-03-04 09:27:00,True,7800.0,0.0,002207.XSHE,1761104129.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
111,held,2025-03-04 13:00:00,False,5700.0,5700.0,002406.XSHE,1761104130.0,7.16,7.53,long,24.4872,2025-11-05,True
|
||||||
|
112,new,2025-03-05 09:27:00,True,2600.0,0.0,002917.XSHE,1761104131.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
113,new,2025-03-05 09:27:00,True,1200.0,0.0,003010.XSHE,1761104132.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
114,held,2025-03-05 13:00:00,False,8100.0,8100.0,002692.XSHE,1761104133.0,5.27,5.2,long,25.6122,2025-11-05,True
|
||||||
|
115,held,2025-03-05 13:00:00,False,7800.0,7800.0,002207.XSHE,1761104134.0,5.39,5.52,long,25.2252,2025-11-05,True
|
||||||
|
116,new,2025-03-06 09:27:00,True,6400.0,0.0,002164.XSHE,1761104135.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
117,new,2025-03-06 09:27:00,True,3800.0,0.0,002313.XSHE,1761104136.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
118,held,2025-03-06 13:00:00,False,1200.0,1200.0,003010.XSHE,1761104137.0,35.87,33.59,long,25.826400000000003,2025-11-05,True
|
||||||
|
119,new,2025-03-07 09:27:00,True,9500.0,0.0,002526.XSHE,1761104138.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
120,held,2025-03-07 13:00:00,False,2600.0,2600.0,002917.XSHE,1761104139.0,15.23,15.78,long,23.7588,2025-11-05,True
|
||||||
|
121,held,2025-03-07 13:00:00,False,6400.0,6400.0,002164.XSHE,1761104140.0,7.06,6.9,long,27.1104,2025-11-05,True
|
||||||
|
122,held,2025-03-07 13:00:00,False,3800.0,3800.0,002313.XSHE,1761104141.0,11.48,11.23,long,26.1744,2025-11-05,True
|
||||||
|
123,new,2025-03-10 09:27:00,True,2400.0,0.0,002276.XSHE,1761104142.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
124,new,2025-03-10 09:27:00,True,2000.0,0.0,002657.XSHE,1761104143.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
125,new,2025-03-10 09:27:00,True,800.0,0.0,002315.XSHE,1761104144.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
126,held,2025-03-11 13:00:00,False,800.0,800.0,002315.XSHE,1761104145.0,44.32,47.05,long,21.2736,2025-11-05,True
|
||||||
|
127,new,2025-03-12 09:27:00,True,5600.0,0.0,002114.XSHE,1761104146.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
128,held,2025-03-12 13:00:00,False,2000.0,2000.0,002657.XSHE,1761104147.0,21.54,21.11,long,25.848,2025-11-05,True
|
||||||
|
129,new,2025-03-13 09:27:00,True,6300.0,0.0,002195.XSHE,1761104148.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
130,held,2025-03-13 13:00:00,False,9500.0,9500.0,002526.XSHE,1761104149.0,4.32,4.66,long,24.624,2025-11-05,True
|
||||||
|
131,held,2025-03-13 13:00:00,False,2400.0,2400.0,002276.XSHE,1761104150.0,17.2,17.12,long,24.768,2025-11-05,True
|
||||||
|
132,new,2025-03-14 09:27:00,True,1800.0,0.0,002730.XSHE,1761104151.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
133,new,2025-03-14 09:27:00,True,2500.0,0.0,002927.XSHE,1761104152.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
134,held,2025-03-14 13:00:00,False,6300.0,6300.0,002195.XSHE,1761104153.0,6.35,6.72,long,24.003,2025-11-05,True
|
||||||
|
135,new,2025-03-17 09:27:00,True,6400.0,0.0,002361.XSHE,1761104154.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
136,held,2025-03-17 13:00:00,False,5600.0,5600.0,002114.XSHE,1761104155.0,7.28,7.78,long,24.4608,2025-11-05,True
|
||||||
|
137,new,2025-03-18 09:27:00,True,2700.0,0.0,002838.XSHE,1761104156.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
138,held,2025-03-19 13:00:00,False,1800.0,1800.0,002730.XSHE,1761104157.0,19.7,21.0,long,21.276,2025-11-05,True
|
||||||
|
139,held,2025-03-19 13:00:00,False,6400.0,6400.0,002361.XSHE,1761104158.0,6.95,6.89,long,26.688,2025-11-05,True
|
||||||
|
140,new,2025-03-20 09:27:00,True,3300.0,0.0,002196.XSHE,1761104159.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
141,new,2025-03-20 09:27:00,True,3300.0,0.0,002559.XSHE,1761104160.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
142,held,2025-03-20 13:00:00,False,2500.0,2500.0,002927.XSHE,1761104161.0,20.5,16.05,long,30.75,2025-11-05,True
|
||||||
|
143,held,2025-03-20 13:00:00,False,2700.0,2700.0,002838.XSHE,1761104162.0,17.34,15.17,long,28.0908,2025-11-05,True
|
||||||
|
144,new,2025-03-21 09:27:00,True,3200.0,0.0,002227.XSHE,1761104163.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
145,new,2025-03-21 09:27:00,True,1700.0,0.0,002980.XSHE,1761104164.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
146,held,2025-03-21 13:00:00,False,3300.0,3300.0,002559.XSHE,1761104165.0,12.33,11.74,long,24.4134,2025-11-05,True
|
||||||
|
147,new,2025-03-24 09:27:00,True,3000.0,0.0,002655.XSHE,1761104166.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
148,held,2025-03-24 13:00:00,False,3200.0,3200.0,002227.XSHE,1761104167.0,12.51,14.63,long,24.0192,2025-11-05,True
|
||||||
|
149,held,2025-03-24 13:00:00,False,1700.0,1700.0,002980.XSHE,1761104168.0,27.32,28.8,long,27.8664,2025-11-05,True
|
||||||
|
150,new,2025-03-25 09:27:00,True,4500.0,0.0,002115.XSHE,1761104169.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
151,new,2025-03-25 09:27:00,True,7900.0,0.0,002165.XSHE,1761104170.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
152,held,2025-03-25 13:00:00,False,3300.0,3300.0,002196.XSHE,1761104171.0,9.47,11.69,long,18.7506,2025-11-05,True
|
||||||
|
153,held,2025-03-25 14:55:00,False,3000.0,3000.0,002655.XSHE,1761104172.0,15.61,15.15,long,28.098,2025-11-05,True
|
||||||
|
154,new,2025-03-26 09:27:00,True,7700.0,0.0,002682.XSHE,1761104173.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
155,new,2025-03-26 09:27:00,True,6800.0,0.0,002391.XSHE,1761104174.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
156,held,2025-03-26 13:00:00,False,7900.0,7900.0,002165.XSHE,1761104175.0,6.41,5.35,long,30.3834,2025-11-05,True
|
||||||
|
157,new,2025-03-27 09:27:00,True,8800.0,0.0,002165.XSHE,1761104176.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
158,held,2025-03-27 13:00:00,False,4500.0,4500.0,002115.XSHE,1761104177.0,9.65,9.58,long,26.055000000000003,2025-11-05,True
|
||||||
|
159,held,2025-03-27 13:00:00,False,7700.0,7700.0,002682.XSHE,1761104178.0,5.53,5.02,long,25.5486,2025-11-05,True
|
||||||
|
160,held,2025-03-27 14:55:00,False,6800.0,6800.0,002391.XSHE,1761104179.0,5.38,5.61,long,21.9504,2025-11-05,True
|
||||||
|
161,new,2025-03-28 09:27:00,True,4100.0,0.0,002115.XSHE,1761104180.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
162,new,2025-03-28 09:27:00,True,4300.0,0.0,002248.XSHE,1761104181.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
163,new,2025-03-28 09:27:00,True,7600.0,0.0,002682.XSHE,1761104182.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
164,held,2025-03-28 13:00:00,False,8800.0,8800.0,002165.XSHE,1761104183.0,6.99,5.91,long,36.9072,2025-11-05,True
|
||||||
|
165,new,2025-03-31 09:27:00,True,8200.0,0.0,002584.XSHE,1761104184.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
166,held,2025-03-31 13:00:00,False,4100.0,4100.0,002115.XSHE,1761104185.0,8.82,9.55,long,21.6972,2025-11-05,True
|
||||||
|
167,held,2025-03-31 13:00:00,False,4300.0,4300.0,002248.XSHE,1761104186.0,8.36,9.22,long,21.5688,2025-11-05,True
|
||||||
|
168,new,2025-04-01 09:27:00,True,4300.0,0.0,002639.XSHE,1761104187.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
169,new,2025-04-01 09:27:00,True,2500.0,0.0,002923.XSHE,1761104188.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
170,held,2025-04-01 13:00:00,False,7600.0,7600.0,002682.XSHE,1761104189.0,4.44,5.25,long,20.2464,2025-11-05,True
|
||||||
|
171,held,2025-04-01 13:00:00,False,8200.0,8200.0,002584.XSHE,1761104190.0,8.33,7.95,long,40.9836,2025-11-05,True
|
||||||
|
172,new,2025-04-02 09:27:00,True,3100.0,0.0,002655.XSHE,1761104191.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
173,new,2025-04-02 09:27:00,True,2500.0,0.0,002541.XSHE,1761104192.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
174,held,2025-04-02 13:00:00,False,4300.0,4300.0,002639.XSHE,1761104193.0,9.12,8.3,long,23.5296,2025-11-05,True
|
||||||
|
175,new,2025-04-03 09:27:00,True,8400.0,0.0,002535.XSHE,1761104194.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
176,held,2025-04-03 13:00:00,False,2500.0,2500.0,002923.XSHE,1761104195.0,19.21,14.79,long,28.815,2025-11-05,True
|
||||||
|
177,held,2025-04-03 13:00:00,False,3100.0,3100.0,002655.XSHE,1761104196.0,13.66,16.09,long,25.4076,2025-11-05,True
|
||||||
|
178,held,2025-04-03 13:00:00,False,2500.0,2500.0,002541.XSHE,1761104197.0,20.7,19.89,long,31.05,2025-11-05,True
|
||||||
|
179,held,2025-04-07 13:00:00,False,8400.0,8400.0,002535.XSHE,1761104198.0,4.49,4.88,long,22.6296,2025-11-05,True
|
||||||
|
180,new,2025-04-08 09:27:00,True,14000.0,0.0,002471.XSHE,1761104199.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
181,held,2025-04-09 13:00:00,False,14000.0,14000.0,002471.XSHE,1761104200.0,2.94,3.22,long,24.696,2025-11-05,True
|
||||||
|
182,new,2025-04-10 09:27:00,True,7100.0,0.0,002999.XSHE,1761104201.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
183,new,2025-04-10 09:27:00,True,7800.0,0.0,002697.XSHE,1761104202.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
184,new,2025-04-10 09:27:00,True,4700.0,0.0,002758.XSHE,1761104203.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
185,new,2025-04-11 09:27:00,True,5800.0,0.0,002707.XSHE,1761104204.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
186,held,2025-04-11 13:00:00,False,7100.0,7100.0,002999.XSHE,1761104205.0,6.03,6.01,long,25.687800000000003,2025-11-05,True
|
||||||
|
187,held,2025-04-11 13:00:00,False,7800.0,7800.0,002697.XSHE,1761104206.0,5.69,5.53,long,26.6292,2025-11-05,True
|
||||||
|
188,new,2025-04-14 09:27:00,True,5500.0,0.0,002187.XSHE,1761104208.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
189,held,2025-04-14 13:00:00,False,5800.0,5800.0,002707.XSHE,1761104209.0,8.73,8.5,long,30.3804,2025-11-05,True
|
||||||
|
190,new,2025-04-15 09:27:00,True,3400.0,0.0,002730.XSHE,1761104210.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
191,held,2025-04-15 13:00:00,False,5500.0,5500.0,002187.XSHE,1761104212.0,7.98,7.95,long,26.334,2025-11-05,True
|
||||||
|
192,new,2025-04-16 09:27:00,True,6800.0,0.0,002264.XSHE,1761104214.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
193,held,2025-04-16 13:00:00,False,4700.0,4700.0,002758.XSHE,1761104215.0,8.69,9.02,long,24.5058,2025-11-05,True
|
||||||
|
194,new,2025-04-17 09:27:00,True,2100.0,0.0,002553.XSHE,1761104216.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
195,held,2025-04-17 13:00:00,False,6800.0,6800.0,002264.XSHE,1761104217.0,6.48,6.4,long,26.4384,2025-11-05,True
|
||||||
|
196,held,2025-04-18 13:00:00,False,3400.0,3400.0,002730.XSHE,1761104218.0,14.35,15.5,long,29.274,2025-11-05,True
|
||||||
|
197,new,2025-04-21 09:27:00,True,5300.0,0.0,002255.XSHE,1761104221.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
198,new,2025-04-21 09:27:00,True,1600.0,0.0,002261.XSHE,1761104222.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
199,held,2025-04-22 13:00:00,False,2100.0,2100.0,002553.XSHE,1761104223.0,18.73,20.37,long,23.5998,2025-11-05,True
|
||||||
|
200,new,2025-04-23 09:27:00,True,3300.0,0.0,002583.XSHE,1761104225.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
201,new,2025-04-23 09:27:00,True,8200.0,0.0,002479.XSHE,1761104226.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
202,held,2025-04-23 13:00:00,False,5300.0,5300.0,002255.XSHE,1761104227.0,8.98,8.61,long,28.5564,2025-11-05,True
|
||||||
|
203,new,2025-04-24 09:27:00,True,5100.0,0.0,002584.XSHE,1761104228.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
204,held,2025-04-24 13:00:00,False,1600.0,1600.0,002261.XSHE,1761104229.0,27.81,29.05,long,26.6976,2025-11-05,True
|
||||||
|
205,held,2025-04-24 13:00:00,False,8200.0,8200.0,002479.XSHE,1761104230.0,5.37,5.3,long,26.4204,2025-11-05,True
|
||||||
|
206,new,2025-04-25 09:27:00,True,4600.0,0.0,002255.XSHE,1761104231.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
207,new,2025-04-25 09:27:00,True,6700.0,0.0,002697.XSHE,1761104232.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
208,held,2025-04-25 13:00:00,False,3300.0,3300.0,002583.XSHE,1761104233.0,11.79,12.71,long,23.3442,2025-11-05,True
|
||||||
|
209,held,2025-04-25 13:00:00,False,5100.0,5100.0,002584.XSHE,1761104234.0,10.85,9.71,long,33.201,2025-11-05,True
|
||||||
|
210,new,2025-04-28 09:27:00,True,4500.0,0.0,002584.XSHE,1761104235.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
211,new,2025-04-28 09:27:00,True,2800.0,0.0,002915.XSHE,1761104236.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
212,held,2025-04-28 13:00:00,False,4600.0,4600.0,002255.XSHE,1761104237.0,8.95,9.68,long,24.702,2025-11-05,True
|
||||||
|
213,held,2025-04-28 13:00:00,False,6700.0,6700.0,002697.XSHE,1761104238.0,5.94,6.31,long,23.8788,2025-11-05,True
|
||||||
|
214,new,2025-04-29 09:27:00,True,7100.0,0.0,002627.XSHE,1761104239.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
215,new,2025-04-29 09:27:00,True,13400.0,0.0,002418.XSHE,1761104240.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
216,held,2025-04-29 13:00:00,False,4500.0,4500.0,002584.XSHE,1761104241.0,9.1,10.22,long,24.57,2025-11-05,True
|
||||||
|
217,new,2025-04-30 09:27:00,True,6400.0,0.0,002354.XSHE,1761104242.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
218,held,2025-04-30 13:00:00,False,7100.0,7100.0,002627.XSHE,1761104243.0,5.47,5.83,long,23.302200000000003,2025-11-05,True
|
||||||
|
219,held,2025-04-30 13:00:00,False,13400.0,13400.0,002418.XSHE,1761104244.0,3.27,3.05,long,26.2908,2025-11-05,True
|
||||||
|
220,new,2025-05-06 09:27:00,True,7300.0,0.0,002587.XSHE,1761104245.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
221,new,2025-05-06 09:27:00,True,4300.0,0.0,002852.XSHE,1761104246.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
222,held,2025-05-06 13:00:00,False,2800.0,2800.0,002915.XSHE,1761104247.0,21.0,16.8,long,35.28,2025-11-05,True
|
||||||
|
223,held,2025-05-06 13:00:00,False,6400.0,6400.0,002354.XSHE,1761104248.0,6.65,6.57,long,25.536,2025-11-05,True
|
||||||
|
224,held,2025-06-20 13:00:00,False,2600.0,2600.0,002513.XSHE,1761187408.0,4.98,5.5,long,7.7688000000000015,2025-11-05,True
|
||||||
|
225,held,2025-06-20 14:55:00,False,1800.0,1800.0,002366.XSHE,1761187409.0,7.54,8.06,long,8.1432,2025-11-05,True
|
||||||
|
226,new,2025-06-23 09:27:00,True,1500.0,0.0,002343.XSHE,1761187410.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
227,new,2025-06-23 09:27:00,True,1000.0,0.0,002173.XSHE,1761187411.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
228,new,2025-06-23 09:27:00,True,1000.0,0.0,002805.XSHE,1761187412.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
229,held,2025-06-23 13:00:00,False,1700.0,1700.0,002235.XSHE,1761187413.0,9.54,8.210000000000003,long,9.7308,2025-11-05,True
|
||||||
|
230,new,2025-06-24 09:27:00,True,1600.0,0.0,002579.XSHE,1761187414.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
231,held,2025-06-24 13:00:00,False,1500.0,1500.0,002343.XSHE,1761187415.0,9.35,8.71,long,8.415000000000001,2025-11-05,True
|
||||||
|
232,held,2025-06-24 13:00:00,False,1000.0,1000.0,002173.XSHE,1761187416.0,13.26,12.5,long,7.955999999999999,2025-11-05,True
|
||||||
|
233,held,2025-06-24 13:00:00,False,1000.0,1000.0,002805.XSHE,1761187417.0,14.02,13.26,long,8.411999999999999,2025-11-05,True
|
||||||
|
234,new,2025-06-25 09:27:00,True,800.0,0.0,002104.XSHE,1761187418.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
235,new,2025-06-25 09:27:00,True,700.0,0.0,002213.XSHE,1761187419.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
236,new,2025-06-25 09:27:00,True,500.0,0.0,002657.XSHE,1761187420.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
237,held,2025-06-25 13:00:00,False,1600.0,1600.0,002579.XSHE,1761187421.0,12.02,11.31,long,11.5392,2025-11-05,True
|
||||||
|
238,new,2025-06-26 09:27:00,True,2600.0,0.0,002355.XSHE,1761187422.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
239,held,2025-06-26 13:00:00,False,800.0,800.0,002104.XSHE,1761187423.0,16.56,16.4,long,7.948799999999999,2025-11-05,True
|
||||||
|
240,held,2025-06-26 13:00:00,False,500.0,500.0,002657.XSHE,1761187424.0,29.07,26.8,long,8.721,2025-11-05,True
|
||||||
|
241,new,2025-06-27 09:27:00,True,1200.0,0.0,002537.XSHE,1761187425.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
242,new,2025-06-27 09:27:00,True,200.0,0.0,003009.XSHE,1761187426.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
243,held,2025-06-27 13:00:00,False,2600.0,2600.0,002355.XSHE,1761187427.0,7.89,7.83,long,12.3084,2025-11-05,True
|
||||||
|
244,new,2025-06-30 09:27:00,True,1900.0,0.0,002806.XSHE,1761187428.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
245,held,2025-06-30 13:00:00,False,200.0,200.0,003009.XSHE,1761187429.0,50.01,46.35,long,6.001200000000001,2025-11-05,True
|
||||||
|
246,new,2025-07-01 09:27:00,True,900.0,0.0,002205.XSHE,1761187430.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
247,held,2025-07-01 13:00:00,False,700.0,700.0,002213.XSHE,1761187431.0,20.57,19.43,long,8.6394,2025-11-05,True
|
||||||
|
248,held,2025-07-01 13:00:00,False,1900.0,1900.0,002806.XSHE,1761187432.0,12.84,13.3,long,14.6376,2025-11-05,True
|
||||||
|
249,new,2025-07-02 09:27:00,True,1700.0,0.0,002103.XSHE,1761187433.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
250,new,2025-07-02 09:27:00,True,500.0,0.0,002190.XSHE,1761187434.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
251,held,2025-07-02 13:00:00,False,1200.0,1200.0,002537.XSHE,1761187435.0,10.33,11.12,long,7.437600000000001,2025-11-05,True
|
||||||
|
252,held,2025-07-02 14:55:00,False,900.0,900.0,002205.XSHE,1761187436.0,11.61,11.52,long,6.2694,2025-11-05,True
|
||||||
|
253,new,2025-07-03 09:27:00,True,700.0,0.0,002729.XSHE,1761187437.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
254,new,2025-07-03 09:27:00,True,600.0,0.0,002866.XSHE,1761187438.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
255,held,2025-07-04 13:00:00,False,1700.0,1700.0,002103.XSHE,1761187439.0,10.78,11.33,long,10.9956,2025-11-05,True
|
||||||
|
256,held,2025-07-04 13:00:00,False,500.0,500.0,002190.XSHE,1761187440.0,36.65,38.6,long,10.995,2025-11-05,True
|
||||||
|
257,held,2025-07-04 13:00:00,False,700.0,700.0,002729.XSHE,1761187441.0,15.67,15.21,long,6.5814,2025-11-05,True
|
||||||
|
258,held,2025-07-04 13:00:00,False,600.0,600.0,002866.XSHE,1761187442.0,20.06,19.16,long,7.2216,2025-11-05,True
|
||||||
|
259,new,2025-07-07 09:27:00,True,900.0,0.0,002579.XSHE,1761187443.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
260,new,2025-07-07 09:27:00,True,3400.0,0.0,002263.XSHE,1761187444.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
261,new,2025-07-07 09:27:00,True,2500.0,0.0,002413.XSHE,1761187445.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
262,new,2025-07-07 09:27:00,True,1100.0,0.0,002093.XSHE,1761187446.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
263,held,2025-07-08 13:00:00,False,900.0,900.0,002579.XSHE,1761187447.0,15.61,15.54,long,8.4294,2025-11-05,True
|
||||||
|
264,held,2025-07-08 13:00:00,False,2500.0,2500.0,002413.XSHE,1761187448.0,5.91,5.84,long,8.865,2025-11-05,True
|
||||||
|
265,held,2025-07-08 13:00:00,False,1100.0,1100.0,002093.XSHE,1761187449.0,13.68,13.31,long,9.0288,2025-11-05,True
|
||||||
|
266,new,2025-07-09 09:27:00,True,2600.0,0.0,002562.XSHE,1761187450.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
267,new,2025-07-09 09:27:00,True,1600.0,0.0,002094.XSHE,1761187451.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
268,new,2025-07-09 09:27:00,True,3200.0,0.0,002721.XSHE,1761187452.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
269,held,2025-07-09 13:00:00,False,3400.0,3400.0,002263.XSHE,1761187453.0,4.73,4.38,long,9.6492,2025-11-05,True
|
||||||
|
270,new,2025-07-10 09:27:00,True,3800.0,0.0,002263.XSHE,1761187454.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
271,held,2025-07-10 13:00:00,False,2600.0,2600.0,002562.XSHE,1761187455.0,6.45,5.82,long,10.062,2025-11-05,True
|
||||||
|
272,held,2025-07-10 13:00:00,False,1600.0,1600.0,002094.XSHE,1761187456.0,9.76,9.49,long,9.3696,2025-11-05,True
|
||||||
|
273,held,2025-07-10 13:00:00,False,3200.0,3200.0,002721.XSHE,1761187457.0,4.86,4.63,long,9.3312,2025-11-05,True
|
||||||
|
274,new,2025-07-11 09:27:00,True,2200.0,0.0,002520.XSHE,1761187458.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
275,held,2025-07-11 13:00:00,False,3800.0,3800.0,002263.XSHE,1761187459.0,4.06,4.52,long,9.2568,2025-11-05,True
|
||||||
|
276,new,2025-07-14 09:27:00,True,400.0,0.0,002657.XSHE,1761187460.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
277,new,2025-07-14 09:27:00,True,700.0,0.0,003005.XSHE,1761187461.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
278,new,2025-07-14 09:27:00,True,5100.0,0.0,002437.XSHE,1761187462.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
279,held,2025-07-14 13:00:00,False,2200.0,2200.0,002520.XSHE,1761187463.0,7.27,6.99,long,9.5964,2025-11-05,True
|
||||||
|
280,new,2025-07-15 09:27:00,True,2800.0,0.0,002279.XSHE,1761187464.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
281,held,2025-07-16 13:00:00,False,700.0,700.0,003005.XSHE,1761187465.0,21.29,21.21,long,8.9418,2025-11-05,True
|
||||||
|
282,held,2025-07-16 13:00:00,False,5100.0,5100.0,002437.XSHE,1761187466.0,3.14,3.13,long,9.6084,2025-11-05,True
|
||||||
|
283,held,2025-07-16 13:00:00,False,2800.0,2800.0,002279.XSHE,1761187467.0,7.06,7.04,long,11.8608,2025-11-05,True
|
||||||
|
284,new,2025-07-17 09:27:00,True,1200.0,0.0,002725.XSHE,1761187468.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
285,new,2025-07-17 09:27:00,True,4500.0,0.0,002131.XSHE,1761187469.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
286,new,2025-07-17 09:27:00,True,2300.0,0.0,002161.XSHE,1761187470.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
287,held,2025-07-18 13:00:00,False,1200.0,1200.0,002725.XSHE,1761187471.0,13.98,13.88,long,10.0656,2025-11-05,True
|
||||||
|
288,held,2025-07-18 14:55:00,False,400.0,400.0,002657.XSHE,1761187472.0,30.47,32.91,long,7.3128,2025-11-05,True
|
||||||
|
289,new,2025-07-21 09:27:00,True,700.0,0.0,002229.XSHE,1761187473.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
290,new,2025-07-21 09:27:00,True,1300.0,0.0,002394.XSHE,1761187474.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
291,new,2025-07-22 09:27:00,True,1500.0,0.0,002167.XSHE,1761187476.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
292,held,2025-07-22 14:55:00,False,1300.0,1300.0,002394.XSHE,1761187477.0,10.17,10.57,long,7.9326,2025-11-05,True
|
||||||
|
293,new,2025-07-23 09:27:00,True,1000.0,0.0,002809.XSHE,1761187478.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
294,held,2025-07-23 13:00:00,False,700.0,700.0,002229.XSHE,1761187479.0,18.77,19.579999999999995,long,7.883400000000001,2025-11-05,True
|
||||||
|
295,held,2025-07-23 13:00:00,False,1500.0,1500.0,002167.XSHE,1761187480.0,13.08,12.7,long,11.772,2025-11-05,True
|
||||||
|
296,new,2025-07-24 09:27:00,True,1300.0,0.0,002205.XSHE,1761187481.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
297,held,2025-07-24 13:00:00,False,2300.0,2300.0,002161.XSHE,1761187482.0,7.16,7.13,long,9.8808,2025-11-05,True
|
||||||
|
298,new,2025-07-25 09:27:00,True,1300.0,0.0,002639.XSHE,1761187483.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
299,new,2025-07-25 09:27:00,True,900.0,0.0,002771.XSHE,1761187484.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
300,held,2025-07-25 13:00:00,False,1000.0,1000.0,002809.XSHE,1761187485.0,12.91,13.85,long,7.746,2025-11-05,True
|
||||||
|
301,held,2025-07-25 13:00:00,False,1300.0,1300.0,002205.XSHE,1761187486.0,13.37,12.72,long,10.4286,2025-11-05,True
|
||||||
|
302,new,2025-07-28 09:27:00,True,3500.0,0.0,002596.XSHE,1761187487.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
303,new,2025-07-28 09:27:00,True,900.0,0.0,002240.XSHE,1761187488.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
304,held,2025-07-28 13:00:00,False,900.0,900.0,002771.XSHE,1761187489.0,17.86,17.84,long,9.6444,2025-11-05,True
|
||||||
|
305,new,2025-07-29 09:27:00,True,2300.0,0.0,002298.XSHE,1761187490.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
306,held,2025-07-29 13:00:00,False,1300.0,1300.0,002639.XSHE,1761187491.0,11.01,11.85,long,8.5878,2025-11-05,True
|
||||||
|
307,held,2025-07-29 13:00:00,False,3500.0,3500.0,002596.XSHE,1761187492.0,4.09,4.46,long,8.589,2025-11-05,True
|
||||||
|
308,held,2025-07-29 13:00:00,False,900.0,900.0,002240.XSHE,1761187493.0,16.46,16.219999999999995,long,8.8884,2025-11-05,True
|
||||||
|
309,new,2025-07-30 09:27:00,True,1500.0,0.0,002278.XSHE,1761187495.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
310,new,2025-07-30 09:27:00,True,1000.0,0.0,002205.XSHE,1761187496.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
311,held,2025-07-31 13:00:00,False,1500.0,1500.0,002278.XSHE,1761187498.0,9.9,9.67,long,8.91,2025-11-05,True
|
||||||
|
312,held,2025-07-31 14:55:00,False,1000.0,1000.0,002205.XSHE,1761187499.0,13.79,14.2,long,8.274000000000001,2025-11-05,True
|
||||||
|
313,new,2025-08-01 09:27:00,True,1800.0,0.0,002570.XSHE,1761187500.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
314,new,2025-08-01 09:27:00,True,1200.0,0.0,002905.XSHE,1761187501.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
315,new,2025-08-01 09:27:00,True,1600.0,0.0,002564.XSHE,1761187502.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
316,held,2025-08-01 13:00:00,False,2300.0,2300.0,002298.XSHE,1761187503.0,7.23,7.51,long,9.9774,2025-11-05,True
|
||||||
|
317,new,2025-08-04 09:27:00,True,1500.0,0.0,002272.XSHE,1761187504.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
318,held,2025-08-04 14:55:00,False,1800.0,1800.0,002570.XSHE,1761187505.0,7.39,7.37,long,7.981199999999999,2025-11-05,True
|
||||||
|
319,new,2025-08-05 09:27:00,True,1700.0,0.0,002370.XSHE,1761187506.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
320,held,2025-08-05 13:00:00,False,1200.0,1200.0,002905.XSHE,1761187507.0,9.64,10.66,long,6.940799999999999,2025-11-05,True
|
||||||
|
321,held,2025-08-05 13:00:00,False,1600.0,1600.0,002564.XSHE,1761187508.0,8.54,8.49,long,8.1984,2025-11-05,True
|
||||||
|
322,held,2025-08-05 13:00:00,False,1500.0,1500.0,002272.XSHE,1761187509.0,12.85,12.25,long,11.565,2025-11-05,True
|
||||||
|
323,new,2025-08-06 09:27:00,True,300.0,0.0,002977.XSHE,1761187510.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
324,new,2025-08-06 09:27:00,True,300.0,0.0,002265.XSHE,1761187511.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
325,new,2025-08-06 09:27:00,True,1100.0,0.0,002651.XSHE,1761187512.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
326,held,2025-08-07 13:00:00,False,1700.0,1700.0,002370.XSHE,1761187513.0,6.74,7.71,long,6.8748000000000005,2025-11-05,True
|
||||||
|
327,held,2025-08-07 13:00:00,False,300.0,300.0,002977.XSHE,1761187514.0,41.36,41.12,long,7.4448,2025-11-05,True
|
||||||
|
328,held,2025-08-07 13:00:00,False,300.0,300.0,002265.XSHE,1761187515.0,43.57,42.02,long,7.8426,2025-11-05,True
|
||||||
|
329,held,2025-08-07 13:00:00,False,1100.0,1100.0,002651.XSHE,1761187516.0,14.25,13.42,long,9.405,2025-11-05,True
|
||||||
|
330,new,2025-08-08 09:27:00,True,700.0,0.0,002536.XSHE,1761187517.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
331,new,2025-08-08 09:27:00,True,1500.0,0.0,002331.XSHE,1761187519.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
332,new,2025-08-08 09:27:00,True,900.0,0.0,002885.XSHE,1761187520.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
333,held,2025-08-11 13:00:00,False,700.0,700.0,002536.XSHE,1761187521.0,21.87,20.0,long,9.1854,2025-11-05,True
|
||||||
|
334,held,2025-08-11 13:00:00,False,900.0,900.0,002885.XSHE,1761187523.0,16.2,15.69,long,8.748,2025-11-05,True
|
||||||
|
335,new,2025-08-12 09:27:00,True,1300.0,0.0,002706.XSHE,1761187524.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
336,new,2025-08-12 09:27:00,True,300.0,0.0,002837.XSHE,1761187525.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
337,new,2025-08-12 09:27:00,True,1300.0,0.0,002674.XSHE,1761187526.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
338,held,2025-08-12 13:00:00,False,1500.0,1500.0,002331.XSHE,1761187527.0,9.26,9.0,long,8.334,2025-11-05,True
|
||||||
|
339,new,2025-08-13 09:27:00,True,500.0,0.0,002915.XSHE,1761187528.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
340,held,2025-08-13 13:00:00,False,300.0,300.0,002837.XSHE,1761187529.0,56.55,50.01,long,10.179,2025-11-05,True
|
||||||
|
341,held,2025-08-13 13:00:00,False,1300.0,1300.0,002674.XSHE,1761187530.0,11.67,11.61,long,9.1026,2025-11-05,True
|
||||||
|
342,new,2025-08-14 09:27:00,True,2900.0,0.0,002307.XSHE,1761187531.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
343,new,2025-08-14 09:27:00,True,4800.0,0.0,002622.XSHE,1761187532.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
344,held,2025-08-14 13:00:00,False,500.0,500.0,002915.XSHE,1761187533.0,29.7,28.42,long,8.91,2025-11-05,True
|
||||||
|
345,held,2025-08-14 14:55:00,False,1300.0,1300.0,002706.XSHE,1761187534.0,10.5,11.34,long,8.19,2025-11-05,True
|
||||||
|
346,new,2025-08-15 09:27:00,True,1100.0,0.0,002148.XSHE,1761187535.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
347,new,2025-08-15 09:27:00,True,1500.0,0.0,002298.XSHE,1761187536.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
348,held,2025-08-15 13:00:00,False,4800.0,4800.0,002622.XSHE,1761187537.0,3.69,3.5,long,10.6272,2025-11-05,True
|
||||||
|
349,new,2025-08-18 09:27:00,True,700.0,0.0,002173.XSHE,1761187538.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
350,held,2025-08-18 13:00:00,False,2900.0,2900.0,002307.XSHE,1761187539.0,4.9,5.400000000000001,long,8.526000000000002,2025-11-05,True
|
||||||
|
351,held,2025-08-18 13:00:00,False,1100.0,1100.0,002148.XSHE,1761187540.0,14.0,12.45,long,9.24,2025-11-05,True
|
||||||
|
352,held,2025-08-18 14:55:00,False,1500.0,1500.0,002298.XSHE,1761187541.0,11.27,9.33,long,10.143,2025-11-05,True
|
||||||
|
353,new,2025-08-19 09:27:00,True,1100.0,0.0,002598.XSHE,1761187542.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
354,new,2025-08-19 09:27:00,True,3100.0,0.0,002551.XSHE,1761187543.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
355,new,2025-08-19 09:27:00,True,2200.0,0.0,002909.XSHE,1761187544.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
356,held,2025-08-20 13:00:00,False,700.0,700.0,002173.XSHE,1761187545.0,22.83,26.1,long,9.5886,2025-11-05,True
|
||||||
|
357,held,2025-08-20 13:00:00,False,2200.0,2200.0,002909.XSHE,1761187546.0,7.0,6.95,long,9.24,2025-11-05,True
|
||||||
|
358,new,2025-08-21 09:27:00,True,1400.0,0.0,002298.XSHE,1761187548.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
359,held,2025-08-21 13:00:00,False,3100.0,3100.0,002551.XSHE,1761187549.0,4.7,5.01,long,8.742,2025-11-05,True
|
||||||
|
360,new,2025-08-22 09:27:00,True,500.0,0.0,002553.XSHE,1761187550.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
361,held,2025-08-22 13:00:00,False,1100.0,1100.0,002598.XSHE,1761187551.0,12.57,13.0,long,8.2962,2025-11-05,True
|
||||||
|
362,held,2025-08-22 14:55:00,False,1400.0,1400.0,002298.XSHE,1761187552.0,10.9,11.71,long,9.156,2025-11-05,True
|
||||||
|
363,new,2025-08-25 09:27:00,True,2500.0,0.0,002640.XSHE,1761187553.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
364,new,2025-08-25 09:27:00,True,1300.0,0.0,002278.XSHE,1761187554.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
365,held,2025-08-25 13:00:00,False,500.0,500.0,002553.XSHE,1761187556.0,34.38,31.82,long,10.314,2025-11-05,True
|
||||||
|
366,new,2025-08-26 09:27:00,True,1700.0,0.0,002177.XSHE,1761187557.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
367,held,2025-08-26 13:00:00,False,2500.0,2500.0,002640.XSHE,1761187559.0,6.0,5.980000000000001,long,9.0,2025-11-05,True
|
||||||
|
368,new,2025-08-27 09:27:00,True,300.0,0.0,002190.XSHE,1761187560.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
369,held,2025-08-27 13:00:00,False,1300.0,1300.0,002278.XSHE,1761187561.0,11.15,11.14,long,8.697000000000001,2025-11-05,True
|
||||||
|
370,held,2025-08-27 14:55:00,False,1700.0,1700.0,002177.XSHE,1761187563.0,8.42,9.58,long,8.5884,2025-11-05,True
|
||||||
|
371,new,2025-08-28 09:27:00,True,1200.0,0.0,002298.XSHE,1761187564.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
372,new,2025-08-28 09:27:00,True,900.0,0.0,002953.XSHE,1761187565.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
373,held,2025-08-29 13:00:00,False,300.0,300.0,002190.XSHE,1761187567.0,48.14,55.0,long,8.6652,2025-11-05,True
|
||||||
|
374,held,2025-08-29 13:00:00,False,1200.0,1200.0,002298.XSHE,1761187568.0,11.33,11.61,long,8.1576,2025-11-05,True
|
||||||
|
375,new,2025-09-01 09:27:00,True,1500.0,0.0,002165.XSHE,1761187570.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
376,new,2025-09-01 09:27:00,True,1200.0,0.0,002842.XSHE,1761187571.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
377,new,2025-09-01 09:27:00,True,800.0,0.0,002815.XSHE,1761187572.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
378,held,2025-09-01 13:00:00,False,900.0,900.0,002953.XSHE,1761187573.0,15.55,15.02,long,8.397,2025-11-05,True
|
||||||
|
379,new,2025-09-02 09:27:00,True,1400.0,0.0,002530.XSHE,1761187574.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
380,held,2025-09-02 13:00:00,False,1500.0,1500.0,002165.XSHE,1761187575.0,10.09,9.93,long,9.081,2025-11-05,True
|
||||||
|
381,held,2025-09-02 13:00:00,False,1200.0,1200.0,002842.XSHE,1761187576.0,12.54,12.45,long,9.0288,2025-11-05,True
|
||||||
|
382,held,2025-09-02 13:00:00,False,800.0,800.0,002815.XSHE,1761187577.0,16.15,17.22,long,7.751999999999999,2025-11-05,True
|
||||||
|
383,new,2025-09-03 09:27:00,True,2500.0,0.0,002131.XSHE,1761187578.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
384,new,2025-09-03 09:27:00,True,1500.0,0.0,002642.XSHE,1761187579.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
385,new,2025-09-03 09:27:00,True,300.0,0.0,002074.XSHE,1761187580.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
386,held,2025-09-03 14:55:00,False,1400.0,1400.0,002530.XSHE,1761187581.0,10.86,11.6,long,9.1224,2025-11-05,True
|
||||||
|
387,new,2025-09-04 09:27:00,True,2000.0,0.0,002031.XSHE,1761187582.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
388,held,2025-09-04 13:00:00,False,2500.0,2500.0,002131.XSHE,1761187583.0,5.35,5.86,long,8.025,2025-11-05,True
|
||||||
|
389,held,2025-09-04 13:00:00,False,1500.0,1500.0,002642.XSHE,1761187584.0,9.02,9.4,long,8.118,2025-11-05,True
|
||||||
|
390,held,2025-09-04 13:00:00,False,300.0,300.0,002074.XSHE,1761187585.0,41.9,40.33,long,7.542,2025-11-05,True
|
||||||
|
391,new,2025-09-05 09:27:00,True,1900.0,0.0,002514.XSHE,1761187586.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
392,new,2025-09-05 09:27:00,True,4700.0,0.0,002021.XSHE,1761187587.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
393,held,2025-09-05 13:00:00,False,2000.0,2000.0,002031.XSHE,1761187588.0,9.02,8.8,long,10.824,2025-11-05,True
|
||||||
|
394,new,2025-09-08 09:27:00,True,3200.0,0.0,002067.XSHE,1761187589.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
395,new,2025-09-08 09:27:00,True,2500.0,0.0,002251.XSHE,1761187590.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
396,held,2025-09-08 13:00:00,False,1900.0,1900.0,002514.XSHE,1761187591.0,7.39,6.91,long,8.4246,2025-11-05,True
|
||||||
|
397,new,2025-09-09 09:27:00,True,900.0,0.0,002858.XSHE,1761187592.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
398,held,2025-09-09 13:00:00,False,3200.0,3200.0,002067.XSHE,1761187593.0,5.34,5.04,long,10.2528,2025-11-05,True
|
||||||
|
399,held,2025-09-09 13:00:00,False,2500.0,2500.0,002251.XSHE,1761187594.0,6.6,6.39,long,9.9,2025-11-05,True
|
||||||
|
400,new,2025-09-10 09:27:00,True,1300.0,0.0,002115.XSHE,1761187595.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
401,new,2025-09-10 09:27:00,True,900.0,0.0,002407.XSHE,1761187596.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
402,held,2025-09-10 13:00:00,False,4700.0,4700.0,002021.XSHE,1761187597.0,2.69,2.72,long,7.585800000000001,2025-11-05,True
|
||||||
|
403,held,2025-09-10 13:00:00,False,900.0,900.0,002858.XSHE,1761187598.0,15.94,15.44,long,8.6076,2025-11-05,True
|
||||||
|
404,new,2025-09-11 09:27:00,True,2100.0,0.0,002547.XSHE,1761187600.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
405,held,2025-09-11 13:00:00,False,1300.0,1300.0,002115.XSHE,1761187601.0,14.25,12.289999999999996,long,11.115000000000002,2025-11-05,True
|
||||||
|
406,held,2025-09-11 13:00:00,False,900.0,900.0,002407.XSHE,1761187602.0,17.67,17.010000000000005,long,9.541800000000002,2025-11-05,True
|
||||||
|
407,new,2025-09-12 09:27:00,True,1200.0,0.0,002115.XSHE,1761187603.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
408,new,2025-09-12 09:27:00,True,2900.0,0.0,002131.XSHE,1761187604.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
409,held,2025-09-12 13:00:00,False,2100.0,2100.0,002547.XSHE,1761187606.0,6.58,6.5,long,8.2908,2025-11-05,True
|
||||||
|
410,new,2025-09-15 09:27:00,True,500.0,0.0,002130.XSHE,1761187607.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
411,new,2025-09-15 09:27:00,True,700.0,0.0,002527.XSHE,1761187608.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
412,held,2025-09-15 14:55:00,False,1200.0,1200.0,002115.XSHE,1761187609.0,12.71,14.09,long,9.1512,2025-11-05,True
|
||||||
|
413,new,2025-09-16 09:27:00,True,1800.0,0.0,002772.XSHE,1761187610.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
414,held,2025-09-16 13:00:00,False,2900.0,2900.0,002131.XSHE,1761187611.0,6.32,6.09,long,10.9968,2025-11-05,True
|
||||||
|
415,held,2025-09-16 13:00:00,False,500.0,500.0,002130.XSHE,1761187612.0,27.25,26.61,long,8.175,2025-11-05,True
|
||||||
|
416,held,2025-09-16 13:00:00,False,700.0,700.0,002527.XSHE,1761187613.0,20.93,19.98,long,8.7906,2025-11-05,True
|
||||||
|
417,new,2025-09-17 09:27:00,True,2900.0,0.0,002471.XSHE,1761187614.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
418,new,2025-09-17 09:27:00,True,3200.0,0.0,002418.XSHE,1761187615.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
419,new,2025-09-17 09:27:00,True,1800.0,0.0,002055.XSHE,1761187616.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
420,held,2025-09-17 13:00:00,False,1800.0,1800.0,002772.XSHE,1761187617.0,10.28,9.95,long,11.1024,2025-11-05,True
|
||||||
|
421,new,2025-09-18 09:27:00,True,1100.0,0.0,002759.XSHE,1761187618.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
422,held,2025-09-18 13:00:00,False,3200.0,3200.0,002418.XSHE,1761187619.0,4.88,4.74,long,9.3696,2025-11-05,True
|
||||||
|
423,held,2025-09-18 13:00:00,False,1800.0,1800.0,002055.XSHE,1761187620.0,8.65,8.41,long,9.342,2025-11-05,True
|
||||||
|
424,new,2025-09-19 09:27:00,True,1300.0,0.0,002148.XSHE,1761187621.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
425,new,2025-09-19 09:27:00,True,2200.0,0.0,002562.XSHE,1761187622.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
426,held,2025-09-19 13:00:00,False,1100.0,1100.0,002759.XSHE,1761187623.0,16.19,17.66,long,10.6854,2025-11-05,True
|
||||||
|
427,held,2025-09-19 14:55:00,False,2900.0,2900.0,002471.XSHE,1761187624.0,4.94,5.190000000000001,long,8.595600000000001,2025-11-05,True
|
||||||
|
428,new,2025-09-22 09:27:00,True,800.0,0.0,002272.XSHE,1761187625.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
429,new,2025-09-22 09:27:00,True,300.0,0.0,002768.XSHE,1761187626.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
430,held,2025-09-22 13:00:00,False,1300.0,1300.0,002148.XSHE,1761187627.0,10.79,11.77,long,8.4162,2025-11-05,True
|
||||||
|
431,held,2025-09-22 13:00:00,False,2200.0,2200.0,002562.XSHE,1761187628.0,7.19,7.08,long,9.4908,2025-11-05,True
|
||||||
|
432,new,2025-09-23 09:27:00,True,1000.0,0.0,002097.XSHE,1761187629.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
433,new,2025-09-23 09:27:00,True,1800.0,0.0,002584.XSHE,1761187630.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
434,held,2025-09-23 13:00:00,False,800.0,800.0,002272.XSHE,1761187631.0,18.94,17.989999999999995,long,9.091200000000002,2025-11-05,True
|
||||||
|
435,held,2025-09-23 13:00:00,False,300.0,300.0,002768.XSHE,1761187632.0,45.49,47.36,long,8.1882,2025-11-05,True
|
||||||
|
436,new,2025-09-24 09:27:00,True,1300.0,0.0,002298.XSHE,1761187633.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
437,new,2025-09-24 09:27:00,True,900.0,0.0,002849.XSHE,1761187634.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
438,held,2025-09-24 13:00:00,False,1000.0,1000.0,002097.XSHE,1761187635.0,14.74,16.030000000000005,long,8.844,2025-11-05,True
|
||||||
|
439,held,2025-09-24 13:00:00,False,1800.0,1800.0,002584.XSHE,1761187636.0,9.99,8.98,long,10.7892,2025-11-05,True
|
||||||
|
440,new,2025-09-25 09:27:00,True,600.0,0.0,002549.XSHE,1761187637.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
441,new,2025-09-25 09:27:00,True,1500.0,0.0,002249.XSHE,1761187638.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
442,held,2025-09-25 13:00:00,False,900.0,900.0,002849.XSHE,1761187639.0,15.57,16.010000000000005,long,8.4078,2025-11-05,True
|
||||||
|
443,new,2025-09-26 09:27:00,True,2100.0,0.0,002562.XSHE,1761187640.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
444,held,2025-09-26 13:00:00,False,1300.0,1300.0,002298.XSHE,1761187641.0,13.77,11.18,long,10.7406,2025-11-05,True
|
||||||
|
445,held,2025-09-26 13:00:00,False,1500.0,1500.0,002249.XSHE,1761187642.0,11.79,11.53,long,10.611,2025-11-05,True
|
||||||
|
446,held,2025-09-29 14:55:00,False,600.0,600.0,002549.XSHE,1761187643.0,23.27,25.15,long,8.3772,2025-11-05,True
|
||||||
|
447,new,2025-09-30 09:27:00,True,1100.0,0.0,002765.XSHE,1761187644.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
448,new,2025-09-30 09:27:00,True,1000.0,0.0,002725.XSHE,1761187645.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
449,new,2025-09-30 09:27:00,True,2600.0,0.0,002659.XSHE,1761187646.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
450,held,2025-09-30 13:00:00,False,2100.0,2100.0,002562.XSHE,1761187647.0,7.29,7.6,long,9.1854,2025-11-05,True
|
||||||
|
451,new,2025-10-09 09:27:00,True,2700.0,0.0,002067.XSHE,1761187648.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
452,held,2025-10-09 13:00:00,False,1100.0,1100.0,002765.XSHE,1761187649.0,14.35,14.61,long,9.471,2025-11-05,True
|
||||||
|
453,held,2025-10-09 13:00:00,False,1000.0,1000.0,002725.XSHE,1761187650.0,16.12,15.61,long,9.672,2025-11-05,True
|
||||||
|
454,held,2025-10-09 13:00:00,False,2600.0,2600.0,002659.XSHE,1761187651.0,5.58,6.32,long,8.7048,2025-11-05,True
|
||||||
|
455,new,2025-10-10 09:27:00,True,1100.0,0.0,002298.XSHE,1761187652.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
456,new,2025-10-10 09:27:00,True,800.0,0.0,002045.XSHE,1761187653.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
457,new,2025-10-10 09:27:00,True,700.0,0.0,002150.XSHE,1761187654.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
458,held,2025-10-10 13:00:00,False,2700.0,2700.0,002067.XSHE,1761187655.0,6.56,6.34,long,10.6272,2025-11-05,True
|
||||||
|
459,new,2025-10-13 09:27:00,True,1000.0,0.0,002759.XSHE,1761187656.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
460,held,2025-10-13 13:00:00,False,1100.0,1100.0,002298.XSHE,1761187657.0,13.08,13.05,long,8.6328,2025-11-05,True
|
||||||
|
461,held,2025-10-13 13:00:00,False,800.0,800.0,002045.XSHE,1761187658.0,17.15,18.05,long,8.232,2025-11-05,True
|
||||||
|
462,held,2025-10-13 13:00:00,False,700.0,700.0,002150.XSHE,1761187659.0,18.3,19.95,long,7.686,2025-11-05,True
|
||||||
|
463,new,2025-10-14 09:27:00,True,700.0,0.0,002941.XSHE,1761187660.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
464,new,2025-10-14 09:27:00,True,900.0,0.0,002082.XSHE,1761187661.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
465,held,2025-10-14 13:00:00,False,1000.0,1000.0,002759.XSHE,1761187662.0,23.0,20.85,long,13.8,2025-11-05,True
|
||||||
|
466,new,2025-10-15 09:27:00,True,800.0,0.0,002759.XSHE,1761187663.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
467,new,2025-10-15 09:27:00,True,1100.0,0.0,002645.XSHE,1761187664.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
468,held,2025-10-15 13:00:00,False,700.0,700.0,002941.XSHE,1761187665.0,21.05,19.350000000000005,long,8.841,2025-11-05,True
|
||||||
|
469,held,2025-10-15 13:00:00,False,900.0,900.0,002082.XSHE,1761187666.0,14.83,14.36,long,8.0082,2025-11-05,True
|
||||||
|
470,new,2025-10-16 09:27:00,True,1200.0,0.0,002171.XSHE,1761187667.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
471,new,2025-10-16 09:27:00,True,3300.0,0.0,002084.XSHE,1761187668.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
472,held,2025-10-16 13:00:00,False,800.0,800.0,002759.XSHE,1761187669.0,23.39,22.61,long,11.2272,2025-11-05,True
|
||||||
|
473,held,2025-10-16 13:00:00,False,1100.0,1100.0,002645.XSHE,1761187670.0,16.0,16.92,long,10.56,2025-11-05,True
|
||||||
|
474,new,2025-10-17 09:27:00,True,700.0,0.0,002922.XSHE,1761187671.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
475,new,2025-10-17 09:27:00,True,600.0,0.0,002364.XSHE,1761187672.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
476,held,2025-10-17 13:00:00,False,1200.0,1200.0,002171.XSHE,1761187673.0,11.98,11.55,long,8.6256,2025-11-05,True
|
||||||
|
477,held,2025-10-17 13:00:00,False,3300.0,3300.0,002084.XSHE,1761187674.0,4.19,4.13,long,8.2962,2025-11-05,True
|
||||||
|
478,new,2025-10-20 09:27:00,True,500.0,0.0,002813.XSHE,1761187675.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
479,held,2025-10-20 13:00:00,False,700.0,700.0,002922.XSHE,1761187676.0,22.28,24.43,long,9.3576,2025-11-05,True
|
||||||
|
480,held,2025-10-20 13:00:00,False,600.0,600.0,002364.XSHE,1761187677.0,27.4,30.91,long,9.864,2025-11-05,True
|
||||||
|
481,new,2025-10-21 09:27:00,True,1200.0,0.0,002825.XSHE,1761187678.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
482,new,2025-10-21 09:27:00,True,1200.0,0.0,002208.XSHE,1761187679.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
483,new,2025-10-21 09:27:00,True,500.0,0.0,002017.XSHE,1761187680.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
484,held,2025-10-21 13:00:00,False,500.0,500.0,002813.XSHE,1761187681.0,27.93,27.82,long,8.379,2025-11-05,True
|
||||||
|
485,new,2025-10-22 09:27:00,True,1400.0,0.0,002893.XSHE,1761187682.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
486,held,2025-10-22 13:00:00,False,1200.0,1200.0,002825.XSHE,1761187683.0,11.76,12.380000000000004,long,8.4672,2025-11-05,True
|
||||||
|
487,held,2025-10-22 13:00:00,False,1200.0,1200.0,002208.XSHE,1761187684.0,14.78,12.75,long,10.6416,2025-11-05,True
|
||||||
|
488,held,2025-10-22 13:00:00,False,500.0,500.0,002017.XSHE,1761187685.0,27.64,27.5,long,8.292,2025-11-05,True
|
||||||
|
489,new,2025-10-27 09:27:00,True,800.0,0.0,002054.XSHE,1761528129.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
490,new,2025-10-27 09:27:00,True,200.0,0.0,002912.XSHE,1761528130.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
491,new,2025-10-28 09:27:00,True,1600.0,0.0,002682.XSHE,1761614528.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
492,new,2025-10-28 09:27:00,True,700.0,0.0,002457.XSHE,1761614529.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
493,held,2025-10-28 13:00:00,False,800.0,800.0,002054.XSHE,1761627389.0,8.83,8.32,long,4.532,2025-11-05,True
|
||||||
|
494,new,2025-10-29 09:27:00,True,300.0,0.0,002104.XSHE,1761700928.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
495,held,2025-10-30 13:00:00,False,200.0,200.0,002912.XSHE,1761800190.0,29.59,30.61,long,3.959,2025-11-05,True
|
||||||
|
496,held,2025-10-30 13:00:00,False,1600.0,1600.0,002682.XSHE,1761800191.0,4.86,5.110000000000001,long,4.888,2025-11-05,True
|
||||||
|
497,held,2025-10-30 14:55:00,False,700.0,700.0,002457.XSHE,1761800192.0,11.65,12.1,long,5.0775,2025-11-05,True
|
||||||
|
498,new,2025-10-31 09:27:00,True,1500.0,0.0,002689.XSHE,1761873728.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
499,new,2025-10-31 09:27:00,True,700.0,0.0,002212.XSHE,1761873729.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
500,new,2025-10-31 09:27:00,True,300.0,0.0,002782.XSHE,1761873730.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
501,held,2025-11-03 13:00:00,False,300.0,300.0,002104.XSHE,1762145791.0,21.38,23.21,long,4.207,2025-11-05,True
|
||||||
|
502,held,2025-11-03 13:00:00,False,1500.0,1500.0,002689.XSHE,1762145792.0,5.0,4.8,long,4.75,2025-11-05,True
|
||||||
|
503,held,2025-11-03 13:00:00,False,700.0,700.0,002212.XSHE,1762145793.0,10.94,10.380000000000004,long,4.829000000000001,2025-11-05,True
|
||||||
|
504,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400.0,9400.0,,1732208241.0,10.5,10.59,long,128.31,2025-11-05,True
|
||||||
|
505,new,2025-11-04 09:27:00,True,2400.0,0.0,002374.XSHE,1762219328.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
506,new,2025-11-04 09:27:00,True,1400.0,0.0,002522.XSHE,1762219329.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
507,new,2025-11-04 09:27:00,True,100.0,0.0,002812.XSHE,1762219330.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
508,held,2025-11-04 13:00:00,False,300.0,300.0,002782.XSHE,1762232192.0,19.6,19.45,long,3.94,2025-11-05,True
|
||||||
|
509,new,2025-11-05 09:27:00,True,1000.0,0.0,002370.XSHE,1762305729.0,0.0,0.0,long,0.0,2025-11-05,True
|
||||||
|
510,held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400.0,9400.0,001.XSHE,1732208241.0,10.5,10.59,long,128.31,2025-11-05,True
|
||||||
|
511,held,2025-11-05 13:00:00,False,2400.0,2400.0,002374.XSHE,1762318589.0,3.31,3.25,long,4.972,2025-11-05,True
|
||||||
|
512,held,2025-11-05 14:55:00,False,1400,1400,002522.XSHE,1762318590,5.35,5.34,long,4.744999999999999,2025-11-05,True
|
||||||
|
@@ -0,0 +1,99 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态
|
||||||
|
0,held,2024-11-01 09:30:00,True,23700,23700,159915.XSHE,1760287367,2.107,2.107,long,14.98077,2025-10-13,True
|
||||||
|
1,held,2024-11-04 09:30:00,False,23700,23700,159915.XSHE,1760287368,2.078,2.107,long,14.774579999999998,2025-10-13,True
|
||||||
|
2,held,2024-11-04 09:30:00,True,8100,8100,518880.XSHG,1760287369,6.018,6.018,long,14.623739999999998,2025-10-13,True
|
||||||
|
3,held,2024-11-12 09:30:00,False,8100,8100,518880.XSHG,1760287370,5.823,6.018,long,14.14989,2025-10-13,True
|
||||||
|
4,held,2024-11-12 09:30:00,True,31000,31000,513100.XSHG,1760287371,1.537,1.537,long,14.294099999999998,2025-10-13,True
|
||||||
|
5,held,2024-11-13 09:30:00,False,31000,31000,513100.XSHG,1760287372,1.528,1.537,long,14.210399999999998,2025-10-13,True
|
||||||
|
6,held,2024-11-13 09:30:00,True,20300,20300,159915.XSHE,1760287373,2.328,2.328,long,14.177519999999998,2025-10-13,True
|
||||||
|
7,held,2024-11-21 09:30:00,False,20300,20300,159915.XSHE,1760287374,2.21,2.328,long,13.458899999999998,2025-10-13,True
|
||||||
|
8,held,2024-11-21 09:30:00,True,1300,1300,002629.XSHE,1760287375,3.33,3.33,long,5.0,2025-10-13,True
|
||||||
|
9,held,2024-11-21 09:30:00,True,600,600,600857.XSHG,1760287378,7.34,7.34,long,5.0,2025-10-13,True
|
||||||
|
10,held,2024-11-21 09:30:00,True,400,400,002205.XSHE,1760287381,9.1,9.1,long,5.0,2025-10-13,True
|
||||||
|
11,held,2024-11-21 09:30:00,True,800,800,000638.XSHE,1760287382,5.45,5.45,long,5.0,2025-10-13,True
|
||||||
|
12,held,2024-11-21 09:30:00,True,800,800,600778.XSHG,1760287383,5.49,5.49,long,5.0,2025-10-13,True
|
||||||
|
13,held,2024-11-21 09:30:00,True,400,400,003003.XSHE,1760287384,9.79,9.79,long,5.0,2025-10-13,True
|
||||||
|
14,held,2024-12-05 14:00:00,False,1300,1300,002629.XSHE,1760287385,3.95,3.33,long,10.135,2025-10-13,True
|
||||||
|
15,held,2024-12-05 14:00:00,True,200,200,002205.XSHE,1760287387,9.42,9.42,long,5.0,2025-10-13,True
|
||||||
|
16,held,2024-12-05 14:00:00,True,300,300,603022.XSHG,1760287388,8.28,8.28,long,5.0,2025-10-13,True
|
||||||
|
17,held,2024-12-13 14:00:00,False,600,600,002205.XSHE,1760287389,10.54,9.206666666666669,long,11.323999999999998,2025-10-13,True
|
||||||
|
18,held,2024-12-13 14:00:00,True,200,200,003003.XSHE,1760287391,10.86,10.86,long,5.0,2025-10-13,True
|
||||||
|
19,held,2024-12-17 14:00:00,False,800,800,600778.XSHG,1760287393,10.71,5.49,long,13.568,2025-10-13,True
|
||||||
|
20,held,2024-12-17 14:00:00,True,300,300,003003.XSHE,1760287395,10.17,10.17,long,5.0,2025-10-13,True
|
||||||
|
21,held,2024-12-17 14:00:00,True,400,400,600883.XSHG,1760287396,7.46,7.46,long,5.0,2025-10-13,True
|
||||||
|
22,held,2024-12-24 14:00:00,False,800,800,000638.XSHE,1760287397,4.87,5.45,long,8.896,2025-10-13,True
|
||||||
|
23,held,2024-12-24 14:00:00,True,100,100,003003.XSHE,1760287400,9.21,9.21,long,5.0,2025-10-13,True
|
||||||
|
24,held,2024-12-25 14:00:00,False,1200,1200,003003.XSHE,1760287401,9.03,10.056666666666665,long,15.836,2025-10-13,True
|
||||||
|
25,held,2024-12-27 14:00:00,False,600,600,600857.XSHG,1760287405,8.26,7.34,long,9.956,2025-10-13,True
|
||||||
|
26,held,2025-01-03 09:30:00,False,800,800,600493.XSHG,1760287409,5.26,5.39,long,9.208,2025-10-13,True
|
||||||
|
27,held,2025-01-03 09:30:00,False,2300,2300,603022.XSHG,1760287410,7.28,7.921304347826087,long,21.7672,2025-10-13,True
|
||||||
|
28,held,2025-01-03 09:30:00,False,2300,2300,600883.XSHG,1760287412,6.52,7.0978260869565215,long,19.996,2025-10-13,True
|
||||||
|
29,held,2025-01-03 09:30:00,True,27800,27800,513100.XSHG,1760287413,1.641,1.641,long,13.68594,2025-10-13,True
|
||||||
|
30,held,2025-01-13 09:30:00,False,27800,27800,513100.XSHG,1760287414,1.611,1.641,long,13.43574,2025-10-13,True
|
||||||
|
31,held,2025-01-13 09:30:00,True,7300,7300,518880.XSHG,1760287415,6.113,6.113,long,13.38747,2025-10-13,True
|
||||||
|
32,held,2025-02-20 09:30:00,False,7300,7300,518880.XSHG,1760287416,6.602,6.113,long,14.45838,2025-10-13,True
|
||||||
|
33,held,2025-02-20 09:30:00,True,22100,22100,159915.XSHE,1760287417,2.182,2.182,long,14.466659999999996,2025-10-13,True
|
||||||
|
34,held,2025-03-11 09:30:00,False,22100,22100,159915.XSHE,1760287418,2.132,2.182,long,14.13516,2025-10-13,True
|
||||||
|
35,held,2025-03-11 09:30:00,True,600,600,600421.XSHG,1760287419,6.99,6.99,long,5.0,2025-10-13,True
|
||||||
|
36,held,2025-03-11 09:30:00,True,800,800,600493.XSHG,1760287420,5.43,5.43,long,5.0,2025-10-13,True
|
||||||
|
37,held,2025-03-11 09:30:00,True,900,900,002188.XSHE,1760287421,4.81,4.81,long,5.0,2025-10-13,True
|
||||||
|
38,held,2025-03-11 09:30:00,True,900,900,000638.XSHE,1760287422,5.19,5.19,long,5.0,2025-10-13,True
|
||||||
|
39,held,2025-03-11 09:30:00,True,800,800,002591.XSHE,1760287423,5.37,5.37,long,5.0,2025-10-13,True
|
||||||
|
40,held,2025-03-11 09:30:00,True,500,500,603022.XSHG,1760287424,8.09,8.09,long,5.0,2025-10-13,True
|
||||||
|
41,held,2025-03-11 09:30:00,True,600,600,600883.XSHG,1760287425,6.94,6.94,long,5.0,2025-10-13,True
|
||||||
|
42,held,2025-03-11 09:30:00,True,1000,1000,600149.XSHG,1760287426,4.36,4.36,long,5.0,2025-10-13,True
|
||||||
|
43,held,2025-03-11 09:30:00,True,500,500,603177.XSHG,1760287427,8.21,8.21,long,5.0,2025-10-13,True
|
||||||
|
44,held,2025-03-11 09:30:00,True,500,500,605567.XSHG,1760287428,8.71,8.71,long,5.0,2025-10-13,True
|
||||||
|
45,held,2025-03-25 14:00:00,False,600,600,600421.XSHG,1760287429,7.36,6.99,long,9.416,2025-10-13,True
|
||||||
|
46,held,2025-03-25 14:00:00,True,600,600,002188.XSHE,1760287430,4.45,4.45,long,5.0,2025-10-13,True
|
||||||
|
47,held,2025-03-25 14:00:00,True,500,500,000638.XSHE,1760287431,4.87,4.87,long,5.0,2025-10-13,True
|
||||||
|
48,held,2025-03-25 14:00:00,True,500,500,600493.XSHG,1760287432,5.3,5.3,long,5.0,2025-10-13,True
|
||||||
|
49,canceled,2025-04-07 14:00:00,False,1400,0,000638.XSHE,1760287435,0.0,5.075714285714286,long,0.0,2025-10-13,True
|
||||||
|
50,held,2025-04-08 14:00:00,False,1300,1300,600493.XSHG,1760287442,4.49,5.38,long,10.837,2025-10-13,True
|
||||||
|
51,held,2025-04-08 14:00:00,False,1500,1500,002188.XSHE,1760287443,3.94,4.666,long,10.91,2025-10-13,True
|
||||||
|
52,held,2025-04-08 14:00:00,False,800,800,002591.XSHE,1760287444,4.3,5.37,long,8.44,2025-10-13,True
|
||||||
|
53,held,2025-04-08 14:00:00,False,500,500,603022.XSHG,1760287445,7.08,8.09,long,8.54,2025-10-13,True
|
||||||
|
54,held,2025-04-08 14:00:00,False,1000,1000,600149.XSHG,1760287446,3.76,4.36,long,8.76,2025-10-13,True
|
||||||
|
55,held,2025-04-08 14:00:00,False,500,500,603177.XSHG,1760287447,6.78,8.21,long,8.39,2025-10-13,True
|
||||||
|
56,held,2025-04-08 14:00:00,True,1900,1900,000638.XSHE,1760287448,4.67,4.67,long,5.0,2025-10-13,True
|
||||||
|
57,held,2025-04-08 14:00:00,True,1000,1000,605567.XSHG,1760287449,8.4,8.4,long,5.0,2025-10-13,True
|
||||||
|
58,held,2025-04-08 14:00:00,True,1300,1300,600883.XSHG,1760287450,6.78,6.78,long,5.0,2025-10-13,True
|
||||||
|
59,held,2025-04-23 09:30:00,False,3300,3300,000638.XSHE,1760287454,3.91,4.842121212121212,long,17.903,2025-10-13,True
|
||||||
|
60,held,2025-04-23 09:30:00,False,1900,1900,600883.XSHG,1760287455,7.44,6.830526315789474,long,19.136000000000003,2025-10-13,True
|
||||||
|
61,held,2025-04-23 09:30:00,False,1500,1500,605567.XSHG,1760287456,9.85,8.503333333333334,long,19.775,2025-10-13,True
|
||||||
|
62,held,2025-04-23 09:30:00,True,5400,5400,518880.XSHG,1760287457,7.769,7.769,long,12.585779999999998,2025-10-13,True
|
||||||
|
63,held,2025-05-13 09:30:00,False,5400,5400,518880.XSHG,1760287458,7.282,7.769,long,11.79684,2025-10-13,True
|
||||||
|
64,held,2025-05-13 09:30:00,True,25800,25800,513100.XSHG,1760287459,1.54,1.54,long,11.9196,2025-10-13,True
|
||||||
|
65,held,2025-05-20 09:30:00,False,25800,25800,513100.XSHG,1760287460,1.563,1.54,long,12.09762,2025-10-13,True
|
||||||
|
66,held,2025-05-20 09:30:00,True,1000,1000,603616.XSHG,1760287461,3.96,3.96,long,5.0,2025-10-13,True
|
||||||
|
67,held,2025-05-20 09:30:00,True,600,600,600493.XSHG,1760287462,5.83,5.83,long,5.0,2025-10-13,True
|
||||||
|
68,held,2025-05-20 09:30:00,True,700,700,002188.XSHE,1760287463,5.25,5.25,long,5.0,2025-10-13,True
|
||||||
|
69,held,2025-05-20 09:30:00,True,700,700,002591.XSHE,1760287464,5.72,5.72,long,5.0,2025-10-13,True
|
||||||
|
70,held,2025-05-20 09:30:00,True,400,400,603177.XSHG,1760287465,8.43,8.43,long,5.0,2025-10-13,True
|
||||||
|
71,held,2025-05-20 09:30:00,True,400,400,603022.XSHG,1760287466,8.89,8.89,long,5.0,2025-10-13,True
|
||||||
|
72,held,2025-05-20 09:30:00,True,400,400,002828.XSHE,1760287467,8.89,8.89,long,5.0,2025-10-13,True
|
||||||
|
73,held,2025-05-20 09:30:00,True,500,500,603316.XSHG,1760287468,6.79,6.79,long,5.0,2025-10-13,True
|
||||||
|
74,held,2025-05-20 09:30:00,True,500,500,600883.XSHG,1760287469,7.85,7.85,long,5.0,2025-10-13,True
|
||||||
|
75,held,2025-05-20 09:30:00,True,800,800,600149.XSHG,1760287470,4.96,4.96,long,5.0,2025-10-13,True
|
||||||
|
76,held,2025-05-23 14:00:00,False,800,800,600149.XSHG,1760287471,5.78,4.96,long,9.624,2025-10-13,True
|
||||||
|
77,held,2025-05-23 14:00:00,True,500,500,002188.XSHE,1760287473,5.15,5.15,long,5.0,2025-10-13,True
|
||||||
|
78,held,2025-05-26 14:00:00,False,600,600,600493.XSHG,1760287475,6.03,5.83,long,8.618,2025-10-13,True
|
||||||
|
79,held,2025-05-26 14:00:00,True,200,200,002188.XSHE,1760287477,5.11,5.11,long,5.0,2025-10-13,True
|
||||||
|
80,held,2025-05-26 14:00:00,True,100,100,600883.XSHG,1760287478,7.65,7.65,long,5.0,2025-10-13,True
|
||||||
|
81,held,2025-06-17 14:00:00,False,400,400,002828.XSHE,1760287479,12.16,8.89,long,9.864,2025-10-13,True
|
||||||
|
82,held,2025-06-17 14:00:00,True,200,200,603022.XSHG,1760287481,8.78,8.78,long,5.0,2025-10-13,True
|
||||||
|
83,held,2025-06-17 14:00:00,True,300,300,603316.XSHG,1760287482,6.78,6.78,long,5.0,2025-10-13,True
|
||||||
|
84,held,2025-06-23 14:00:00,False,1000,1000,603616.XSHG,1760287483,4.38,3.96,long,9.38,2025-10-13,True
|
||||||
|
85,held,2025-06-23 14:00:00,True,200,200,600883.XSHG,1760287484,7.58,7.58,long,5.0,2025-10-13,True
|
||||||
|
86,held,2025-06-23 14:00:00,True,200,200,603316.XSHG,1760287485,6.61,6.61,long,5.0,2025-10-13,True
|
||||||
|
87,held,2025-06-23 14:00:00,True,300,300,002591.XSHE,1760287486,5.64,5.64,long,5.0,2025-10-13,True
|
||||||
|
88,held,2025-06-27 14:00:00,False,600,600,603022.XSHG,1760287487,12.56,8.801333333333334,long,12.536,2025-10-13,True
|
||||||
|
89,held,2025-06-27 14:00:00,True,300,300,600883.XSHG,1760287488,7.83,7.83,long,5.0,2025-10-13,True
|
||||||
|
90,held,2025-06-27 14:00:00,True,400,400,002591.XSHE,1760287489,6.01,6.01,long,5.0,2025-10-13,True
|
||||||
|
91,held,2025-06-27 14:00:00,True,400,400,002188.XSHE,1760287490,5.52,5.52,long,5.0,2025-10-13,True
|
||||||
|
92,held,2025-07-02 09:30:00,False,1800,1800,002188.XSHE,1760287491,5.61,5.266666666666667,long,15.098,2025-10-13,True
|
||||||
|
93,held,2025-07-02 09:30:00,False,1800,1800,002591.XSHE,1760287492,6.04,5.746666666666667,long,15.872,2025-10-13,True
|
||||||
|
94,held,2025-07-02 09:30:00,False,400,400,603177.XSHG,1760287493,9.16,8.43,long,8.664,2025-10-13,True
|
||||||
|
95,held,2025-07-02 09:30:00,False,1200,1200,603316.XSHG,1760287494,10.84,6.734166666666667,long,18.008000000000003,2025-10-13,True
|
||||||
|
96,held,2025-07-02 09:30:00,False,1600,1600,600883.XSHG,1760287495,7.89,7.699375000000001,long,17.624000000000002,2025-10-13,True
|
||||||
|
97,held,2025-07-02 09:30:00,True,24200,24200,159915.XSHE,1760287496,2.126,2.126,long,15.434759999999997,2025-10-13,True
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
0,new,2025-11-06 09:27:00,True,900,0,002512.XSHE,1762390693,0.0,0.0,long,0.0,2025-11-06,True,002512
|
||||||
|
1,new,2025-11-06 09:27:00,True,300,0,002248.XSHE,1762390694,0.0,0.0,long,0.0,2025-11-06,True,002248
|
||||||
|
2,held,2025-11-06 09:46:00,False,5300,5300,601988.XSHG,1762392499,5.68,5.74,long,20.052,2025-11-06,True,601988.XSHG
|
||||||
|
3,held,2025-11-06 09:46:00,True,3700,3700,601288.XSHG,1762392500,8.13,8.13,long,5.0,2025-11-06,True,601288.XSHG
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
0,held,2025-11-05 13:00:00,False,600,600,002248.XSHE,1762318734,13.24,12.69,long,4.972,2025-11-05,True,002248
|
||||||
|
1,held,2025-11-05 13:00:00,False,2200,2200,002374.XSHE,1762318735,3.31,3.25,long,4.641,2025-11-05,True,002374
|
||||||
|
2,held,2025-11-05 14:55:00,False,1300,1300,002522.XSHE,1762318736,5.35,5.34,long,4.477499999999999,2025-11-05,True,002522
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
0,new,2025-11-05 09:27:00,True,1000,0,002370.XSHE,1762305729,0.0,0.0,long,0.0,2025-11-05,True,002370
|
||||||
|
1,held,2025-11-05 13:00:00,False,2400,2400,002374.XSHE,1762318589,3.31,3.25,long,4.972,2025-11-05,True,002374
|
||||||
|
2,held,2025-11-05 14:55:00,False,1400,1400,002522.XSHE,1762318590,5.35,5.34,long,4.744999999999999,2025-11-05,True,002522
|
||||||
|
@@ -0,0 +1,99 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
0,held,2024-11-01 09:30:00,True,23700,23700,159915.XSHE,1760287367,2.107,2.107,long,14.98077,2025-10-13,True,159915
|
||||||
|
1,held,2024-11-04 09:30:00,False,23700,23700,159915.XSHE,1760287368,2.078,2.107,long,14.774579999999998,2025-10-13,True,159915
|
||||||
|
2,held,2024-11-04 09:30:00,True,8100,8100,518880.XSHG,1760287369,6.018,6.018,long,14.623739999999998,2025-10-13,True,518880.XSHG
|
||||||
|
3,held,2024-11-12 09:30:00,False,8100,8100,518880.XSHG,1760287370,5.823,6.018,long,14.14989,2025-10-13,True,518880.XSHG
|
||||||
|
4,held,2024-11-12 09:30:00,True,31000,31000,513100.XSHG,1760287371,1.537,1.537,long,14.294099999999998,2025-10-13,True,513100.XSHG
|
||||||
|
5,held,2024-11-13 09:30:00,False,31000,31000,513100.XSHG,1760287372,1.528,1.537,long,14.210399999999998,2025-10-13,True,513100.XSHG
|
||||||
|
6,held,2024-11-13 09:30:00,True,20300,20300,159915.XSHE,1760287373,2.328,2.328,long,14.177519999999998,2025-10-13,True,159915
|
||||||
|
7,held,2024-11-21 09:30:00,False,20300,20300,159915.XSHE,1760287374,2.21,2.328,long,13.458899999999998,2025-10-13,True,159915
|
||||||
|
8,held,2024-11-21 09:30:00,True,1300,1300,002629.XSHE,1760287375,3.33,3.33,long,5.0,2025-10-13,True,002629
|
||||||
|
9,held,2024-11-21 09:30:00,True,600,600,600857.XSHG,1760287378,7.34,7.34,long,5.0,2025-10-13,True,600857.XSHG
|
||||||
|
10,held,2024-11-21 09:30:00,True,400,400,002205.XSHE,1760287381,9.1,9.1,long,5.0,2025-10-13,True,002205
|
||||||
|
11,held,2024-11-21 09:30:00,True,800,800,000638.XSHE,1760287382,5.45,5.45,long,5.0,2025-10-13,True,000638
|
||||||
|
12,held,2024-11-21 09:30:00,True,800,800,600778.XSHG,1760287383,5.49,5.49,long,5.0,2025-10-13,True,600778.XSHG
|
||||||
|
13,held,2024-11-21 09:30:00,True,400,400,003003.XSHE,1760287384,9.79,9.79,long,5.0,2025-10-13,True,003003
|
||||||
|
14,held,2024-12-05 14:00:00,False,1300,1300,002629.XSHE,1760287385,3.95,3.33,long,10.135,2025-10-13,True,002629
|
||||||
|
15,held,2024-12-05 14:00:00,True,200,200,002205.XSHE,1760287387,9.42,9.42,long,5.0,2025-10-13,True,002205
|
||||||
|
16,held,2024-12-05 14:00:00,True,300,300,603022.XSHG,1760287388,8.28,8.28,long,5.0,2025-10-13,True,603022.XSHG
|
||||||
|
17,held,2024-12-13 14:00:00,False,600,600,002205.XSHE,1760287389,10.54,9.206666666666669,long,11.323999999999998,2025-10-13,True,002205
|
||||||
|
18,held,2024-12-13 14:00:00,True,200,200,003003.XSHE,1760287391,10.86,10.86,long,5.0,2025-10-13,True,003003
|
||||||
|
19,held,2024-12-17 14:00:00,False,800,800,600778.XSHG,1760287393,10.71,5.49,long,13.568,2025-10-13,True,600778.XSHG
|
||||||
|
20,held,2024-12-17 14:00:00,True,300,300,003003.XSHE,1760287395,10.17,10.17,long,5.0,2025-10-13,True,003003
|
||||||
|
21,held,2024-12-17 14:00:00,True,400,400,600883.XSHG,1760287396,7.46,7.46,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
22,held,2024-12-24 14:00:00,False,800,800,000638.XSHE,1760287397,4.87,5.45,long,8.896,2025-10-13,True,000638
|
||||||
|
23,held,2024-12-24 14:00:00,True,100,100,003003.XSHE,1760287400,9.21,9.21,long,5.0,2025-10-13,True,003003
|
||||||
|
24,held,2024-12-25 14:00:00,False,1200,1200,003003.XSHE,1760287401,9.03,10.056666666666665,long,15.836,2025-10-13,True,003003
|
||||||
|
25,held,2024-12-27 14:00:00,False,600,600,600857.XSHG,1760287405,8.26,7.34,long,9.956,2025-10-13,True,600857.XSHG
|
||||||
|
26,held,2025-01-03 09:30:00,False,800,800,600493.XSHG,1760287409,5.26,5.39,long,9.208,2025-10-13,True,600493.XSHG
|
||||||
|
27,held,2025-01-03 09:30:00,False,2300,2300,603022.XSHG,1760287410,7.28,7.921304347826087,long,21.7672,2025-10-13,True,603022.XSHG
|
||||||
|
28,held,2025-01-03 09:30:00,False,2300,2300,600883.XSHG,1760287412,6.52,7.0978260869565215,long,19.996,2025-10-13,True,600883.XSHG
|
||||||
|
29,held,2025-01-03 09:30:00,True,27800,27800,513100.XSHG,1760287413,1.641,1.641,long,13.68594,2025-10-13,True,513100.XSHG
|
||||||
|
30,held,2025-01-13 09:30:00,False,27800,27800,513100.XSHG,1760287414,1.611,1.641,long,13.43574,2025-10-13,True,513100.XSHG
|
||||||
|
31,held,2025-01-13 09:30:00,True,7300,7300,518880.XSHG,1760287415,6.113,6.113,long,13.38747,2025-10-13,True,518880.XSHG
|
||||||
|
32,held,2025-02-20 09:30:00,False,7300,7300,518880.XSHG,1760287416,6.602,6.113,long,14.45838,2025-10-13,True,518880.XSHG
|
||||||
|
33,held,2025-02-20 09:30:00,True,22100,22100,159915.XSHE,1760287417,2.182,2.182,long,14.466659999999996,2025-10-13,True,159915
|
||||||
|
34,held,2025-03-11 09:30:00,False,22100,22100,159915.XSHE,1760287418,2.132,2.182,long,14.13516,2025-10-13,True,159915
|
||||||
|
35,held,2025-03-11 09:30:00,True,600,600,600421.XSHG,1760287419,6.99,6.99,long,5.0,2025-10-13,True,600421.XSHG
|
||||||
|
36,held,2025-03-11 09:30:00,True,800,800,600493.XSHG,1760287420,5.43,5.43,long,5.0,2025-10-13,True,600493.XSHG
|
||||||
|
37,held,2025-03-11 09:30:00,True,900,900,002188.XSHE,1760287421,4.81,4.81,long,5.0,2025-10-13,True,002188
|
||||||
|
38,held,2025-03-11 09:30:00,True,900,900,000638.XSHE,1760287422,5.19,5.19,long,5.0,2025-10-13,True,000638
|
||||||
|
39,held,2025-03-11 09:30:00,True,800,800,002591.XSHE,1760287423,5.37,5.37,long,5.0,2025-10-13,True,002591
|
||||||
|
40,held,2025-03-11 09:30:00,True,500,500,603022.XSHG,1760287424,8.09,8.09,long,5.0,2025-10-13,True,603022.XSHG
|
||||||
|
41,held,2025-03-11 09:30:00,True,600,600,600883.XSHG,1760287425,6.94,6.94,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
42,held,2025-03-11 09:30:00,True,1000,1000,600149.XSHG,1760287426,4.36,4.36,long,5.0,2025-10-13,True,600149.XSHG
|
||||||
|
43,held,2025-03-11 09:30:00,True,500,500,603177.XSHG,1760287427,8.21,8.21,long,5.0,2025-10-13,True,603177.XSHG
|
||||||
|
44,held,2025-03-11 09:30:00,True,500,500,605567.XSHG,1760287428,8.71,8.71,long,5.0,2025-10-13,True,605567.XSHG
|
||||||
|
45,held,2025-03-25 14:00:00,False,600,600,600421.XSHG,1760287429,7.36,6.99,long,9.416,2025-10-13,True,600421.XSHG
|
||||||
|
46,held,2025-03-25 14:00:00,True,600,600,002188.XSHE,1760287430,4.45,4.45,long,5.0,2025-10-13,True,002188
|
||||||
|
47,held,2025-03-25 14:00:00,True,500,500,000638.XSHE,1760287431,4.87,4.87,long,5.0,2025-10-13,True,000638
|
||||||
|
48,held,2025-03-25 14:00:00,True,500,500,600493.XSHG,1760287432,5.3,5.3,long,5.0,2025-10-13,True,600493.XSHG
|
||||||
|
49,canceled,2025-04-07 14:00:00,False,1400,0,000638.XSHE,1760287435,0.0,5.075714285714286,long,0.0,2025-10-13,True,000638
|
||||||
|
50,held,2025-04-08 14:00:00,False,1300,1300,600493.XSHG,1760287442,4.49,5.38,long,10.837,2025-10-13,True,600493.XSHG
|
||||||
|
51,held,2025-04-08 14:00:00,False,1500,1500,002188.XSHE,1760287443,3.94,4.666,long,10.91,2025-10-13,True,002188
|
||||||
|
52,held,2025-04-08 14:00:00,False,800,800,002591.XSHE,1760287444,4.3,5.37,long,8.44,2025-10-13,True,002591
|
||||||
|
53,held,2025-04-08 14:00:00,False,500,500,603022.XSHG,1760287445,7.08,8.09,long,8.54,2025-10-13,True,603022.XSHG
|
||||||
|
54,held,2025-04-08 14:00:00,False,1000,1000,600149.XSHG,1760287446,3.76,4.36,long,8.76,2025-10-13,True,600149.XSHG
|
||||||
|
55,held,2025-04-08 14:00:00,False,500,500,603177.XSHG,1760287447,6.78,8.21,long,8.39,2025-10-13,True,603177.XSHG
|
||||||
|
56,held,2025-04-08 14:00:00,True,1900,1900,000638.XSHE,1760287448,4.67,4.67,long,5.0,2025-10-13,True,000638
|
||||||
|
57,held,2025-04-08 14:00:00,True,1000,1000,605567.XSHG,1760287449,8.4,8.4,long,5.0,2025-10-13,True,605567.XSHG
|
||||||
|
58,held,2025-04-08 14:00:00,True,1300,1300,600883.XSHG,1760287450,6.78,6.78,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
59,held,2025-04-23 09:30:00,False,3300,3300,000638.XSHE,1760287454,3.91,4.842121212121212,long,17.903,2025-10-13,True,000638
|
||||||
|
60,held,2025-04-23 09:30:00,False,1900,1900,600883.XSHG,1760287455,7.44,6.830526315789474,long,19.136000000000003,2025-10-13,True,600883.XSHG
|
||||||
|
61,held,2025-04-23 09:30:00,False,1500,1500,605567.XSHG,1760287456,9.85,8.503333333333334,long,19.775,2025-10-13,True,605567.XSHG
|
||||||
|
62,held,2025-04-23 09:30:00,True,5400,5400,518880.XSHG,1760287457,7.769,7.769,long,12.585779999999998,2025-10-13,True,518880.XSHG
|
||||||
|
63,held,2025-05-13 09:30:00,False,5400,5400,518880.XSHG,1760287458,7.282,7.769,long,11.79684,2025-10-13,True,518880.XSHG
|
||||||
|
64,held,2025-05-13 09:30:00,True,25800,25800,513100.XSHG,1760287459,1.54,1.54,long,11.9196,2025-10-13,True,513100.XSHG
|
||||||
|
65,held,2025-05-20 09:30:00,False,25800,25800,513100.XSHG,1760287460,1.563,1.54,long,12.09762,2025-10-13,True,513100.XSHG
|
||||||
|
66,held,2025-05-20 09:30:00,True,1000,1000,603616.XSHG,1760287461,3.96,3.96,long,5.0,2025-10-13,True,603616.XSHG
|
||||||
|
67,held,2025-05-20 09:30:00,True,600,600,600493.XSHG,1760287462,5.83,5.83,long,5.0,2025-10-13,True,600493.XSHG
|
||||||
|
68,held,2025-05-20 09:30:00,True,700,700,002188.XSHE,1760287463,5.25,5.25,long,5.0,2025-10-13,True,002188
|
||||||
|
69,held,2025-05-20 09:30:00,True,700,700,002591.XSHE,1760287464,5.72,5.72,long,5.0,2025-10-13,True,002591
|
||||||
|
70,held,2025-05-20 09:30:00,True,400,400,603177.XSHG,1760287465,8.43,8.43,long,5.0,2025-10-13,True,603177.XSHG
|
||||||
|
71,held,2025-05-20 09:30:00,True,400,400,603022.XSHG,1760287466,8.89,8.89,long,5.0,2025-10-13,True,603022.XSHG
|
||||||
|
72,held,2025-05-20 09:30:00,True,400,400,002828.XSHE,1760287467,8.89,8.89,long,5.0,2025-10-13,True,002828
|
||||||
|
73,held,2025-05-20 09:30:00,True,500,500,603316.XSHG,1760287468,6.79,6.79,long,5.0,2025-10-13,True,603316.XSHG
|
||||||
|
74,held,2025-05-20 09:30:00,True,500,500,600883.XSHG,1760287469,7.85,7.85,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
75,held,2025-05-20 09:30:00,True,800,800,600149.XSHG,1760287470,4.96,4.96,long,5.0,2025-10-13,True,600149.XSHG
|
||||||
|
76,held,2025-05-23 14:00:00,False,800,800,600149.XSHG,1760287471,5.78,4.96,long,9.624,2025-10-13,True,600149.XSHG
|
||||||
|
77,held,2025-05-23 14:00:00,True,500,500,002188.XSHE,1760287473,5.15,5.15,long,5.0,2025-10-13,True,002188
|
||||||
|
78,held,2025-05-26 14:00:00,False,600,600,600493.XSHG,1760287475,6.03,5.83,long,8.618,2025-10-13,True,600493.XSHG
|
||||||
|
79,held,2025-05-26 14:00:00,True,200,200,002188.XSHE,1760287477,5.11,5.11,long,5.0,2025-10-13,True,002188
|
||||||
|
80,held,2025-05-26 14:00:00,True,100,100,600883.XSHG,1760287478,7.65,7.65,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
81,held,2025-06-17 14:00:00,False,400,400,002828.XSHE,1760287479,12.16,8.89,long,9.864,2025-10-13,True,002828
|
||||||
|
82,held,2025-06-17 14:00:00,True,200,200,603022.XSHG,1760287481,8.78,8.78,long,5.0,2025-10-13,True,603022.XSHG
|
||||||
|
83,held,2025-06-17 14:00:00,True,300,300,603316.XSHG,1760287482,6.78,6.78,long,5.0,2025-10-13,True,603316.XSHG
|
||||||
|
84,held,2025-06-23 14:00:00,False,1000,1000,603616.XSHG,1760287483,4.38,3.96,long,9.38,2025-10-13,True,603616.XSHG
|
||||||
|
85,held,2025-06-23 14:00:00,True,200,200,600883.XSHG,1760287484,7.58,7.58,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
86,held,2025-06-23 14:00:00,True,200,200,603316.XSHG,1760287485,6.61,6.61,long,5.0,2025-10-13,True,603316.XSHG
|
||||||
|
87,held,2025-06-23 14:00:00,True,300,300,002591.XSHE,1760287486,5.64,5.64,long,5.0,2025-10-13,True,002591
|
||||||
|
88,held,2025-06-27 14:00:00,False,600,600,603022.XSHG,1760287487,12.56,8.801333333333334,long,12.536,2025-10-13,True,603022.XSHG
|
||||||
|
89,held,2025-06-27 14:00:00,True,300,300,600883.XSHG,1760287488,7.83,7.83,long,5.0,2025-10-13,True,600883.XSHG
|
||||||
|
90,held,2025-06-27 14:00:00,True,400,400,002591.XSHE,1760287489,6.01,6.01,long,5.0,2025-10-13,True,002591
|
||||||
|
91,held,2025-06-27 14:00:00,True,400,400,002188.XSHE,1760287490,5.52,5.52,long,5.0,2025-10-13,True,002188
|
||||||
|
92,held,2025-07-02 09:30:00,False,1800,1800,002188.XSHE,1760287491,5.61,5.266666666666667,long,15.098,2025-10-13,True,002188
|
||||||
|
93,held,2025-07-02 09:30:00,False,1800,1800,002591.XSHE,1760287492,6.04,5.746666666666667,long,15.872,2025-10-13,True,002591
|
||||||
|
94,held,2025-07-02 09:30:00,False,400,400,603177.XSHG,1760287493,9.16,8.43,long,8.664,2025-10-13,True,603177.XSHG
|
||||||
|
95,held,2025-07-02 09:30:00,False,1200,1200,603316.XSHG,1760287494,10.84,6.734166666666667,long,18.008000000000003,2025-10-13,True,603316.XSHG
|
||||||
|
96,held,2025-07-02 09:30:00,False,1600,1600,600883.XSHG,1760287495,7.89,7.699375000000001,long,17.624000000000002,2025-10-13,True,600883.XSHG
|
||||||
|
97,held,2025-07-02 09:30:00,True,24200,24200,159915.XSHE,1760287496,2.126,2.126,long,15.434759999999997,2025-10-13,True,159915
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
,状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
Binary file not shown.
@@ -0,0 +1,153 @@
|
|||||||
|
'''
|
||||||
|
小果聚宽跟单系统
|
||||||
|
原理替代,继承聚宽的交易函数类
|
||||||
|
读取下单类的函数参数把交易数据发送到服务器
|
||||||
|
把下面的全部源代码复制到聚宽策略的开头就可以
|
||||||
|
实盘前先模拟盘测试一下数据
|
||||||
|
把下面的内容全部复制到策略的开头就可以
|
||||||
|
作者微信15117320079
|
||||||
|
'''
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pandas as pd
|
||||||
|
from jqdata import *
|
||||||
|
url='http://117.72.149.251'
|
||||||
|
port=8888
|
||||||
|
#自定义服务器编码
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad'
|
||||||
|
#记得把这个改成自己的一个策略一个,策略的名称找作者建立
|
||||||
|
password='cls'
|
||||||
|
class joinquant_trader:
|
||||||
|
def __init__(self,url='http://117.72.149.251',
|
||||||
|
port=8888,
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad',
|
||||||
|
password='cls'):
|
||||||
|
'''
|
||||||
|
获取服务器数据
|
||||||
|
'''
|
||||||
|
self.url=url
|
||||||
|
self.port=port
|
||||||
|
self.url_code=url_code
|
||||||
|
self.password=password
|
||||||
|
def get_user_data(self,data_type='用户信息'):
|
||||||
|
'''
|
||||||
|
获取使用的数据
|
||||||
|
data_type='用户信息','实时数据',历史数据','清空实时数据','清空历史数据'
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":data_type},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":"\n {'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '001.XSHE', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}\n "},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
def send_order(self,result):
|
||||||
|
'''
|
||||||
|
发送交易数据
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":'发送信号'},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":result},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
#继承类
|
||||||
|
xg_data=joinquant_trader(url=url,port=port,password=password,)
|
||||||
|
def send_order(result):
|
||||||
|
'''
|
||||||
|
发送函数
|
||||||
|
status: 状态, 一个OrderStatus值
|
||||||
|
add_time: 订单添加时间, [datetime.datetime]对象
|
||||||
|
is_buy: bool值, 买还是卖,对于期货:
|
||||||
|
开多/平空 -> 买
|
||||||
|
开空/平多 -> 卖
|
||||||
|
amount: 下单数量, 不管是买还是卖, 都是正数
|
||||||
|
filled: 已经成交的股票数量, 正数
|
||||||
|
security: 股票代码
|
||||||
|
order_id: 订单ID
|
||||||
|
price: 平均成交价格, 已经成交的股票的平均成交价格(一个订单可能分多次成交)
|
||||||
|
avg_cost: 卖出时表示下卖单前的此股票的持仓成本, 用来计算此次卖出的收益. 买入时表示此次买入的均价(等同于price).
|
||||||
|
side: 多/空,'long'/'short'
|
||||||
|
action: 开/平, 'open'/'close'
|
||||||
|
commission交易费用(佣金、税费等)
|
||||||
|
'''
|
||||||
|
data={}
|
||||||
|
data['状态']=str(result.status)
|
||||||
|
data['订单添加时间']=str(result.add_time)
|
||||||
|
data['买卖']=str(result.is_buy)
|
||||||
|
data['下单数量']=str(result.amount)
|
||||||
|
data['已经成交']=str(result.filled)
|
||||||
|
data['股票代码']=str(result.security)
|
||||||
|
data['订单ID']=str(result.order_id)
|
||||||
|
data['平均成交价格']=str(result.price)
|
||||||
|
data['持仓成本']=str(result.avg_cost)
|
||||||
|
data['多空']=str(result.side)
|
||||||
|
data['交易费用']=str(result.commission)
|
||||||
|
result=str(data)
|
||||||
|
xg_data.send_order(result)
|
||||||
|
return data
|
||||||
|
def xg_order(func):
|
||||||
|
'''
|
||||||
|
继承order对象 数据交易函数
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target(func):
|
||||||
|
'''
|
||||||
|
继承order_target对象 百分比
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
def xg_order_value(func):
|
||||||
|
'''
|
||||||
|
继承order_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target_value(func):
|
||||||
|
'''
|
||||||
|
继承order_target_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
order = xg_order(order)
|
||||||
|
order_target = xg_order_target(order_target)
|
||||||
|
order_value = xg_order_value(order_value)
|
||||||
|
order_target_value = xg_order_target_value(order_target_value)
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install pip==23.2
|
||||||
|
py -m pip install akshare
|
||||||
|
py -m pip install easyquotation
|
||||||
|
py -m pip install yagmail
|
||||||
|
py -m pip install pywinauto==0.6.6
|
||||||
|
py -m pip install matplotlib
|
||||||
|
py -m pip install mplfinance
|
||||||
|
py -m pip install finta
|
||||||
|
py -m pip install pyinstaller
|
||||||
|
py -m pip install pyautogui
|
||||||
|
py -m pip install schedule
|
||||||
|
py -m pip install pywin32
|
||||||
|
py -m pip install pyexecjs
|
||||||
|
py -m pip install pytdx
|
||||||
|
py -m pip install pydash
|
||||||
|
py -m pip install empyrical
|
||||||
|
py -m pip install pywencai
|
||||||
|
py -m pip install pandas==1.5.3
|
||||||
|
py -m pip install numpy==1.26.2
|
||||||
|
py -m pip install scipy==1.11.4
|
||||||
|
py -m pip install ffn
|
||||||
|
py -m pip install quantstats==0.0.60
|
||||||
|
py -m pip install dash
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip==23.2
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple akshare
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple easyquotation
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple yagmail
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywinauto==0.6.6
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mplfinance
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple finta
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple schedule
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywin32
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyexecjs
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytdx
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pydash
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple empyrical
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywencai
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas==1.5.3
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy==1.26.2
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy==1.11.4
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ffn
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple quantstats==0.0.60
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple dash
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pip==23.2
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ akshare
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ easyquotation
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ yagmail
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywinauto==0.6.6
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ matplotlib
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ mplfinance
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ finta
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyinstaller
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyautogui
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ schedule
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywin32
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyexecjs
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pytdx
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pydash
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ empyrical
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywencai
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pandas==1.5.3
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ numpy==1.26.2
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ scipy==1.11.4
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ ffn
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ quantstats==0.0.60
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ dash
|
||||||
@@ -0,0 +1,261 @@
|
|||||||
|
from dash import html
|
||||||
|
from dash import dcc
|
||||||
|
from dash import Input#输入
|
||||||
|
from dash import Output#输出
|
||||||
|
import time
|
||||||
|
from dash import dash_table
|
||||||
|
import dash
|
||||||
|
import pandas as pd
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
import os
|
||||||
|
path=os.path.dirname(os.path.abspath(__file__))
|
||||||
|
now_date=str(datetime.now())[:10]
|
||||||
|
select_list=['用户信息','实时数据','历史数据','清空实时数据','清空历史数据']
|
||||||
|
def params_func(text=''):
|
||||||
|
'''
|
||||||
|
解析函数
|
||||||
|
'''
|
||||||
|
data_list=[]
|
||||||
|
f=text.split('\n')
|
||||||
|
for i in f:
|
||||||
|
text=i.strip().lstrip()
|
||||||
|
data_list.append(text)
|
||||||
|
func='\n'.join(data_list)
|
||||||
|
return func
|
||||||
|
def get_n1_n2_daily(start_date='2023-12-14',end_date='2023-12-30'):
|
||||||
|
'''
|
||||||
|
获取2个时间的天数
|
||||||
|
'''
|
||||||
|
import datetime
|
||||||
|
end_date=end_date.split('-')
|
||||||
|
start_date=start_date.split('-')
|
||||||
|
d1 =datetime.datetime(int(start_date[0]),int(start_date[1]),int(start_date[2]))
|
||||||
|
d2 = datetime.datetime(int(end_date[0]),int(end_date[1]),int(end_date[2])) # 第二个日期
|
||||||
|
interval = d2 - d1 # 两日期差距
|
||||||
|
days=interval.days
|
||||||
|
return days
|
||||||
|
app=dash.Dash(__name__)
|
||||||
|
app.layout=html.Div([
|
||||||
|
html.H3('小果聚合跟单服务器,找作者获取授权码 微信15117320079,输入的数据必须是字符串'),
|
||||||
|
html.P('实盘前请清空实时数据其他的不用,点击运行按钮获取数据,运行实盘前需要获取授权码'),
|
||||||
|
html.Tbody([
|
||||||
|
html.Tr([
|
||||||
|
html.Td('用户名称',
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td('数据类型',
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td('运行程序',
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td('下载数据',
|
||||||
|
style={'border':'1px solid','width':'200px'})
|
||||||
|
]),
|
||||||
|
html.Tr([
|
||||||
|
html.Td(dcc.Input(value='123456',id='joinquant_trader_password'),
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td(dcc.Dropdown(options=select_list,value='用户信息',id='joinquant_trader_data_type'),
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td(dcc.Dropdown(options=['运行','不运行'],id='joinquant_trader_run',value='不运行'),
|
||||||
|
style={'border':'1px solid','width':'200px'}),
|
||||||
|
html.Td(dcc.RadioItems(options={'下载数据':"下载数据","不下载数据":"不下载数据"},id='joinquant_trader_down_data',value='不下载数据'),
|
||||||
|
style={'border':'1px solid','width':'200px'})
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
dcc.Textarea(value="""
|
||||||
|
{'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}
|
||||||
|
""",
|
||||||
|
id='joinquant_trader_text',style={'width': '80%', 'height': 200,"text-align":"left",}),
|
||||||
|
html.H3('数据展示'),
|
||||||
|
dash_table.DataTable(
|
||||||
|
id='joinquant_trader_table',
|
||||||
|
page_size=10,
|
||||||
|
style_table={'font-size': 15},
|
||||||
|
sort_action='native'),
|
||||||
|
dcc.Download(id='joinquant_trader_table_down')
|
||||||
|
])
|
||||||
|
#回调表1
|
||||||
|
@app.callback(
|
||||||
|
Output(component_id='joinquant_trader_table',component_property='data',allow_duplicate=True),
|
||||||
|
Input(component_id='joinquant_trader_password',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_data_type',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_text',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_run',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_down_data',component_property='value'),
|
||||||
|
prevent_initial_call=True
|
||||||
|
)
|
||||||
|
def show_wencai_data_table_1(password,data_type,text,run,down_data):
|
||||||
|
if run=='运行':
|
||||||
|
password_df=pd.read_excel(r'授权表\授权表.xlsx',dtype='object')
|
||||||
|
try:
|
||||||
|
del password_df['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
now_date=str(datetime.now())[:10]
|
||||||
|
password_df['用户名称']=password_df['用户名称'].astype(str)
|
||||||
|
password_df['到期时间']=password_df['到期时间'].astype(str)
|
||||||
|
password_df.index=password_df['用户名称']
|
||||||
|
password_list=password_df['用户名称'].tolist()
|
||||||
|
if str(password) in password_list:
|
||||||
|
text=params_func(text)
|
||||||
|
text=eval(text)
|
||||||
|
df=password_df[password_df['用户名称']==password]
|
||||||
|
end_date=str(df['到期时间'].tolist()[-1])[:10]
|
||||||
|
day=get_n1_n2_daily(start_date=now_date,end_date=end_date)
|
||||||
|
df['到期天数']=day
|
||||||
|
if day>=1:
|
||||||
|
if data_type=='用户信息':
|
||||||
|
df['信息推送']='授权码正常'
|
||||||
|
df['数据状态']=True
|
||||||
|
elif data_type=='实时数据':
|
||||||
|
try:
|
||||||
|
df=pd.read_csv(r'{}\data\实时数据\{}实时数据.csv'.format(path,password))
|
||||||
|
try:
|
||||||
|
del df['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
df['交易日']=df['交易日'].astype(str)
|
||||||
|
select_list=list(text.keys())
|
||||||
|
select_list.append('交易日')
|
||||||
|
select_list.append('数据状态')
|
||||||
|
df=df[select_list]
|
||||||
|
df=df[df['交易日']==now_date]
|
||||||
|
except Exception as e:
|
||||||
|
print(e,'实时数据有问题')
|
||||||
|
df=pd.DataFrame()
|
||||||
|
try:
|
||||||
|
hist=pd.read_csv(r'{}\data\历史数据\{}历史数据.csv'.format(path,password))
|
||||||
|
try:
|
||||||
|
del hist['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
df['交易日']=df['交易日'].astype(str)
|
||||||
|
select_list=list(text.keys())
|
||||||
|
select_list.append('交易日')
|
||||||
|
select_list.append('数据状态')
|
||||||
|
df=df[select_list]
|
||||||
|
except Exception as e:
|
||||||
|
print(e,'历史数据有问题')
|
||||||
|
hist=pd.DataFrame()
|
||||||
|
data=pd.DataFrame()
|
||||||
|
data['状态']=[text['状态']]
|
||||||
|
data['订单添加时间']=[text['订单添加时间']]
|
||||||
|
data['买卖']=[text['买卖']]
|
||||||
|
data['下单数量']=[text['下单数量']]
|
||||||
|
data['已经成交']=[text['已经成交']]
|
||||||
|
data['股票代码']=[text['股票代码']]
|
||||||
|
data['订单ID']=[text['订单ID']]
|
||||||
|
data['平均成交价格']=[text['平均成交价格']]
|
||||||
|
data['持仓成本']=[text['持仓成本']]
|
||||||
|
data['多空']=[text['多空']]
|
||||||
|
data['交易费用']=[text['交易费用']]
|
||||||
|
df=pd.concat([df,data],ignore_index=True)
|
||||||
|
df['证券代码']=df['股票代码'].apply(lambda x: str(x).split('.XSHE')[0])
|
||||||
|
df['数据长度']=df['证券代码'].apply(lambda x: len(str(x)))
|
||||||
|
df=df[df['数据长度']>=6]
|
||||||
|
try:
|
||||||
|
del df['数据长度']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
df=df.drop_duplicates(subset=['股票代码','下单数量','买卖','多空'],keep='last')
|
||||||
|
df['交易日']=now_date
|
||||||
|
df['数据状态']=True
|
||||||
|
df.to_csv(r'{}\data\实时数据\{}实时数据.csv'.format(path,password))
|
||||||
|
hist=pd.concat([hist,data],ignore_index=True)
|
||||||
|
hist=hist.drop_duplicates(subset=['股票代码','下单数量','买卖','多空'],keep='last')
|
||||||
|
hist['交易日']=now_date
|
||||||
|
hist['数据状态']=True
|
||||||
|
hist.to_csv(r'{}\data\历史数据\{}历史数据.csv'.format(path,password))
|
||||||
|
elif data_type=='清空实时数据':
|
||||||
|
df=pd.DataFrame()
|
||||||
|
df.to_csv(r'{}\data\实时数据\{}实时数据.csv'.format(path,password))
|
||||||
|
elif data_type=='历史数据':
|
||||||
|
try:
|
||||||
|
hist=pd.read_csv(r'{}\data\历史数据\{}历史数据.csv'.format(path,password))
|
||||||
|
hist['证券代码']=hist['股票代码'].apply(lambda x: str(x).split('.XSHE')[0])
|
||||||
|
hist['数据长度']=hist['证券代码'].apply(lambda x: len(str(x)))
|
||||||
|
hist=hist[hist['数据长度']>=6]
|
||||||
|
hist=hist.drop_duplicates(subset=['股票代码','下单数量','买卖','多空'],keep='last')
|
||||||
|
try:
|
||||||
|
del hist['数据长度']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
del hist['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
df=hist
|
||||||
|
df['交易日']=df['交易日'].astype(str)
|
||||||
|
select_list=list(text.keys())
|
||||||
|
select_list.append('交易日')
|
||||||
|
select_list.append('数据状态')
|
||||||
|
df=df[select_list]
|
||||||
|
except Exception as e:
|
||||||
|
print(e,'历史数据有问题')
|
||||||
|
df=pd.DataFrame()
|
||||||
|
elif data_type=='清空历史数据':
|
||||||
|
df=pd.DataFrame()
|
||||||
|
df.to_csv(r'{}\data\历史数据\{}历史数据.csv'.format(path,password))
|
||||||
|
else:
|
||||||
|
df['信息推送']='授权码到期找作者获取'
|
||||||
|
df['数据状态']=False
|
||||||
|
else:
|
||||||
|
df['信息推送']='授权码到期找作者获取'
|
||||||
|
df['数据状态']=False
|
||||||
|
return df.to_dict('records')
|
||||||
|
else:
|
||||||
|
df=pd.DataFrame()
|
||||||
|
df['信息提示']=['用户没有注册请注册/联系作者微信15117320079']
|
||||||
|
df['数据状态']=False
|
||||||
|
return df.to_dict('records')
|
||||||
|
else:
|
||||||
|
df=pd.DataFrame()
|
||||||
|
df['信息提示']=['没有点击运行选择']
|
||||||
|
df['数据状态']=False
|
||||||
|
return df.to_dict('records')
|
||||||
|
|
||||||
|
#回调下载
|
||||||
|
@app.callback(
|
||||||
|
Output(component_id='joinquant_trader_table_down',component_property='data',allow_duplicate=True),
|
||||||
|
Input(component_id='joinquant_trader_password',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_data_type',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_text',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_run',component_property='value'),
|
||||||
|
Input(component_id='joinquant_trader_down_data',component_property='value'),
|
||||||
|
prevent_initial_call=True
|
||||||
|
)
|
||||||
|
def show_wencai_data_table_down(password,data_type,text,run,down_data):
|
||||||
|
if down_data=='下载数据':
|
||||||
|
password_df=pd.read_excel(r'授权表\授权表.xlsx',dtype='object')
|
||||||
|
try:
|
||||||
|
del password_df['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
now_date=str(datetime.now())[:10]
|
||||||
|
password_df['用户名称']=password_df['用户名称'].astype(str)
|
||||||
|
password_df['到期时间']=password_df['到期时间'].astype(str)
|
||||||
|
password_df.index=password_df['用户名称']
|
||||||
|
password_list=password_df['用户名称'].tolist()
|
||||||
|
if str(password) in password_list:
|
||||||
|
text=params_func(text)
|
||||||
|
text=eval(text)
|
||||||
|
df=password_df[password_df['用户名称']==password]
|
||||||
|
end_date=str(df['到期时间'].tolist()[-1])[:10]
|
||||||
|
day=get_n1_n2_daily(start_date=now_date,end_date=end_date)
|
||||||
|
df['到期天数']=day
|
||||||
|
if day>=1:
|
||||||
|
if data_type in ['实时数据','历史数据']:
|
||||||
|
hist=pd.read_csv(r'{}\data\{}\{}{}.csv'.format(path,data_type,password,data_type))
|
||||||
|
try:
|
||||||
|
del hist['Unnamed: 0']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
df=hist
|
||||||
|
return dcc.send_data_frame(df.to_excel,filename='{}{}.xlsx'.format(now_date,data_type))
|
||||||
|
|
||||||
|
if __name__=='__main__':
|
||||||
|
app.run(
|
||||||
|
host='0.0.0.0', # 监听所有网络接口
|
||||||
|
port=8888, # 端口
|
||||||
|
debug=True # 开发时建议开启debug模式,便于调试
|
||||||
|
)
|
||||||
Binary file not shown.
@@ -0,0 +1,472 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"参数研究*args, **kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"https://blog.csdn.net/GODSuner/article/details/117961990"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args 和 ``kwargs` 这两个魔法变量需要花费大量时间来解释。别被这些语句所绊倒。其实这些并不是什么超级特殊的参数,也并不奇特,只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。 接下来我们就来一起了解他们的用法**,以及在什么情况下使用?·\n",
|
||||||
|
"\n",
|
||||||
|
"首先你要明白的是:\n",
|
||||||
|
"\n",
|
||||||
|
"其实并不是写成 *args 和 **kwargs ,只有前面的 * (星号)才是必须的。\n",
|
||||||
|
"向python传递参数的方式有两种:\n",
|
||||||
|
"位置参数(positional argument)\n",
|
||||||
|
"关键词参数(keyword argument)\n",
|
||||||
|
"现在我们再来看 *args 与 **kwargs 的区别,两者都是 python 中可变的参数\n",
|
||||||
|
"*args 表示任何多个无名参数, 他本质上是一个 tuple\n",
|
||||||
|
"** kwargs 表示关键字参数, 它本质上是一个 dict\n",
|
||||||
|
"\n",
|
||||||
|
"同时使用时必须要求 *args 参数列要在** kwargs 前面 【因为位置参数在关键字参数的前面。】"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args 的用法\n",
|
||||||
|
"* args 和 ** args 主要用于函数定义,你可以将不定数量的参数传递给一个函数。\n",
|
||||||
|
"\n",
|
||||||
|
"这里不定的意思是: 预先并不知道,函数使用者会传递多少个参数给你,所在在这个场景下使用这两个关键字。 * args 是用来发送一个 非键值 的可变数量的参数列表给一个函数。"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"first normal arg: yasoob\n",
|
||||||
|
"another arg through *argv: python\n",
|
||||||
|
"another arg through *argv: eggs\n",
|
||||||
|
"another arg through *argv: test\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_var_args(f_arg, *argv):\n",
|
||||||
|
" print(\"first normal arg:\",f_arg)\n",
|
||||||
|
" for arg in argv:\n",
|
||||||
|
" print(\"another arg through *argv:\",arg)\n",
|
||||||
|
"test_var_args('yasoob','python','eggs','test')\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args的用法"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"*args就是就是传递一个可变参数列表给函数实参,这个参数列表的数目未知,甚至长度可以为0。下面这段代码演示了如何使用args"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Required argument: 1\n",
|
||||||
|
"<class 'tuple'>\n",
|
||||||
|
"Optional argument: 2\n",
|
||||||
|
"<class 'int'>\n",
|
||||||
|
"Optional argument: 3\n",
|
||||||
|
"<class 'int'>\n",
|
||||||
|
"Optional argument: 4\n",
|
||||||
|
"<class 'int'>\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_args(first, *args):\n",
|
||||||
|
" print('Required argument: ', first)\n",
|
||||||
|
" print(type(args))\n",
|
||||||
|
" for v in args:\n",
|
||||||
|
" print ('Optional argument: ', v)\n",
|
||||||
|
" print(type(v))\n",
|
||||||
|
"\n",
|
||||||
|
"test_args(1, 2, 3, 4)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"第一个参数是必须要传入的参数,所以使用了第一个形参,而后面三个参数则作为可变参数列表传入了实参,并且是作为元组tuple来使用的。代码的运行结果如下"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"**kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"而**kwargs则是将一个可变的关键字参数的字典传给函数实参,同样参数列表长度可以为0或为其他值。下面这段代码演示了如何使用kwargs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Required argument: 1\n",
|
||||||
|
"<class 'dict'>\n",
|
||||||
|
"Optional argument (args): 2\n",
|
||||||
|
"Optional argument (args): 3\n",
|
||||||
|
"Optional argument (args): 4\n",
|
||||||
|
"{'k1': 5, 'k2': 6}\n",
|
||||||
|
"Optional argument k1 (kwargs): 5\n",
|
||||||
|
"Optional argument k2 (kwargs): 6\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_kwargs(first, *args, **kwargs):\n",
|
||||||
|
" print('Required argument: ', first)\n",
|
||||||
|
" print(type(kwargs))\n",
|
||||||
|
" for v in args:\n",
|
||||||
|
" print ('Optional argument (args): ', v)\n",
|
||||||
|
" print(kwargs)\n",
|
||||||
|
" for k, v in kwargs.items():\n",
|
||||||
|
" print ('Optional argument %s (kwargs): %s' % (k, v))\n",
|
||||||
|
"\n",
|
||||||
|
"test_kwargs(1, 2, 3, 4, k1=5, k2=6)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"正如前面所说的,args类型是一个tuple,而kwargs则是一个字典dict,并且args只能位于kwargs的前面。代码的运行结果如下"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"调用函数\n",
|
||||||
|
"args和kwargs不仅可以在函数定义中使用,还可以在函数调用中使用。在调用时使用就相当于pack(打包)和unpack(解包),类似于元组的打包和解包。\n",
|
||||||
|
"\n",
|
||||||
|
"首先来看一下使用args来解包调用函数的代码,"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"arg1: two\n",
|
||||||
|
"arg2: 3\n",
|
||||||
|
"arg3: 5\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"def test_args_kwargs(arg1, arg2, arg3):\n",
|
||||||
|
" print(\"arg1:\", arg1)\n",
|
||||||
|
" print(\"arg2:\", arg2)\n",
|
||||||
|
" print(\"arg3:\", arg3)\n",
|
||||||
|
"\n",
|
||||||
|
"args = (\"two\", 3, 5)\n",
|
||||||
|
"test_args_kwargs(*args)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"将元组解包后传给对应的实参,kwargs的用法与其类似。"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"arg1: 5\n",
|
||||||
|
"arg2: two\n",
|
||||||
|
"arg3: 3\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"kwargs = {\"arg3\": 3, \"arg2\": \"two\", \"arg1\": 5}\n",
|
||||||
|
"test_args_kwargs(**kwargs)\n",
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"聚合宽数据研究"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"交易函数"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"1 order(security, amount, style=None, side='long', pindex=0, close_today=False)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"交易函数\n",
|
||||||
|
"1 order(security, amount, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖标的。调用成功后, 您将可以调用[get_open_orders]取得所有未完成的交易, 也可以调用[cancel_order]取消交易\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的代码\n",
|
||||||
|
"amount: 交易数量, 正数表示买入, 负数表示卖出\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0 指定第一个 subportfolio, 1 指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建订单成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#买入平安银行股票100股\n",
|
||||||
|
"order('000001.XSHE', 100) # 下一个市价单\n",
|
||||||
|
"order('000001.XSHE', 100, MarketOrderStyle()) # 下一个市价单, 功能同上(科创板市价单需要指定保护价)\n",
|
||||||
|
"order('000001.XSHE', 100, LimitOrderStyle(10.0)) # 以10块价格下一个限价单\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_target(security, amount, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖标的, 使最终标的的数量达到指定的amount,注意使用此接口下单时若指定的标的有未完成的订单,则先前未完成的订单将会被取消\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的代码\n",
|
||||||
|
"amount: 期望的最终数量\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"# 卖出平安银行所有股票\n",
|
||||||
|
"order_target('000001.XSHE', 0)\n",
|
||||||
|
"# 买入平安银行所有股票到100股\n",
|
||||||
|
"order_target('000001.XSHE', 100)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_value(security, value, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"买卖价值为value的标的。\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 股票名字\n",
|
||||||
|
"\n",
|
||||||
|
"value: 股票价值,value = 最新价 * 手数 * 保证金率(股票为1) * 乘数(股票为100)\n",
|
||||||
|
"\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。默认为多单,股票、基金暂不支持开空单。\n",
|
||||||
|
"\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#卖出价值为10000元的平安银行股票\n",
|
||||||
|
"order_value('000001.XSHE', -10000)\n",
|
||||||
|
"#买入价值为10000元的平安银行股票\n",
|
||||||
|
"order_value('000001.XSHE', 10000)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"order_target_value(security, value, style=None, side='long', pindex=0, close_today=False)\n",
|
||||||
|
"调整标的仓位到value价值,注意使用此接口下单时若指定的标的有未完成的订单,则先前未完成的订单将会被取消\n",
|
||||||
|
"\n",
|
||||||
|
"参数\n",
|
||||||
|
"\n",
|
||||||
|
"security: 标的名字\n",
|
||||||
|
"value: 期望的标的最终价值,value = 最新价 * 手数 * 保证金率(股票为1) * 乘数(股票为100)\n",
|
||||||
|
"style: 参见OrderStyle, None代表MarketOrder\n",
|
||||||
|
"side: 'long'/'short',操作多单还是空单。默认为多单。\n",
|
||||||
|
"pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0为 指定第一个 subportfolio, 1 为指定第二个 subportfolio,默认为0。\n",
|
||||||
|
"close_today: 平今字段,close_today: 平今字段,仅对上海国际能源中心,上海期货交易所,中金所生效,其他交易所将会报错(其他交易所没有区分平今与平昨,均按照先开先平的方法处理)。\n",
|
||||||
|
"对上海国际能源中心,上海期货交易所,中金所的标的:\n",
|
||||||
|
"close_today = True, 只平今仓,今仓不足的时候,订单将会被废单。\n",
|
||||||
|
"close_today = False, 优先平昨仓,昨仓不足部分平今仓\n",
|
||||||
|
"不管close_today是True还是False,此函数只会产生一个订单,区别在于平仓时的手续费计算,平昨仓使用close_commission对应手续费率,平今仓使用close_today_commission手续费率。\n",
|
||||||
|
"返回 Order对象或者None, 如果创建委托成功, 则返回Order对象, 失败则返回None\n",
|
||||||
|
"\n",
|
||||||
|
"示例\n",
|
||||||
|
"\n",
|
||||||
|
"#卖出平安银行所有股票\n",
|
||||||
|
"order_target_value('000001.XSHE', 0)\n",
|
||||||
|
"#调整平安银行股票仓位到10000元价值\n",
|
||||||
|
"order_target_value('000001.XSHE', 10000)\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"聚宽的类研究"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Order对象"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''\n",
|
||||||
|
"买卖订单\n",
|
||||||
|
"关于order/trader对象及订单处理\n",
|
||||||
|
"以csv格式保存order、trade、position数据\n",
|
||||||
|
"\n",
|
||||||
|
"status: 状态, 一个OrderStatus值\n",
|
||||||
|
"add_time: 订单添加时间, [datetime.datetime]对象\n",
|
||||||
|
"is_buy: bool值, 买还是卖,对于期货:\n",
|
||||||
|
"开多/平空 -> 买\n",
|
||||||
|
"开空/平多 -> 卖\n",
|
||||||
|
"amount: 下单数量, 不管是买还是卖, 都是正数\n",
|
||||||
|
"filled: 已经成交的股票数量, 正数\n",
|
||||||
|
"security: 股票代码\n",
|
||||||
|
"order_id: 订单ID\n",
|
||||||
|
"price: 平均成交价格, 已经成交的股票的平均成交价格(一个订单可能分多次成交)\n",
|
||||||
|
"avg_cost: 卖出时表示下卖单前的此股票的持仓成本, 用来计算此次卖出的收益. 买入时表示此次买入的均价(等同于price).\n",
|
||||||
|
"side: 多/空,'long'/'short'\n",
|
||||||
|
"action: 开/平, 'open'/'close'\n",
|
||||||
|
"commission:交易费用(佣金、税费等)\n",
|
||||||
|
"orders = order('000001.XSHE', 100)\n",
|
||||||
|
"print(orders)\n",
|
||||||
|
"if orders is None:\n",
|
||||||
|
" print(\"创建订单失败...\")\n",
|
||||||
|
"else:\n",
|
||||||
|
" print(\"交易费用单:{0}\".format(orders.commission))\n",
|
||||||
|
" print(\"是否买单:{0}\".format(orders.is_buy))\n",
|
||||||
|
" print(\"订单状态:{0}\".format(orders.status))\n",
|
||||||
|
" print(\"订单平均成交价格:{0}\".format(orders.price))\n",
|
||||||
|
"'''"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.8.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<TCStageLayout>
|
||||||
|
<control note="控件">
|
||||||
|
<variable note="控件">
|
||||||
|
<item position="" bind="策略名称" value="索普量化雪球交易系统界面版" note="策略名称" name="策略名称" type="intput" />
|
||||||
|
<item position="" bind="标记" value="作者:索普量化,微信:xms_quants1" note="标记" name="标记" type="intput" />
|
||||||
|
<item position="" bind="授权码" value="0xd5e814335dd5e19830fd29e14462070f4716b85fea8c34da8378dd0b707e1893607490ea1eeaba8b7c2304ebcccbae30bef3c42e3d262a04268b8894362d977f76f691526c8f11e49822b79974c3b1954b4182647597b76b29be63be246109cd57f60cf0c7d57c1ff80240e67b001f98c536dd06927ceda8d04b932055a49ff0abbd" note="授权码" name="授权码" type="intput" />
|
||||||
|
<item position="" bind="cookie" value="cookiesu=981748929995104; device_id=487d5816161db8ba0d0e25b548cb1bc6; smidV2=20250603135319c1705e137be8f01771f8398c66777f9000ab5c0df92154fa0; s=be1jsjr8bl; bid=f1b5e01be977a7023f9ec859cdf24ad4_mbg66d09; __utmz=1.1748934057.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); u=1342909666; xq_is_login=1; aliyungf_tc=d6ee7c9ec93eec9f500ec34bbfddcb20013f165fe38f6b6b48a24e9e4d5aaa1b; xq_a_token=fe11e9427682896c9dc7a8a445086ef68d4d1dbd; xqat=fe11e9427682896c9dc7a8a445086ef68d4d1dbd; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjEzNDI5MDk2NjYsImlzcyI6InVjIiwiZXhwIjoxNzYxNTcyNjM1LCJjdG0iOjE3NTg5ODA2MzU5NDMsImNpZCI6ImQ5ZDBuNEFadXAifQ.nqRzbWnv6K3_Juhh5Q53lF_UMJif-7NKBQln5dny13rbeqc5TBqwPTr9GU7NxIeJbDhDBskn-PLlS53_bT-pxO1MkbusPMNz98-BueB6-DZ5CJtZCqdtQUXhFJqXm4mLpNHK1wLCLJjjRxyU3-1logf1lDqQDCrDAar--G6aSugFK_ayxU1yXrT5BycS4SXfbVIIJt1CbUugT5Qs3CrgjHjcBqC24Q-owfzjFmHvJnxTs_2PYYNlMXT21B94k7dvNt-CrBKEKg01TklN5ihHcB99bbWsklL1P3j2DU-xvrRVo9WvLQ2tM5xkQr4UVBowpC-NhcFuSTMd6aGWZu3NUA; xq_r_token=f12d8baa95063cc9341d2a8ee5a78a45deefb9c0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1758247622,1758265058,1758291885,1758980641; HMACCOUNT=184FA7E7147838B3; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=GEF/cx00kxMXCqs58kwu08qLxljB/16JoBrmputnWbgjrZhh8AdSf68iBVp+h9EjFUc4ANkteyfQAwJ+957e6w%3D%3D; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1758980662; __utma=1.1154193993.1748934057.1754875149.1758980663.10; __utmc=1; __utmt=1; __utmb=1.2.10.1758980663" note="cookie" name="cookie" type="intput" />
|
||||||
|
<item position="" bind="是否测试" value="否" note="是否测试" name="是否测试" type="intput" />
|
||||||
|
<item position="" bind="测试长度" value="2" note="测试长度" name="测试长度" type="intput" />
|
||||||
|
<item position="" bind="买入价格编码" value="4" note="买入价格编码" name="买入价格编码" type="intput" />
|
||||||
|
<item position="" bind="卖出价格编码" value="6" note="卖出价格编码" name="卖出价格编码" type="intput" />
|
||||||
|
<item position="" bind="买入黑名单" value="600031.SH,600111.SZ" note="买入黑名单" name="买入黑名单" type="intput" />
|
||||||
|
<item position="" bind="卖出黑名单" value="600031.SH,600111.SZ" note="卖出黑名单" name="卖出黑名单" type="intput" />
|
||||||
|
<item position="" bind="剔除代码" value="688,40" note="剔除代码" name="剔除代码" type="intput" />
|
||||||
|
<item position="" bind="组合名称" value="西蒙斯测试1,西蒙斯测试2" note="组合名称" name="组合名称" type="intput" />
|
||||||
|
<item position="" bind="组合代码" value="ZH3368671,ZH3310823" note="组合代码" name="组合代码" type="intput" />
|
||||||
|
<item position="" bind="组合金额模式说明" value="总金额/自定义/比例" note="组合金额模式说明" name="组合金额模式说明" type="intput" />
|
||||||
|
<item position="" bind="组合金额模式" value="自定义" note="组合金额模式" name="组合金额模式" type="intput" />
|
||||||
|
<item position="" bind="组合比例" value="0.1,0.1" note="组合比例" name="组合比例" type="intput" />
|
||||||
|
<item position="" bind="组合金额" value="50000,60000" note="组合金额" name="组合金额" type="intput" />
|
||||||
|
<item position="" bind="不同组合间隔时间" value="1" note="不同组合间隔时间" name="不同组合间隔时间" type="intput" />
|
||||||
|
<item position="" bind="不成交撤单时间" value="300" note="不成交撤单时间" name="不成交撤单时间" type="intput" />
|
||||||
|
<item position="" bind="交易时间段" value="4" note="交易时间段" name="交易时间段" type="intput" />
|
||||||
|
<item position="" bind="交易开始时间" value="9" note="交易开始时间" name="交易开始时间" type="intput" />
|
||||||
|
<item position="" bind="交易结束时间" value="14" note="交易结束时间" name="交易结束时间" type="intput" />
|
||||||
|
<item position="" bind="是否参加集合竞价" value="是" note="是否参加集合竞价" name="是否参加集合竞价" type="intput" />
|
||||||
|
<item position="" bind="开始交易分钟" value="0" note="开始交易分钟" name="开始交易分钟" type="intput" />
|
||||||
|
<item position="" bind="通知发送方式说明" value="QQ/企业微信/钉钉" note="通知发送方式说明" name="通知发送方式说明" type="intput" />
|
||||||
|
<item position="" bind="通知发送方式" value="钉钉" note="通知发送方式" name="通知发送方式" type="intput" />
|
||||||
|
<item position="" bind="发送QQ" value="1029762153@qq.com" note="发送QQ" name="发送QQ" type="intput" />
|
||||||
|
<item position="" bind="接收QQ" value="1029762153@qq.com" note="接收QQ" name="接收QQ" type="intput" />
|
||||||
|
<item position="" bind="QQ掩码" value="jjfgdhklgguebdje" note="QQ掩码" name="QQ掩码" type="intput" />
|
||||||
|
<item position="" bind="企业微信token" value="1,1" note="企业微信token" name="企业微信token" type="intput" />
|
||||||
|
<item position="" bind="钉钉token" value="1,1" note="钉钉token" name="钉钉token" type="intput" />
|
||||||
|
</variable>
|
||||||
|
</control>
|
||||||
|
</TCStageLayout>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111111112.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111111112.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1.111111111111112e+16,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1.111111111111112e+16
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,,1732208241,10.5,10.59,long,128.31,2025-10-10,True,
|
||||||
|
@@ -0,0 +1,155 @@
|
|||||||
|
'''
|
||||||
|
索普聚宽交易系统
|
||||||
|
作者:索普量化
|
||||||
|
微信:xms_quants1
|
||||||
|
原理替代,继承聚宽的交易函数类
|
||||||
|
读取下单类的函数参数把交易数据发送到服务器
|
||||||
|
把下面的全部源代码复制到聚宽策略的开头就可以
|
||||||
|
实盘前先模拟盘测试一下数据
|
||||||
|
把下面的内容全部复制到策略的开头就可以
|
||||||
|
|
||||||
|
'''
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pandas as pd
|
||||||
|
from jqdata import *
|
||||||
|
url='http://101.34.65.108'
|
||||||
|
port=8888
|
||||||
|
#自定义服务器编码
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad'
|
||||||
|
#记得把这个改成自己的一个策略一个,策略的名称找作者建立
|
||||||
|
password='123456'
|
||||||
|
class joinquant_trader:
|
||||||
|
def __init__(self,url='http://124.220.32.224',
|
||||||
|
port=8025,
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad',
|
||||||
|
password='123456'):
|
||||||
|
'''
|
||||||
|
获取服务器数据
|
||||||
|
'''
|
||||||
|
self.url=url
|
||||||
|
self.port=port
|
||||||
|
self.url_code=url_code
|
||||||
|
self.password=password
|
||||||
|
def get_user_data(self,data_type='用户信息'):
|
||||||
|
'''
|
||||||
|
获取使用的数据
|
||||||
|
data_type='用户信息','实时数据',历史数据','清空实时数据','清空历史数据'
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":data_type},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":"\n {'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '001.XSHE', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}\n "},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
def send_order(self,result):
|
||||||
|
'''
|
||||||
|
发送交易数据
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":'发送信号'},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":result},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
#继承类
|
||||||
|
xg_data=joinquant_trader(url=url,port=port,password=password,)
|
||||||
|
def send_order(result):
|
||||||
|
'''
|
||||||
|
发送函数
|
||||||
|
status: 状态, 一个OrderStatus值
|
||||||
|
add_time: 订单添加时间, [datetime.datetime]对象
|
||||||
|
is_buy: bool值, 买还是卖,对于期货:
|
||||||
|
开多/平空 -> 买
|
||||||
|
开空/平多 -> 卖
|
||||||
|
amount: 下单数量, 不管是买还是卖, 都是正数
|
||||||
|
filled: 已经成交的股票数量, 正数
|
||||||
|
security: 股票代码
|
||||||
|
order_id: 订单ID
|
||||||
|
price: 平均成交价格, 已经成交的股票的平均成交价格(一个订单可能分多次成交)
|
||||||
|
avg_cost: 卖出时表示下卖单前的此股票的持仓成本, 用来计算此次卖出的收益. 买入时表示此次买入的均价(等同于price).
|
||||||
|
side: 多/空,'long'/'short'
|
||||||
|
action: 开/平, 'open'/'close'
|
||||||
|
commission交易费用(佣金、税费等)
|
||||||
|
'''
|
||||||
|
data={}
|
||||||
|
data['状态']=str(result.status)
|
||||||
|
data['订单添加时间']=str(result.add_time)
|
||||||
|
data['买卖']=str(result.is_buy)
|
||||||
|
data['下单数量']=str(result.amount)
|
||||||
|
data['已经成交']=str(result.filled)
|
||||||
|
data['股票代码']=str(result.security)
|
||||||
|
data['订单ID']=str(result.order_id)
|
||||||
|
data['平均成交价格']=str(result.price)
|
||||||
|
data['持仓成本']=str(result.avg_cost)
|
||||||
|
data['多空']=str(result.side)
|
||||||
|
data['交易费用']=str(result.commission)
|
||||||
|
result=str(data)
|
||||||
|
xg_data.send_order(result)
|
||||||
|
return data
|
||||||
|
def xg_order(func):
|
||||||
|
'''
|
||||||
|
继承order对象 数据交易函数
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target(func):
|
||||||
|
'''
|
||||||
|
继承order_target对象 百分比
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
def xg_order_value(func):
|
||||||
|
'''
|
||||||
|
继承order_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target_value(func):
|
||||||
|
'''
|
||||||
|
继承order_target_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
order = xg_order(order)
|
||||||
|
order_target = xg_order_target(order_target)
|
||||||
|
order_value = xg_order_value(order_value)
|
||||||
|
order_target_value = xg_order_target_value(order_target_value)
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
py 索普量化聚宽交易服务器.py
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install pip==23.2
|
||||||
|
py -m pip install akshare
|
||||||
|
py -m pip install easyquotation
|
||||||
|
py -m pip install yagmail
|
||||||
|
py -m pip install pywinauto==0.6.6
|
||||||
|
py -m pip install matplotlib
|
||||||
|
py -m pip install mplfinance
|
||||||
|
py -m pip install finta
|
||||||
|
py -m pip install pyinstaller
|
||||||
|
py -m pip install pyautogui
|
||||||
|
py -m pip install schedule
|
||||||
|
py -m pip install pywin32
|
||||||
|
py -m pip install pyexecjs
|
||||||
|
py -m pip install pytdx
|
||||||
|
py -m pip install pydash
|
||||||
|
py -m pip install empyrical
|
||||||
|
py -m pip install pywencai
|
||||||
|
py -m pip install pandas==1.5.3
|
||||||
|
py -m pip install numpy==1.26.2
|
||||||
|
py -m pip install scipy==1.11.4
|
||||||
|
py -m pip install ffn
|
||||||
|
py -m pip install quantstats==0.0.60
|
||||||
|
py -m pip install dash
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip==23.2
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple akshare
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple easyquotation
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple yagmail
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywinauto==0.6.6
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mplfinance
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple finta
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple schedule
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywin32
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyexecjs
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytdx
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pydash
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple empyrical
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywencai
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas==1.5.3
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy==1.26.2
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy==1.11.4
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ffn
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple quantstats==0.0.60
|
||||||
|
py -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple dash
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pip==23.2
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ akshare
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ easyquotation
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ yagmail
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywinauto==0.6.6
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ matplotlib
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ mplfinance
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ finta
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyinstaller
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyautogui
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ schedule
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywin32
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pyexecjs
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pytdx
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pydash
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ empyrical
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pywencai
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ pandas==1.5.3
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ numpy==1.26.2
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ scipy==1.11.4
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ ffn
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ quantstats==0.0.60
|
||||||
|
py -m pip install -i http://mirrors.aliyun.com/pypi/simple/ dash
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
状态,订单添加时间,买卖,下单数量,已经成交,股票代码,订单ID,平均成交价格,持仓成本,多空,交易费用,交易日,数据状态,证券代码
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,11111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,11111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,111111111111111.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,111111111111111.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1111111111111112.0,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1111111111111112.0
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,1.111111111111112e+16,1732208241,10.5,10.59,long,128.31,2025-10-10,True,1.111111111111112e+16
|
||||||
|
held,"datetime.datetime(2024, 4, 23, 9, 30)",False,9400,9400,,1732208241,10.5,10.59,long,128.31,2025-10-10,True,
|
||||||
|
Binary file not shown.
@@ -0,0 +1,414 @@
|
|||||||
|
'''
|
||||||
|
索普量化聚宽交易服务器2.0
|
||||||
|
作者索普量化
|
||||||
|
微信:xms_quants1
|
||||||
|
'''
|
||||||
|
from dash import html, dcc, Input, Output, dash_table, dash
|
||||||
|
import pandas as pd
|
||||||
|
import os
|
||||||
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
import logging
|
||||||
|
from typing import Dict, Any, Optional
|
||||||
|
|
||||||
|
# 配置日志
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class TradingDataManager:
|
||||||
|
"""交易数据管理类"""
|
||||||
|
|
||||||
|
def __init__(self, base_path: str):
|
||||||
|
self.base_path = Path(base_path)
|
||||||
|
self.realtime_data_dir = self.base_path / "data" / "实时数据"
|
||||||
|
self.historical_data_dir = self.base_path / "实时数据" / "历史数据"
|
||||||
|
self.auth_file = self.base_path / "授权表" / "授权表.xlsx"
|
||||||
|
|
||||||
|
# 创建必要的目录
|
||||||
|
self.realtime_data_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
self.historical_data_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
self.auth_file.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
def get_user_file_path(self, user_id: str, data_type: str) -> Path:
|
||||||
|
"""获取用户数据文件路径"""
|
||||||
|
if data_type == "实时数据":
|
||||||
|
return self.realtime_data_dir / f"{user_id}实时数据.csv"
|
||||||
|
elif data_type == "历史数据":
|
||||||
|
return self.historical_data_dir / f"{user_id}历史数据.csv"
|
||||||
|
else:
|
||||||
|
raise ValueError(f"不支持的数据类型: {data_type}")
|
||||||
|
|
||||||
|
def load_user_data(self, user_id: str, data_type: str) -> pd.DataFrame:
|
||||||
|
"""加载用户数据"""
|
||||||
|
file_path = self.get_user_file_path(user_id, data_type)
|
||||||
|
try:
|
||||||
|
if file_path.exists():
|
||||||
|
df = pd.read_csv(file_path)
|
||||||
|
# 清理可能的索引列
|
||||||
|
df = df.drop(columns=['Unnamed: 0'], errors='ignore')
|
||||||
|
return df
|
||||||
|
return pd.DataFrame()
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"加载用户数据失败: {e}")
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
def save_user_data(self, user_id: str, data_type: str, df: pd.DataFrame):
|
||||||
|
"""保存用户数据"""
|
||||||
|
file_path = self.get_user_file_path(user_id, data_type)
|
||||||
|
try:
|
||||||
|
df.to_csv(file_path, index=False)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"保存用户数据失败: {e}")
|
||||||
|
|
||||||
|
def load_auth_data(self) -> pd.DataFrame:
|
||||||
|
"""加载授权数据"""
|
||||||
|
try:
|
||||||
|
if self.auth_file.exists():
|
||||||
|
df = pd.read_excel(self.auth_file, dtype='object')
|
||||||
|
df = df.drop(columns=['Unnamed: 0'], errors='ignore')
|
||||||
|
return df
|
||||||
|
return pd.DataFrame(columns=['用户名称', '到期时间'])
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"加载授权数据失败: {e}")
|
||||||
|
return pd.DataFrame(columns=['用户名称', '到期时间'])
|
||||||
|
|
||||||
|
class AuthManager:
|
||||||
|
"""授权管理类"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def calculate_days_remaining(start_date: str, end_date: str) -> int:
|
||||||
|
"""计算剩余天数"""
|
||||||
|
try:
|
||||||
|
start = datetime.strptime(start_date, '%Y-%m-%d')
|
||||||
|
end = datetime.strptime(end_date, '%Y-%m-%d')
|
||||||
|
return (end - start).days
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"计算天数失败: {e}")
|
||||||
|
return -1
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def validate_user(auth_df: pd.DataFrame, user_id: str) -> Dict[str, Any]:
|
||||||
|
"""验证用户授权"""
|
||||||
|
try:
|
||||||
|
auth_df['用户名称'] = auth_df['用户名称'].astype(str)
|
||||||
|
auth_df['到期时间'] = auth_df['到期时间'].astype(str)
|
||||||
|
|
||||||
|
if user_id not in auth_df['用户名称'].values:
|
||||||
|
return {"valid": False, "message": "用户没有注册请注册/联系作者微信15117320079"}
|
||||||
|
|
||||||
|
user_data = auth_df[auth_df['用户名称'] == user_id].iloc[0]
|
||||||
|
end_date = str(user_data['到期时间'])[:10]
|
||||||
|
current_date = datetime.now().strftime('%Y-%m-%d')
|
||||||
|
|
||||||
|
days_remaining = AuthManager.calculate_days_remaining(current_date, end_date)
|
||||||
|
|
||||||
|
if days_remaining >= 1:
|
||||||
|
return {
|
||||||
|
"valid": True,
|
||||||
|
"days_remaining": days_remaining,
|
||||||
|
"user_data": user_data
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
return {"valid": False, "message": "授权码到期找作者获取"}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"用户验证失败: {e}")
|
||||||
|
return {"valid": False, "message": "授权验证失败"}
|
||||||
|
|
||||||
|
class DataProcessor:
|
||||||
|
"""数据处理类"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_signal_text(text: str) -> Dict[str, Any]:
|
||||||
|
"""解析信号文本"""
|
||||||
|
try:
|
||||||
|
cleaned_text = '\n'.join([
|
||||||
|
line.strip().lstrip()
|
||||||
|
for line in text.split('\n')
|
||||||
|
if line.strip()
|
||||||
|
])
|
||||||
|
return eval(cleaned_text)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"解析信号文本失败: {e}")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def process_stock_data(df: pd.DataFrame) -> pd.DataFrame:
|
||||||
|
"""处理股票数据"""
|
||||||
|
if df.empty:
|
||||||
|
return df
|
||||||
|
|
||||||
|
# 清理股票代码
|
||||||
|
if '股票代码' in df.columns:
|
||||||
|
df['证券代码'] = df['股票代码'].apply(
|
||||||
|
lambda x: str(x).split('.XSHE')[0].split('.XSHG')[0]
|
||||||
|
)
|
||||||
|
df['数据长度'] = df['证券代码'].apply(lambda x: len(str(x)))
|
||||||
|
df = df[df['数据长度'] >= 6]
|
||||||
|
df = df.drop(columns=['数据长度'], errors='ignore')
|
||||||
|
|
||||||
|
return df
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_signal_data(signal_dict: Dict[str, Any]) -> pd.DataFrame:
|
||||||
|
"""创建信号数据"""
|
||||||
|
return pd.DataFrame([signal_dict])
|
||||||
|
|
||||||
|
class TradingApp:
|
||||||
|
"""交易应用主类"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
self.data_manager = TradingDataManager(self.path)
|
||||||
|
self.auth_manager = AuthManager()
|
||||||
|
self.data_processor = DataProcessor()
|
||||||
|
|
||||||
|
self.select_options = [
|
||||||
|
'用户信息', '发送信号', '实时数据', '历史数据',
|
||||||
|
'清空实时数据', '清空历史数据'
|
||||||
|
]
|
||||||
|
|
||||||
|
self.app = dash.Dash(__name__)
|
||||||
|
self.setup_layout()
|
||||||
|
self.setup_callbacks()
|
||||||
|
|
||||||
|
def setup_layout(self):
|
||||||
|
"""设置应用布局"""
|
||||||
|
self.app.layout = html.Div([
|
||||||
|
html.H1([html.A('索普聚宽交易使用教程2.0',href='https://gitee.com/li-xingguo11111/big_qmt_joinquant_trader',style={'textAlign': 'center'}),]),
|
||||||
|
html.H3('索普量化,找作者获取授权码 微信xms_quants1,交易函数数据函数分离,平台只是一个信号的中转平台,聚宽的策略仔细研究避免未来函数,投资有风险,平台不做投资参考',style={'textAlign': 'center'}),
|
||||||
|
|
||||||
|
self._create_control_table(),
|
||||||
|
self._create_text_area(),
|
||||||
|
html.H3('数据展示'),
|
||||||
|
self._create_data_table(),
|
||||||
|
dcc.Download(id='joinquant_trader_table_down')
|
||||||
|
])
|
||||||
|
|
||||||
|
def _create_control_table(self):
|
||||||
|
"""创建控制表格"""
|
||||||
|
return html.Table([
|
||||||
|
html.Tr([
|
||||||
|
html.Td('用户名称', style={'border': '1px solid', 'width': '200px'}),
|
||||||
|
html.Td('数据类型', style={'border': '1px solid', 'width': '200px'}),
|
||||||
|
html.Td('运行程序', style={'border': '1px solid', 'width': '200px'}),
|
||||||
|
html.Td('下载数据', style={'border': '1px solid', 'width': '200px'})
|
||||||
|
]),
|
||||||
|
html.Tr([
|
||||||
|
html.Td(
|
||||||
|
dcc.Input(value='123456', id='joinquant_trader_password'),
|
||||||
|
style={'border': '1px solid', 'width': '200px'}
|
||||||
|
),
|
||||||
|
html.Td(
|
||||||
|
dcc.Dropdown(
|
||||||
|
options=self.select_options,
|
||||||
|
value='用户信息',
|
||||||
|
id='joinquant_trader_data_type'
|
||||||
|
),
|
||||||
|
style={'border': '1px solid', 'width': '200px'}
|
||||||
|
),
|
||||||
|
html.Td(
|
||||||
|
dcc.Dropdown(
|
||||||
|
options=['运行', '不运行'],
|
||||||
|
id='joinquant_trader_run',
|
||||||
|
value='不运行'
|
||||||
|
),
|
||||||
|
style={'border': '1px solid', 'width': '200px'}
|
||||||
|
),
|
||||||
|
html.Td(
|
||||||
|
dcc.RadioItems(
|
||||||
|
options={'下载数据': "下载数据", "不下载数据": "不下载数据"},
|
||||||
|
id='joinquant_trader_down_data',
|
||||||
|
value='不下载数据'
|
||||||
|
),
|
||||||
|
style={'border': '1px solid', 'width': '200px'}
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
])
|
||||||
|
|
||||||
|
def _create_text_area(self):
|
||||||
|
"""创建文本区域"""
|
||||||
|
return dcc.Textarea(
|
||||||
|
value="""
|
||||||
|
{'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}
|
||||||
|
""",
|
||||||
|
id='joinquant_trader_text',
|
||||||
|
style={'width': '80%', 'height': 200, "text-align": "left"}
|
||||||
|
)
|
||||||
|
|
||||||
|
def _create_data_table(self):
|
||||||
|
"""创建数据表格"""
|
||||||
|
return dash_table.DataTable(
|
||||||
|
id='joinquant_trader_table',
|
||||||
|
page_size=10,
|
||||||
|
style_table={'font-size': 15},
|
||||||
|
sort_action='native'
|
||||||
|
)
|
||||||
|
|
||||||
|
def setup_callbacks(self):
|
||||||
|
"""设置回调函数"""
|
||||||
|
# 主数据回调
|
||||||
|
@self.app.callback(
|
||||||
|
Output('joinquant_trader_table', 'data', allow_duplicate=True),
|
||||||
|
Input('joinquant_trader_password', 'value'),
|
||||||
|
Input('joinquant_trader_data_type', 'value'),
|
||||||
|
Input('joinquant_trader_text', 'value'),
|
||||||
|
Input('joinquant_trader_run', 'value'),
|
||||||
|
Input('joinquant_trader_down_data', 'value'),
|
||||||
|
prevent_initial_call=True
|
||||||
|
)
|
||||||
|
def update_table(password, data_type, text, run, down_data):
|
||||||
|
return self._handle_data_update(password, data_type, text, run, down_data)
|
||||||
|
|
||||||
|
# 下载回调
|
||||||
|
@self.app.callback(
|
||||||
|
Output('joinquant_trader_table_down', 'data', allow_duplicate=True),
|
||||||
|
Input('joinquant_trader_password', 'value'),
|
||||||
|
Input('joinquant_trader_data_type', 'value'),
|
||||||
|
Input('joinquant_trader_text', 'value'),
|
||||||
|
Input('joinquant_trader_run', 'value'),
|
||||||
|
Input('joinquant_trader_down_data', 'value'),
|
||||||
|
prevent_initial_call=True
|
||||||
|
)
|
||||||
|
def download_data(password, data_type, text, run, down_data):
|
||||||
|
return self._handle_download(password, data_type, text, run, down_data)
|
||||||
|
|
||||||
|
def _handle_data_update(self, password: str, data_type: str, text: str,
|
||||||
|
run: str, down_data: str) -> list:
|
||||||
|
"""处理数据更新"""
|
||||||
|
if run != '运行':
|
||||||
|
return self._create_message_df("没有点击运行选择", False).to_dict('records')
|
||||||
|
|
||||||
|
auth_df = self.data_manager.load_auth_data()
|
||||||
|
auth_result = self.auth_manager.validate_user(auth_df, str(password))
|
||||||
|
|
||||||
|
if not auth_result["valid"]:
|
||||||
|
return self._create_message_df(auth_result["message"], False).to_dict('records')
|
||||||
|
|
||||||
|
return self._process_data_type(
|
||||||
|
password, data_type, text, auth_result
|
||||||
|
).to_dict('records')
|
||||||
|
|
||||||
|
def _process_data_type(self, user_id: str, data_type: str, text: str,
|
||||||
|
auth_result: Dict[str, Any]) -> pd.DataFrame:
|
||||||
|
"""处理不同类型的数据请求"""
|
||||||
|
current_date = datetime.now().strftime('%Y-%m-%d')
|
||||||
|
|
||||||
|
if data_type == '用户信息':
|
||||||
|
return self._handle_user_info(auth_result)
|
||||||
|
elif data_type == '发送信号':
|
||||||
|
return self._handle_send_signal(user_id, text, current_date)
|
||||||
|
elif data_type in ['实时数据', '历史数据']:
|
||||||
|
return self._handle_data_query(user_id, data_type)
|
||||||
|
elif data_type in ['清空实时数据', '清空历史数据']:
|
||||||
|
return self._handle_clear_data(user_id, data_type)
|
||||||
|
else:
|
||||||
|
return self._create_message_df("未知的数据类型", False)
|
||||||
|
|
||||||
|
def _handle_user_info(self, auth_result: Dict[str, Any]) -> pd.DataFrame:
|
||||||
|
"""处理用户信息请求"""
|
||||||
|
user_data = auth_result["user_data"].copy()
|
||||||
|
user_data['到期天数'] = auth_result["days_remaining"]
|
||||||
|
user_data['信息推送'] = '授权码正常'
|
||||||
|
user_data['数据状态'] = True
|
||||||
|
return pd.DataFrame([user_data])
|
||||||
|
|
||||||
|
def _handle_send_signal(self, user_id: str, text: str, current_date: str) -> pd.DataFrame:
|
||||||
|
"""处理发送信号"""
|
||||||
|
signal_data = self.data_processor.parse_signal_text(text)
|
||||||
|
if not signal_data:
|
||||||
|
return self._create_message_df("信号数据解析失败", False)
|
||||||
|
|
||||||
|
# 处理实时数据
|
||||||
|
realtime_df = self.data_manager.load_user_data(user_id, "实时数据")
|
||||||
|
realtime_df = self.data_processor.process_stock_data(realtime_df)
|
||||||
|
|
||||||
|
# 处理历史数据
|
||||||
|
historical_df = self.data_manager.load_user_data(user_id, "历史数据")
|
||||||
|
historical_df = self.data_processor.process_stock_data(historical_df)
|
||||||
|
|
||||||
|
# 创建新信号数据
|
||||||
|
new_signal = self.data_processor.create_signal_data(signal_data)
|
||||||
|
new_signal['交易日'] = current_date
|
||||||
|
new_signal['数据状态'] = True
|
||||||
|
|
||||||
|
# 合并数据并去重
|
||||||
|
realtime_updated = self._merge_and_deduplicate(realtime_df, new_signal, current_date)
|
||||||
|
historical_updated = self._merge_and_deduplicate(historical_df, new_signal, current_date)
|
||||||
|
|
||||||
|
# 保存更新后的数据
|
||||||
|
self.data_manager.save_user_data(user_id, "实时数据", realtime_updated)
|
||||||
|
self.data_manager.save_user_data(user_id, "历史数据", historical_updated)
|
||||||
|
|
||||||
|
return new_signal
|
||||||
|
|
||||||
|
def _handle_data_query(self, user_id: str, data_type: str) -> pd.DataFrame:
|
||||||
|
"""处理数据查询"""
|
||||||
|
df = self.data_manager.load_user_data(user_id, data_type)
|
||||||
|
df = self.data_processor.process_stock_data(df)
|
||||||
|
return df if not df.empty else self._create_message_df(f"{data_type}为空", True)
|
||||||
|
|
||||||
|
def _handle_clear_data(self, user_id: str, data_type: str) -> pd.DataFrame:
|
||||||
|
"""处理清空数据"""
|
||||||
|
clear_type = "实时数据" if "实时" in data_type else "历史数据"
|
||||||
|
self.data_manager.save_user_data(user_id, clear_type, pd.DataFrame())
|
||||||
|
return self._create_message_df(f"{clear_type}已清空", True)
|
||||||
|
|
||||||
|
def _merge_and_deduplicate(self, existing_df: pd.DataFrame,
|
||||||
|
new_df: pd.DataFrame, current_date: str) -> pd.DataFrame:
|
||||||
|
"""合并数据并去重"""
|
||||||
|
merged_df = pd.concat([existing_df, new_df], ignore_index=True)
|
||||||
|
merged_df['交易日'] = current_date
|
||||||
|
|
||||||
|
# 去重逻辑
|
||||||
|
dup_cols = ['股票代码', '下单数量', '买卖', '多空']
|
||||||
|
if all(col in merged_df.columns for col in dup_cols):
|
||||||
|
merged_df = merged_df.drop_duplicates(subset=dup_cols, keep='last')
|
||||||
|
|
||||||
|
return merged_df
|
||||||
|
|
||||||
|
def _handle_download(self, password: str, data_type: str, text: str,
|
||||||
|
run: str, down_data: str):
|
||||||
|
"""处理数据下载"""
|
||||||
|
if down_data != '下载数据':
|
||||||
|
return None
|
||||||
|
|
||||||
|
if data_type not in ['实时数据', '历史数据']:
|
||||||
|
return None
|
||||||
|
|
||||||
|
auth_df = self.data_manager.load_auth_data()
|
||||||
|
auth_result = self.auth_manager.validate_user(auth_df, str(password))
|
||||||
|
|
||||||
|
if not auth_result["valid"]:
|
||||||
|
return None
|
||||||
|
|
||||||
|
df = self.data_manager.load_user_data(str(password), data_type)
|
||||||
|
current_date = datetime.now().strftime('%Y-%m-%d')
|
||||||
|
|
||||||
|
return dcc.send_data_frame(
|
||||||
|
df.to_excel,
|
||||||
|
filename=f'{current_date}{data_type}.xlsx'
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _create_message_df(message: str, status: bool) -> pd.DataFrame:
|
||||||
|
"""创建消息DataFrame"""
|
||||||
|
return pd.DataFrame({'信息提示': [message], '数据状态': [status]})
|
||||||
|
|
||||||
|
def run(self, host: str = '127.0.0.1', port: str = '8025'):
|
||||||
|
"""运行应用"""
|
||||||
|
try:
|
||||||
|
self.app.run(debug=True, host=host, port=port)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"启动应用失败: {e}")
|
||||||
|
# 尝试备用端口
|
||||||
|
try:
|
||||||
|
self.app.run_server(debug=True, host=host, port=port)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"备用端口启动也失败: {e}")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
host = '127.0.0.1'
|
||||||
|
port = '8025'
|
||||||
|
app = TradingApp()
|
||||||
|
app.run(host=host,port=port)
|
||||||
@@ -0,0 +1,476 @@
|
|||||||
|
from jqdata import *
|
||||||
|
from jqfactor import *
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
from datetime import time,date
|
||||||
|
from jqdata import finance
|
||||||
|
'''
|
||||||
|
索普聚宽交易系统
|
||||||
|
作者:索普量化
|
||||||
|
微信:xms_quants1
|
||||||
|
原理替代,继承聚宽的交易函数类
|
||||||
|
读取下单类的函数参数把交易数据发送到服务器
|
||||||
|
把下面的全部源代码复制到聚宽策略的开头就可以
|
||||||
|
实盘前先模拟盘测试一下数据
|
||||||
|
把下面的内容全部复制到策略的开头就可以
|
||||||
|
|
||||||
|
'''
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pandas as pd
|
||||||
|
from jqdata import *
|
||||||
|
url='http://101.34.65.108'
|
||||||
|
port=8888
|
||||||
|
#自定义服务器编码
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad'
|
||||||
|
#记得把这个改成自己的一个策略一个,策略的名称找作者建立
|
||||||
|
password='国九条后中小板微盘小改'
|
||||||
|
class joinquant_trader:
|
||||||
|
def __init__(self,url='http://124.220.32.224',
|
||||||
|
port=8025,
|
||||||
|
url_code='63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad',
|
||||||
|
password='123456'):
|
||||||
|
'''
|
||||||
|
获取服务器数据
|
||||||
|
'''
|
||||||
|
self.url=url
|
||||||
|
self.port=port
|
||||||
|
self.url_code=url_code
|
||||||
|
self.password=password
|
||||||
|
def get_user_data(self,data_type='用户信息'):
|
||||||
|
'''
|
||||||
|
获取使用的数据
|
||||||
|
data_type='用户信息','实时数据',历史数据','清空实时数据','清空历史数据'
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":data_type},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":"\n {'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '001.XSHE', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}\n "},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
def send_order(self,result):
|
||||||
|
'''
|
||||||
|
发送交易数据
|
||||||
|
'''
|
||||||
|
url='{}:{}/_dash-update-component'.format(self.url,self.port)
|
||||||
|
headers={'Content-Type':'application/json'}
|
||||||
|
data={"output":"joinquant_trader_table.data@{}".format(self.url_code),
|
||||||
|
"outputs":{"id":"joinquant_trader_table","property":"data@{}".format(self.url_code)},
|
||||||
|
"inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},
|
||||||
|
{"id":"joinquant_trader_data_type","property":"value","value":'发送信号'},
|
||||||
|
{"id":"joinquant_trader_text","property":"value","value":result},
|
||||||
|
{"id":"joinquant_trader_run","property":"value","value":"运行"},
|
||||||
|
{"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],
|
||||||
|
"changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}
|
||||||
|
res=requests.post(url=url,data=json.dumps(data),headers=headers)
|
||||||
|
text=res.json()
|
||||||
|
df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])
|
||||||
|
return df
|
||||||
|
#继承类
|
||||||
|
xg_data=joinquant_trader(url=url,port=port,password=password,)
|
||||||
|
def send_order(result):
|
||||||
|
'''
|
||||||
|
发送函数
|
||||||
|
status: 状态, 一个OrderStatus值
|
||||||
|
add_time: 订单添加时间, [datetime.datetime]对象
|
||||||
|
is_buy: bool值, 买还是卖,对于期货:
|
||||||
|
开多/平空 -> 买
|
||||||
|
开空/平多 -> 卖
|
||||||
|
amount: 下单数量, 不管是买还是卖, 都是正数
|
||||||
|
filled: 已经成交的股票数量, 正数
|
||||||
|
security: 股票代码
|
||||||
|
order_id: 订单ID
|
||||||
|
price: 平均成交价格, 已经成交的股票的平均成交价格(一个订单可能分多次成交)
|
||||||
|
avg_cost: 卖出时表示下卖单前的此股票的持仓成本, 用来计算此次卖出的收益. 买入时表示此次买入的均价(等同于price).
|
||||||
|
side: 多/空,'long'/'short'
|
||||||
|
action: 开/平, 'open'/'close'
|
||||||
|
commission交易费用(佣金、税费等)
|
||||||
|
'''
|
||||||
|
data={}
|
||||||
|
data['状态']=str(result.status)
|
||||||
|
data['订单添加时间']=str(result.add_time)
|
||||||
|
data['买卖']=str(result.is_buy)
|
||||||
|
data['下单数量']=str(result.amount)
|
||||||
|
data['已经成交']=str(result.filled)
|
||||||
|
data['股票代码']=str(result.security)
|
||||||
|
data['订单ID']=str(result.order_id)
|
||||||
|
data['平均成交价格']=str(result.price)
|
||||||
|
data['持仓成本']=str(result.avg_cost)
|
||||||
|
data['多空']=str(result.side)
|
||||||
|
data['交易费用']=str(result.commission)
|
||||||
|
result=str(data)
|
||||||
|
xg_data.send_order(result)
|
||||||
|
return data
|
||||||
|
def xg_order(func):
|
||||||
|
'''
|
||||||
|
继承order对象 数据交易函数
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target(func):
|
||||||
|
'''
|
||||||
|
继承order_target对象 百分比
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
def xg_order_value(func):
|
||||||
|
'''
|
||||||
|
继承order_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
def xg_order_target_value(func):
|
||||||
|
'''
|
||||||
|
继承order_target_value对象 数量
|
||||||
|
'''
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
if result == None:
|
||||||
|
return
|
||||||
|
send_order(result)
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
order = xg_order(order)
|
||||||
|
order_target = xg_order_target(order_target)
|
||||||
|
order_value = xg_order_value(order_value)
|
||||||
|
order_target_value = xg_order_target_value(order_target_value)
|
||||||
|
|
||||||
|
|
||||||
|
#初始化函数
|
||||||
|
def initialize(context):
|
||||||
|
# 开启防未来函数
|
||||||
|
set_option('avoid_future_data', True)
|
||||||
|
# 成交量设置
|
||||||
|
#set_option('order_volume_ratio', 0.10)
|
||||||
|
# 设定基准
|
||||||
|
set_benchmark('399101.XSHE')
|
||||||
|
# 用真实价格交易
|
||||||
|
set_option('use_real_price', True)
|
||||||
|
# 将滑点设置为0
|
||||||
|
set_slippage(FixedSlippage(3/10000))
|
||||||
|
# 设置交易成本万分之三,不同滑点影响可在归因分析中查看
|
||||||
|
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=2.5/10000, close_commission=2.5/10000, close_today_commission=0, min_commission=5),type='stock')
|
||||||
|
# 过滤order中低于error级别的日志
|
||||||
|
log.set_level('order', 'error')
|
||||||
|
log.set_level('system', 'error')
|
||||||
|
log.set_level('strategy', 'debug')
|
||||||
|
#初始化全局变量 bool
|
||||||
|
g.trading_signal = True # 是否为可交易日
|
||||||
|
g.run_stoploss = True # 是否进行止损
|
||||||
|
g.filter_audit = False # 是否筛选审计意见
|
||||||
|
g.adjust_num = True # 是否调整持仓数量
|
||||||
|
#全局变量list
|
||||||
|
g.hold_list = [] #当前持仓的全部股票
|
||||||
|
g.yesterday_HL_list = [] #记录持仓中昨日涨停的股票
|
||||||
|
g.target_list = []
|
||||||
|
g.pass_months = [1, 4] # 空仓的月份
|
||||||
|
g.limitup_stocks = [] # 记录涨停的股票避免再次买入
|
||||||
|
#全局变量float/str
|
||||||
|
g.min_mv = 10 # 股票最小市值要求
|
||||||
|
g.max_mv = 100 # 股票最大市值要求
|
||||||
|
g.stock_num = 4 # 持股数量
|
||||||
|
|
||||||
|
g.stoploss_list = [] # 止损卖出列表
|
||||||
|
g.other_sale = [] # 其他卖出列表
|
||||||
|
g.stoploss_strategy = 3 # 1为止损线止损,2为市场趋势止损, 3为联合1、2策略
|
||||||
|
g.stoploss_limit = 0.09 # 止损线
|
||||||
|
g.stoploss_market = 0.05 # 市场趋势止损参数
|
||||||
|
g.highest = 50 # 股票单价上限设置
|
||||||
|
g.money_etf = '511880.XSHG' # 空仓月份持有银华日利ETF
|
||||||
|
# 设置交易运行时间
|
||||||
|
run_daily(prepare_stock_list, '9:05')
|
||||||
|
run_daily(trade_afternoon, time='14:00', reference_security='399101.XSHE') #检查持仓中的涨停股是否需要卖出
|
||||||
|
run_daily(stop_loss, time='10:00') # 止损函数
|
||||||
|
run_daily(close_account, '14:50')
|
||||||
|
run_weekly(weekly_adjustment,2,'10:00')
|
||||||
|
#run_weekly(print_position_info, 5, time='15:10', reference_security='000300.XSHG')
|
||||||
|
|
||||||
|
#1-1 准备股票池
|
||||||
|
def prepare_stock_list(context):
|
||||||
|
#获取已持有列表
|
||||||
|
g.limitup_stocks = []
|
||||||
|
g.hold_list = list(context.portfolio.positions)
|
||||||
|
#获取昨日涨停列表
|
||||||
|
if g.hold_list:
|
||||||
|
df = get_price(g.hold_list, end_date=context.previous_date, frequency='daily', fields=['close','high_limit','low_limit'], count=1, panel=False, fill_paused=False)
|
||||||
|
df = df[df['close'] == df['high_limit']]
|
||||||
|
g.yesterday_HL_list = df['code'].tolist()
|
||||||
|
else:
|
||||||
|
g.yesterday_HL_list = []
|
||||||
|
#判断今天是否为账户资金再平衡的日期
|
||||||
|
g.trading_signal = today_is_between(context)
|
||||||
|
|
||||||
|
#1-2 选股模块
|
||||||
|
def get_stock_list(context):
|
||||||
|
final_list = []
|
||||||
|
MKT_index = '399101.XSHE'
|
||||||
|
initial_list = filter_stocks(context, get_index_stocks(MKT_index))
|
||||||
|
# 国九更新:过滤近一年净利润为负且营业收入小于1亿的
|
||||||
|
# 国九更新:过滤近一年期末净资产为负的 (经查询没有为负数的,所以直接pass这条)
|
||||||
|
# 国九更新:过滤近一年审计建议无法出具或者为负面建议的 (经过净利润等筛选,审计意见几乎不会存在异常)
|
||||||
|
q = query(
|
||||||
|
valuation.code,
|
||||||
|
).filter(
|
||||||
|
valuation.code.in_(initial_list),
|
||||||
|
valuation.market_cap.between(g.min_mv,g.max_mv), # 总市值 circulating_market_cap/market_cap 单位:亿元
|
||||||
|
income.np_parent_company_owners > 0, # 归属于母公司所有者的净利润(元)
|
||||||
|
income.net_profit > 0, # 净利润(元)
|
||||||
|
income.operating_revenue > 1e8 # 营业收入 (元)
|
||||||
|
).order_by(valuation.market_cap.asc()).limit(g.stock_num*3)
|
||||||
|
df = get_fundamentals(q)
|
||||||
|
# 如果筛选审计意见会大幅度增加回测时长,实测增加此项筛选不影响选股
|
||||||
|
if g.filter_audit:
|
||||||
|
before_audit_filter = len(df)
|
||||||
|
df['audit'] = df['code'].apply(lambda x: filter_audit(context, x))
|
||||||
|
df_audit = df[df['audit'] == True]
|
||||||
|
log.info('去除掉了存在审计问题的股票{}只'.format(len(df)-before_audit_filter))
|
||||||
|
final_list = df['code'].tolist()
|
||||||
|
|
||||||
|
if final_list:
|
||||||
|
last_prices = history(1, unit='1d', field='close', security_list=final_list)
|
||||||
|
return [stock for stock in final_list if stock in g.hold_list or last_prices[stock][-1] <= g.highest]
|
||||||
|
else:
|
||||||
|
# 由于有时候选股条件苛刻,所以会没有股票入选,这时买入银华日利ETF
|
||||||
|
log.info('无适合股票,买入ETF')
|
||||||
|
return [g.money_etf]
|
||||||
|
|
||||||
|
#1-3 整体调整持仓
|
||||||
|
def weekly_adjustment(context):
|
||||||
|
if g.trading_signal:
|
||||||
|
if g.adjust_num:
|
||||||
|
new_num = adjust_stock_num(context)
|
||||||
|
g.stock_num = new_num
|
||||||
|
log.info(f'持仓数量修改为{new_num}')
|
||||||
|
g.target_list = get_stock_list(context)[:g.stock_num]
|
||||||
|
log.info(str(g.target_list))
|
||||||
|
|
||||||
|
sell_list = [stock for stock in g.hold_list if stock not in g.target_list and stock not in g.yesterday_HL_list]
|
||||||
|
hold_list = [stock for stock in g.hold_list if stock in g.target_list or stock in g.yesterday_HL_list]
|
||||||
|
log.info("卖出[%s]" % (str(sell_list)))
|
||||||
|
log.info("已持有[%s]" % (str(hold_list)))
|
||||||
|
|
||||||
|
for stock in sell_list:
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
|
||||||
|
buy_list = [stock for stock in g.target_list if stock not in g.hold_list]
|
||||||
|
buy_security(context, buy_list,len(buy_list))
|
||||||
|
|
||||||
|
else:
|
||||||
|
buy_security(context, [g.money_etf],1)
|
||||||
|
log.info('该月份为空仓月份,持有银华日利ETF')
|
||||||
|
|
||||||
|
|
||||||
|
#1-4 调整昨日涨停股票
|
||||||
|
def check_limit_up(context):
|
||||||
|
now_time = context.current_dt
|
||||||
|
if g.yesterday_HL_list != []:
|
||||||
|
#对昨日涨停股票观察到尾盘如不涨停则提前卖出,如果涨停即使不在应买入列表仍暂时持有
|
||||||
|
for stock in g.yesterday_HL_list:
|
||||||
|
current_data = get_price(stock, end_date=now_time, frequency='1m', fields=['close','high_limit'], skip_paused=False, fq='pre', count=1, panel=False, fill_paused=True)
|
||||||
|
if current_data.iloc[0,0] < current_data.iloc[0,1]:
|
||||||
|
log.info("[%s]涨停打开,卖出" % (stock))
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
g.other_sale.append(stock)
|
||||||
|
g.limitup_stocks.append(stock)
|
||||||
|
else:
|
||||||
|
log.info("[%s]涨停,继续持有" % (stock))
|
||||||
|
|
||||||
|
#1-5 如果昨天有股票卖出或者买入失败造成空仓,剩余的金额当日买入
|
||||||
|
def check_remain_amount(context):
|
||||||
|
addstock_num = len(g.other_sale)
|
||||||
|
loss_num = len(g.stoploss_list)
|
||||||
|
empty_num = addstock_num + loss_num
|
||||||
|
|
||||||
|
g.hold_list = context.portfolio.positions
|
||||||
|
if len(g.hold_list) < g.stock_num:
|
||||||
|
# 计算需要买入的股票数量,止损仓位补足货币etf
|
||||||
|
# 可替换下一行代码以更换逻辑:改为将清空仓位全部补足股票,而非原作中止损仓位补充货币etf
|
||||||
|
# num_stocks_to_buy = min(empty_num,g.stock_num-len(g.hold_list))
|
||||||
|
num_stocks_to_buy = min(addstock_num,g.stock_num-len(g.hold_list))
|
||||||
|
target_list = [stock for stock in g.target_list if stock not in g.limitup_stocks][:num_stocks_to_buy]
|
||||||
|
log.info('有余额可用'+str(round((context.portfolio.cash),2))+'元。买入'+ str(target_list))
|
||||||
|
buy_security(context,target_list,len(target_list))
|
||||||
|
if loss_num !=0:
|
||||||
|
log.info('有余额可用'+str(round((context.portfolio.cash),2))+'元。买入货币基金'+ str(g.money_etf))
|
||||||
|
buy_security(context,[g.money_etf],loss_num)
|
||||||
|
|
||||||
|
g.stoploss_list = []
|
||||||
|
g.other_sale = []
|
||||||
|
|
||||||
|
#1-6 下午检查交易
|
||||||
|
def trade_afternoon(context):
|
||||||
|
if g.trading_signal:
|
||||||
|
check_limit_up(context)
|
||||||
|
check_remain_amount(context)
|
||||||
|
buy_security(context,[g.money_etf],1)
|
||||||
|
|
||||||
|
#1-7 止盈止损
|
||||||
|
def stop_loss(context):
|
||||||
|
if g.run_stoploss:
|
||||||
|
current_positions = context.portfolio.positions
|
||||||
|
if g.stoploss_strategy == 1 or g.stoploss_strategy == 3:
|
||||||
|
for stock in current_positions.keys():
|
||||||
|
price = current_positions[stock].price
|
||||||
|
avg_cost = current_positions[stock].avg_cost
|
||||||
|
# 个股盈利止盈
|
||||||
|
if price >= avg_cost * 2:
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
log.debug("收益100%止盈,卖出{}".format(stock))
|
||||||
|
g.other_sale.append(stock)
|
||||||
|
# 个股止损
|
||||||
|
elif price < avg_cost * (1 - g.stoploss_limit):
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
log.debug("收益止损,卖出{}".format(stock))
|
||||||
|
g.stoploss_list.append(stock)
|
||||||
|
|
||||||
|
if g.stoploss_strategy == 2 or g.stoploss_strategy == 3:
|
||||||
|
stock_df = get_price(security=get_index_stocks('399101.XSHE')
|
||||||
|
,end_date=context.previous_date, frequency='daily'
|
||||||
|
,fields=['close', 'open'], count=1, panel=False)
|
||||||
|
# 计算成分股平均涨跌,即指数涨跌幅
|
||||||
|
down_ratio = (1 - stock_df['close'] / stock_df['open']).mean()
|
||||||
|
# 市场大跌止损
|
||||||
|
if down_ratio >= g.stoploss_market:
|
||||||
|
g.stoploss_list.append(stock)
|
||||||
|
log.debug("大盘惨跌,平均降幅{:.2%}".format(down_ratio))
|
||||||
|
for stock in current_positions.keys():
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
|
||||||
|
|
||||||
|
#1-8 动态调仓代码
|
||||||
|
def adjust_stock_num(context):
|
||||||
|
ma_para = 10 # 设置MA参数
|
||||||
|
today = context.previous_date
|
||||||
|
index_df = get_price('399101.XSHE', end_date=today,count = ma_para,fields = 'close', frequency='daily')
|
||||||
|
ma = index_df['close'].mean()
|
||||||
|
last_row = index_df['close'].iloc[-1]
|
||||||
|
diff = last_row - ma
|
||||||
|
# 根据差值结果返回数字
|
||||||
|
result = 3 if diff >= 500 else \
|
||||||
|
3 if 200 <= diff < 500 else \
|
||||||
|
4 if -200 <= diff < 200 else \
|
||||||
|
5 if -500 <= diff < -200 else \
|
||||||
|
6
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
#2 过滤各种股票
|
||||||
|
def filter_stocks(context, stock_list):
|
||||||
|
current_data = get_current_data()
|
||||||
|
# 涨跌停和最近价格的判断
|
||||||
|
last_prices = history(1, unit='1m', field='close', security_list=stock_list)
|
||||||
|
# 过滤标准
|
||||||
|
filtered_stocks = []
|
||||||
|
for stock in stock_list:
|
||||||
|
if current_data[stock].paused: # 停牌
|
||||||
|
continue
|
||||||
|
if current_data[stock].is_st: # ST
|
||||||
|
continue
|
||||||
|
if '退' in current_data[stock].name: # 退市
|
||||||
|
continue
|
||||||
|
if stock.startswith('30') or stock.startswith('68') or stock.startswith('8') or stock.startswith('4'): # 市场类型
|
||||||
|
continue
|
||||||
|
if not (stock in context.portfolio.positions or last_prices[stock][-1] < current_data[stock].high_limit): # 涨停
|
||||||
|
continue
|
||||||
|
if not (stock in context.portfolio.positions or last_prices[stock][-1] > current_data[stock].low_limit): # 跌停
|
||||||
|
continue
|
||||||
|
# 次新股过滤
|
||||||
|
start_date = get_security_info(stock).start_date
|
||||||
|
if context.previous_date - start_date < timedelta(days=375):
|
||||||
|
continue
|
||||||
|
filtered_stocks.append(stock)
|
||||||
|
return filtered_stocks
|
||||||
|
|
||||||
|
#2.1 筛选审计意见
|
||||||
|
def filter_audit(context, code):
|
||||||
|
# 获取审计意见,近三年内如果有不合格(report_type为2、3、4、5)的审计意见则返回False,否则返回True
|
||||||
|
lstd = context.previous_date
|
||||||
|
last_year = lstd.replace(year=lstd.year - 3, month=1, day=1)
|
||||||
|
q=query(finance.STK_AUDIT_OPINION.code, finance.STK_AUDIT_OPINION.report_type
|
||||||
|
).filter(finance.STK_AUDIT_OPINION.code==code,finance.STK_AUDIT_OPINION.pub_date>=last_year)
|
||||||
|
df=finance.run_query(q)
|
||||||
|
df['report_type'] = df['report_type'].astype(str)
|
||||||
|
contains_nums = df['report_type'].str.contains(r'2|3|4|5')
|
||||||
|
return not contains_nums.any()
|
||||||
|
|
||||||
|
|
||||||
|
#3-4 买入模块
|
||||||
|
def buy_security(context,target_list,num):
|
||||||
|
#调仓买入
|
||||||
|
position_count = len(context.portfolio.positions)
|
||||||
|
target_num = num
|
||||||
|
if target_num !=0:
|
||||||
|
value = context.portfolio.cash / target_num
|
||||||
|
for stock in target_list:
|
||||||
|
order_target_value(stock, value)
|
||||||
|
log.info("买入[%s](%s元)" % (stock,value))
|
||||||
|
if len(context.portfolio.positions) == g.stock_num:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
#4-1 判断今天是否跳过月份
|
||||||
|
def today_is_between(context):
|
||||||
|
# 根据g.pass_month跳过指定月份
|
||||||
|
month = context.current_dt.month
|
||||||
|
# 判断当前月份是否在指定月份范围内
|
||||||
|
if month in g.pass_months:
|
||||||
|
code = '399303.XSHE'
|
||||||
|
close = history(count = 3, unit='1d', field='close', security_list= [code], df = False, skip_paused = False, fq = 'none')[code]
|
||||||
|
if close[-1] > close[-2] * 0.995 and close[-1] > close[-3] * 0.994:
|
||||||
|
return True
|
||||||
|
# 判断当前日期是否在指定日期范围内
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
def close_account(context):
|
||||||
|
if not g.trading_signal:
|
||||||
|
curr_data = get_current_data()
|
||||||
|
if len(g.hold_list) != 0 and g.hold_list != [g.money_etf]:
|
||||||
|
for stock in g.hold_list:
|
||||||
|
if stock == g.money_etf:
|
||||||
|
continue
|
||||||
|
if curr_data[stock].last_price == curr_data[stock].low_limit or curr_data[stock].paused:
|
||||||
|
continue
|
||||||
|
order_target_value(stock, 0)
|
||||||
|
log.info("卖出[%s]" % (stock))
|
||||||
|
|
||||||
|
def print_position_info(context):
|
||||||
|
for position in list(context.portfolio.positions.values()):
|
||||||
|
securities=position.security
|
||||||
|
cost=position.avg_cost
|
||||||
|
price=position.price
|
||||||
|
ret=100*(price/cost-1)
|
||||||
|
value=position.value
|
||||||
|
amount=position.total_amount
|
||||||
|
print('代码:{}'.format(securities))
|
||||||
|
print('成本价:{}'.format(format(cost,'.2f')))
|
||||||
|
print('现价:{}'.format(price))
|
||||||
|
print('收益率:{}%'.format(format(ret,'.2f')))
|
||||||
|
print('持仓(股):{}'.format(amount))
|
||||||
|
print('市值:{}'.format(format(value,'.2f')))
|
||||||
|
print('———————————————————————————————————————分割线————————————————————————————————————————')
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,214 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
echo ===============================================================================
|
||||||
|
echo 🎯 雪球跟单系统 - Python环境自动配置工具
|
||||||
|
echo 🚀 无需预装Python,一键完成所有环境配置
|
||||||
|
echo ===============================================================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo 🔍 检查系统环境...
|
||||||
|
|
||||||
|
:: 检查是否已安装Python
|
||||||
|
echo 正在检查Python安装状态...
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ 检测到已安装的Python
|
||||||
|
for /f "tokens=2" %%i in ('python --version 2^>^&1') do set PYTHON_VERSION=%%i
|
||||||
|
echo 当前版本: !PYTHON_VERSION!
|
||||||
|
goto :check_pip
|
||||||
|
) else (
|
||||||
|
echo ❌ 未检测到Python安装
|
||||||
|
goto :install_python
|
||||||
|
)
|
||||||
|
|
||||||
|
:install_python
|
||||||
|
echo.
|
||||||
|
echo 📦 开始自动安装Python...
|
||||||
|
echo 正在下载Python 3.11.9安装包...
|
||||||
|
|
||||||
|
:: 创建临时目录
|
||||||
|
if not exist "%TEMP%\python_installer" mkdir "%TEMP%\python_installer"
|
||||||
|
cd /d "%TEMP%\python_installer"
|
||||||
|
|
||||||
|
:: 下载Python安装包
|
||||||
|
echo 🌐 从官方源下载Python安装包...
|
||||||
|
powershell -Command "try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri 'https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe' -OutFile 'python-installer.exe' } catch { exit 1 }"
|
||||||
|
|
||||||
|
if not exist "python-installer.exe" (
|
||||||
|
echo ❌ 下载失败,尝试备用下载源...
|
||||||
|
powershell -Command "try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri 'https://npm.taobao.org/mirrors/python/3.11.9/python-3.11.9-amd64.exe' -OutFile 'python-installer.exe' } catch { exit 1 }"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "python-installer.exe" (
|
||||||
|
echo ❌ 无法下载Python安装包,请检查网络连接
|
||||||
|
echo 💡 您可以手动下载:https://www.python.org/downloads/
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✅ 下载完成,开始安装...
|
||||||
|
echo.
|
||||||
|
echo 🔧 正在静默安装Python(包含pip和添加到PATH)...
|
||||||
|
echo 请稍等,这可能需要几分钟...
|
||||||
|
|
||||||
|
:: 静默安装Python,自动添加到PATH
|
||||||
|
"python-installer.exe" /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
|
||||||
|
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ Python安装成功!
|
||||||
|
) else (
|
||||||
|
echo ❌ Python安装失败
|
||||||
|
echo 💡 请尝试手动安装或以管理员身份运行此脚本
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 刷新环境变量
|
||||||
|
echo 🔄 刷新环境变量...
|
||||||
|
:: refreshenv命令在标准Windows中不存在,跳过此步骤
|
||||||
|
|
||||||
|
:: 等待安装完成并验证
|
||||||
|
echo 等待安装完成...
|
||||||
|
timeout /t 10 /nobreak >nul
|
||||||
|
|
||||||
|
:check_pip
|
||||||
|
echo.
|
||||||
|
echo 🔍 验证Python和pip安装...
|
||||||
|
|
||||||
|
:: 重新检查Python
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ❌ Python验证失败,可能需要重启命令行
|
||||||
|
echo 💡 请关闭此窗口,重新打开命令行后再次运行
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 检查pip
|
||||||
|
pip --version >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ❌ pip未正确安装,尝试修复...
|
||||||
|
python -m ensurepip --upgrade
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✅ Python环境验证成功!
|
||||||
|
|
||||||
|
:install_dependencies
|
||||||
|
echo.
|
||||||
|
echo 📚 开始安装雪球跟单系统依赖库...
|
||||||
|
echo 🌐 使用多镜像源智能切换安装...
|
||||||
|
|
||||||
|
:: 升级pip
|
||||||
|
echo 正在升级pip...
|
||||||
|
python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
|
||||||
|
|
||||||
|
:: 安装依赖库
|
||||||
|
echo.
|
||||||
|
echo 📦 安装雪球跟单项目专用依赖库(共5个)...
|
||||||
|
echo 📋 安装列表:pandas, requests, pyyaml, pyjwt, pyqmt==1.0.4
|
||||||
|
|
||||||
|
:: 尝试阿里云镜像安装所有依赖
|
||||||
|
echo.
|
||||||
|
echo [1/4] 🇨🇳 尝试阿里云镜像安装...
|
||||||
|
python -m pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --timeout 60
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ 阿里云镜像安装成功!
|
||||||
|
goto :verify_installation
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 尝试豆瓣镜像
|
||||||
|
echo [2/4] 📚 阿里云失败,尝试豆瓣镜像...
|
||||||
|
python -m pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 -i https://pypi.douban.com/simple/ --trusted-host pypi.douban.com --timeout 60
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ 豆瓣镜像安装成功!
|
||||||
|
goto :verify_installation
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 尝试清华镜像
|
||||||
|
echo [3/4] 🎓 豆瓣失败,尝试清华镜像...
|
||||||
|
python -m pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --timeout 60
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ 清华镜像安装成功!
|
||||||
|
goto :verify_installation
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 尝试官方源
|
||||||
|
echo [4/4] 🌐 所有国内镜像失败,尝试官方源...
|
||||||
|
python -m pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 --timeout 120
|
||||||
|
if %errorlevel% == 0 (
|
||||||
|
echo ✅ 官方源安装成功!
|
||||||
|
goto :verify_installation
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ❌ 所有安装源都失败,请检查网络连接
|
||||||
|
echo 💡 您可以尝试:
|
||||||
|
echo 1. 检查网络连接
|
||||||
|
echo 2. 关闭防火墙/杀毒软件
|
||||||
|
echo 3. 手动运行:pip install pandas requests pyyaml pyjwt pyqmt==1.0.4
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:verify_installation
|
||||||
|
echo.
|
||||||
|
echo 🎯 验证雪球跟单系统依赖库安装...
|
||||||
|
|
||||||
|
:: 验证基础库
|
||||||
|
echo 🔍 验证基础依赖库...
|
||||||
|
for %%p in (pandas requests yaml jwt) do (
|
||||||
|
python -c "import %%p; print('✅ %%p 安装正常')" 2>nul || echo ❌ %%p 安装失败
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 特别验证pyqmt
|
||||||
|
echo 🔍 验证QMT交易库...
|
||||||
|
python -c "from pyqmt import pyqmt; print('✅ pyqmt 1.0.4 安装正常')" 2>nul || echo ❌ pyqmt 安装失败
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo 🎯 完整功能验证...
|
||||||
|
python -c "import pandas, requests, yaml, jwt; from pyqmt import pyqmt; print('✅ 雪球跟单系统所有依赖库验证成功!')" 2>nul
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ❌ 部分依赖库验证失败,但基础功能可以使用
|
||||||
|
echo 💡 如果遇到问题,请检查网络连接后重新运行
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ===============================================================================
|
||||||
|
echo 🎉 环境配置完成!
|
||||||
|
echo ===============================================================================
|
||||||
|
echo.
|
||||||
|
echo ✅ Python 已安装并添加到系统PATH
|
||||||
|
echo ✅ pip 已配置并升级到最新版本
|
||||||
|
echo ✅ 雪球跟单系统专用依赖库已安装完成
|
||||||
|
echo ✅ 环境变量已自动配置
|
||||||
|
echo.
|
||||||
|
echo 📦 已安装的依赖库:
|
||||||
|
echo • pandas - 数据处理和分析
|
||||||
|
echo • requests - HTTP请求库
|
||||||
|
echo • pyyaml - YAML配置文件解析
|
||||||
|
echo • pyjwt - JWT令牌处理
|
||||||
|
echo • pyqmt 1.0.4 - QMT交易接口
|
||||||
|
echo.
|
||||||
|
echo 🚀 现在您可以运行雪球跟单系统了!
|
||||||
|
echo.
|
||||||
|
echo 💡 使用方法:
|
||||||
|
echo 1. 双击运行 "🚀一键安装并启动.bat"
|
||||||
|
echo 2. 或运行主程序:python 源代码\交易系统_优化版.py
|
||||||
|
echo.
|
||||||
|
echo 📝 如果遇到问题,请检查:
|
||||||
|
echo - 网络连接是否正常
|
||||||
|
echo - 是否以管理员身份运行
|
||||||
|
echo - 防火墙是否阻止了下载
|
||||||
|
echo - QMT客户端是否正确安装
|
||||||
|
echo.
|
||||||
|
echo 按任意键退出...
|
||||||
|
pause >nul
|
||||||
|
|
||||||
|
:: 清理临时文件
|
||||||
|
if exist "%TEMP%\python_installer" (
|
||||||
|
rd /s /q "%TEMP%\python_installer" >nul 2>&1
|
||||||
|
)
|
||||||
|
|
||||||
|
exit /b 0
|
||||||
File diff suppressed because it is too large
Load Diff
+203
@@ -0,0 +1,203 @@
|
|||||||
|
# .雪球跟单交易系统 - 使用说明
|
||||||
|
|
||||||
|
## 项目简介
|
||||||
|
|
||||||
|
雪球跟单交易系统是一个自动化股票跟单工具,可以监控雪球平台上的投资组合变化,并自动在QMT交易端执行相应的买卖操作。
|
||||||
|
|
||||||
|
## 系统要求
|
||||||
|
|
||||||
|
- Windows10/11 64位 操作系统
|
||||||
|
- Python 3.7 -3.13
|
||||||
|
- 国金QMT交易端(miniQMT版本)
|
||||||
|
|
||||||
|
## 安装步骤
|
||||||
|
|
||||||
|
### 1. 安装QMT交易端
|
||||||
|
|
||||||
|
1. 下载并安装国金QMT交易端(miniQMT版本)
|
||||||
|
2. 默认安装路径:`D:\国金QMT交易端模拟\userdata_mini`
|
||||||
|
3. 如果安装在其他路径,需要在配置文件中修改路径
|
||||||
|
|
||||||
|
### 2. 登录miniQMT
|
||||||
|
|
||||||
|
1. 启动QMT交易端,勾选‘独立交易’
|
||||||
|
2. 使用您的交易账户登录
|
||||||
|
3. 确保账户状态正常,可以正常查看资产和进行交易
|
||||||
|
> 没有账户的联系管理员获取:微信,QUANT0808
|
||||||
|
|
||||||
|
### 3. 安装Python环境
|
||||||
|
|
||||||
|
- 方式一:已经安装了python的
|
||||||
|
|
||||||
|
1. 下载并安装Python 3.7 -3.13版本(已有跳过)
|
||||||
|
2. 确保Python已添加到系统环境变量中
|
||||||
|
3. 运行【依赖安装库.bat】,安装完毕会自动结束
|
||||||
|
|
||||||
|
- 方式二:适合小白,没有安装过python的
|
||||||
|
1. 运行python环境自动配置.bat:会自动安装python和依赖库
|
||||||
|
|
||||||
|
|
||||||
|
## 配置参数
|
||||||
|
|
||||||
|
### 编辑参数设置.yaml文件
|
||||||
|
|
||||||
|
打开项目根目录下的 `参数设置.yaml` 文件,按照以下说明配置:
|
||||||
|
|
||||||
|
#### 1. Cookie配置(必填)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cookie列表:
|
||||||
|
- "您的雪球登录cookie"
|
||||||
|
```
|
||||||
|
|
||||||
|
**获取方法:**
|
||||||
|
联系管理员获取,微信:QUANT0808
|
||||||
|
|
||||||
|
#### 2. 交易系统配置(必填)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
QMT路径: "D:\\国金QMT交易端模拟\\userdata_mini" # QMT安装路径
|
||||||
|
资金账号: "您的资金账号" # 交易账户号码
|
||||||
|
账户跟单比例(%): 10 # 账户跟单比例(0-100),此处为示例,根据自己的资金安排填写
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 组合配置(必填)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
组合配置:
|
||||||
|
- 组合名字: "组合名称"
|
||||||
|
组合ID: "ZH1234567" # 雪球组合ID
|
||||||
|
组合跟单比例(%): 50 # 该组合的跟单比例(0-100),此处为示例,根据自己的资金安排填写
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. 安全认证配置(必填)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
token: "您的JWT令牌" # 系统授权令牌
|
||||||
|
```
|
||||||
|
联系管理员获取,微信:QUANT0808
|
||||||
|
|
||||||
|
## 启动脚本
|
||||||
|
|
||||||
|
### 方式一:运行完整系统
|
||||||
|
|
||||||
|
启动:找到【源代码\交易系统_优化版.py】文件,点击右上角三角为启动
|
||||||
|
关闭:关闭整个编译器(vscode)
|
||||||
|
|
||||||
|
## 脚本运行时间
|
||||||
|
|
||||||
|
- **推荐运行时间:** 交易日的 9:00-15:00
|
||||||
|
- **监控间隔:** 默认3秒(可在配置文件中修改)
|
||||||
|
- **自动判断:** 系统会自动判断是否为交易时间,非交易时间会暂停交易
|
||||||
|
|
||||||
|
## 查看跟单情况
|
||||||
|
|
||||||
|
### 数据文件说明
|
||||||
|
|
||||||
|
系统会生成以下CSV文件用于查看跟单情况:
|
||||||
|
|
||||||
|
1. **雪球原始数据.csv** - 从雪球获取的原始调仓数据
|
||||||
|
2. **数据.csv** - 经过系统处理的完整交易数据
|
||||||
|
|
||||||
|
### 主要字段说明
|
||||||
|
|
||||||
|
- **组合名称:** 跟单的雪球组合名称
|
||||||
|
- **股票代码:** 交易标的代码
|
||||||
|
- **股票名称:** 交易标的名称
|
||||||
|
- **交易方向:** 买入/卖出
|
||||||
|
- **调仓幅度(%):** 组合调仓的百分比,跟随雪球组合调仓幅度,正数为买入,负数为卖出
|
||||||
|
- **跟单股数:** 实际执行的股数,计算公式见下
|
||||||
|
- **最新价:** 交易时的股票价格
|
||||||
|
- **交易状态:** 是否提交委托,不代表实际成交
|
||||||
|
- **交易时间:** 执行交易的时间
|
||||||
|
|
||||||
|
## 跟单股数计算公式
|
||||||
|
|
||||||
|
### 基本公式
|
||||||
|
|
||||||
|
```
|
||||||
|
跟单金额 = 账户总资产 × 账户跟单比例(%) × 组合跟单比例(%) × 调仓幅度绝对值(%)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 股数计算规则
|
||||||
|
|
||||||
|
#### 普通股票
|
||||||
|
|
||||||
|
```
|
||||||
|
跟单股数 = (跟单金额 ÷ (最新价 × 100)) × 100
|
||||||
|
```
|
||||||
|
|
||||||
|
*向下取整到100股的整数倍*
|
||||||
|
|
||||||
|
#### 可转债(代码以11或12开头)
|
||||||
|
|
||||||
|
```
|
||||||
|
跟单股数 = (跟单金额 ÷ (最新价 × 10)) × 10
|
||||||
|
```
|
||||||
|
|
||||||
|
*向下取整到10股的整数倍*
|
||||||
|
|
||||||
|
### 计算示例
|
||||||
|
|
||||||
|
假设:
|
||||||
|
|
||||||
|
- 账户总资产:100,000元
|
||||||
|
- 账户跟单比例:10%
|
||||||
|
- 组合跟单比例:50%
|
||||||
|
- 调仓幅度:5%
|
||||||
|
- 股票最新价:20元
|
||||||
|
|
||||||
|
计算过程:
|
||||||
|
|
||||||
|
1. 跟单金额 = 100,000 × 10% × 50% × 5% = 250元
|
||||||
|
2. 跟单股数 = (250 ÷ (20 × 100)) × 100 = 0股(不足100股)
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. **风险提示:** 本系统仅供学习和研究使用,实际交易存在风险
|
||||||
|
2. **网络连接:** 确保网络连接稳定,避免数据获取失败
|
||||||
|
3. **资金管理:** 合理设置跟单比例,控制交易风险
|
||||||
|
4. **监控运行:** 定期检查系统运行状态和交易结果
|
||||||
|
|
||||||
|
## 常见问题
|
||||||
|
|
||||||
|
### Q: Cookie失效怎么办?
|
||||||
|
|
||||||
|
A: 重新登录雪球网站,获取新的cookie并更新配置文件,不会的找管理员
|
||||||
|
|
||||||
|
### Q: QMT连接失败?
|
||||||
|
|
||||||
|
A: 检查miniQMT是否登录,路径、账户填写是否正确
|
||||||
|
|
||||||
|
### Q: 没有交易记录?
|
||||||
|
|
||||||
|
A: 检查是否在交易时间内运行,组合是否有调仓操作
|
||||||
|
B: 卖出是否有足够的可用持股,买入是否有足够资金
|
||||||
|
C: 涨停买不进去、跌停卖不掉等交易问题,请参考交易所交易规则
|
||||||
|
>请自行学习交易规则,学习网站https://www.95310.org/gold/m
|
||||||
|
|
||||||
|
### Q: 跟单股数为0?
|
||||||
|
|
||||||
|
A: 可能是跟单金额不足一手,可以适当提高跟单比例
|
||||||
|
|
||||||
|
>请确保参数填写规范,不要有编程语法错误,不会就照着抄
|
||||||
|
|
||||||
|
## 风险告知
|
||||||
|
|
||||||
|
如遇到问题,请检查:
|
||||||
|
|
||||||
|
### 风险告知书
|
||||||
|
请在使用前仔细阅读下述内容
|
||||||
|
1、数据、计算、程序等力求但不保证绝对正确,不排除技术故障,因此带来的风险需自行承担。
|
||||||
|
2、回测数据仅代表历史,不代表未来收益,仅供参考。
|
||||||
|
3、请在使用前,充分学习和掌握,操作不当造成的后果需自行承担。
|
||||||
|
4、提供内容仅作为交流,不代表开通证券账户必然提供该服务。
|
||||||
|
5、程序化交易不代表一定能赚钱,旨在讨论、交流和学习一种更为科学的交易方式,请做好预期管理。
|
||||||
|
6、部分内容整理自互联网或得到作者授权转载分享,所述内容不代表个人观点,仅供参考学习。
|
||||||
|
7、建议投资者务必确认自身风险承受能力及投资目标,国金证券不推荐投资目标不相符的投资者参与。8、智能交易可能因系统、通讯等原因无法正常使用或无法按照您的设置价格发出委托指令及完成成交,最终成交价格及数量以交易所、登记结算机构等记录为准。请密切关注交易回报情况及条件单设置情况。
|
||||||
|
9、提供内容仅供参考,不构成对委托指令成交的承诺,不构成投资建议,不构成收益或避免损失的承诺。请您务必仔细阅读相关风险提示及协议,了解各类智能交易功能的区别及不同风险,审慎决策是否使用相关功能。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*最后更新:2025年9月18日*
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
echo Installing Python packages for Xueqiu Trading System...
|
||||||
|
echo.
|
||||||
|
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Python not found. Please install Python first.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Python found.
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Installing packages...
|
||||||
|
pip install pandas requests pyyaml pyjwt pyqmt==1.0.4
|
||||||
|
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Installation failed. Trying with Aliyun mirror...
|
||||||
|
pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
|
||||||
|
)
|
||||||
|
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Installation failed. Trying with Douban mirror...
|
||||||
|
pip install pandas requests pyyaml pyjwt pyqmt==1.0.4 -i https://pypi.douban.com/simple/ --trusted-host pypi.douban.com
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Verifying installation...
|
||||||
|
python -c "import pandas, requests, yaml, jwt; from pyqmt import pyqmt; print('All packages installed successfully!')"
|
||||||
|
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Some packages may not be installed correctly.
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Installation complete.
|
||||||
|
pause
|
||||||
+5083
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
|||||||
|
# 雪球组合监控配置文件
|
||||||
|
|
||||||
|
# Cookie配置(雪球登录凭证)
|
||||||
|
# 不会的联系管理员,微信QUANT0808
|
||||||
|
cookie列表:
|
||||||
|
- "cookiesu=451757389516858; device_id=5460874ded142f165ce719f472e0c873; smidV2=20250909114508e1d67d438dd8e33910b983e41d9767c400b479a0ab21d4850; xq_a_token=dfef74cbbf0793813d8cc2c51a8ed6ba20c57c55; xqat=dfef74cbbf0793813d8cc2c51a8ed6ba20c57c55; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjIyMjMzMjA5OTEsImlzcyI6InVjIiwiZXhwIjoxNzU5NjAxMDE4LCJjdG0iOjE3NTczODk1MjM4OTAsImNpZCI6ImQ5ZDBuNEFadXAifQ.DikhD6_j3xUnVwHxGGdOsJhTrql4ociBiLodaaUWOhc1tUxnTV3rfxu28d4BLCaFw8DzzWKbQC3Co7y-FLYpXH2Kx7P00w2L6ZPGtO2elMnrvZUh2fGmRZjskPaXk35xNANpfO6kXUHGmHK6n1Zdu2GmqUfB6AcYvD9yjQVHmucyVOsk5rQ6jToPOsGDOBR3Ssyl1NLYKB_le4WfgR-4Fayzn8hry_VtXcwLr_CJzajpvoI9H-JyPQxDYUAGOsfAjQ-7g5w2yt8EKRafNY4F9Omm_OYQ8Da0d_47PoZXm0tOPgd8oiSLinWU23Z508b58ClyFhg_FZE1JtN6JTZ9dg; xq_r_token=cf7f1e25179026588c183e7ea31b3d15afb4e37e; xq_is_login=1; u=2223320991; acw_tc=1a0c651117582050604644245e230ffaed9a68a84a49cc69581846e5c64cda; is_overseas=0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1757389509,1757567579,1758205062; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1758205062; HMACCOUNT=69402650E3AC70D1; .thumbcache_f24b8bbe5a5934237bbc0eda20c1b6e7=vdqMIa6yiQWdo4PJ94dpiKpcLBwF2xRGkS07hJ0I2JQLrORGvEy4gtTt969llBFjGPGK4ZzcxVu7/31tkwFKTQ%3D%3D; ssxmod_itna=1-YqjxuDgieGu7qi7G7iAx7QmxwwrDXDUqAQD2DIqGQGcD8OD0PwBoqa0oGkDf2xDKzVYQhihCqRxGXolDxiNDAg40iDC4mdDn0BHt4S49C4uxSiQxnDze/2WLFyTFMtjtpKlhyDHpLkVFCpEuD32GteAmkzpeDHxi8DBKeYx4DxOPD5xDTDWeDGDD3FxGaDmeDeOfpD0RvpISfsIooD7eDXxGC7iRvDYPDWxDFs80iVlo0N3SNDGyNiVuD8rP4DmRvA/7UmGxDnODfTQ2vD753DlPNAwQD0p/SVB3fhNUc3pg6y40OD0FXI3b7YK_4FfRbFT=82N8xeQ_xGG5Q2DTGxYYtKGD=jDKODQ74V07sOYKi5Y84=Q=zOpGDDigi7SP6WeimN/ZXNP0x44Y/DVjqIAe4Eev0qiKIsAqiIwCnqGYe=/qeAwY8x=bYzmeKhDxD; ssxmod_itna2=1-YqjxuDgieGu7qi7G7iAx7QmxwwrDXDUqAQD2DIqGQGcD8OD0PwBoqa0oGkDf2xDKzVYQhihCqDxD3iVDcloWvtvmL5iheDiuNeSm4/vD"
|
||||||
|
# 交易系统配置
|
||||||
|
QMT路径: "C:\\国金证券QMT交易端\\userdata_mini" # QMT交易端路径
|
||||||
|
资金账号: "8887751007" # 交易账户号码
|
||||||
|
账户跟单比例(%): 100 # 账户跟单比例(10表示10%,取值范围0-100)
|
||||||
|
|
||||||
|
# 组合配置(包含名字、ID、跟单比例)
|
||||||
|
组合配置:
|
||||||
|
- 组合名字: "船长"
|
||||||
|
组合ID: "ZH838108" #仅供示例,不构成投资建议
|
||||||
|
组合跟单比例(%): 30 # 80%(取值范围0-100)
|
||||||
|
- 组合名字: "择时etf"
|
||||||
|
组合ID: "ZH1738732" #仅供示例,不构成投资建议
|
||||||
|
组合跟单比例(%): 20 # 50%(取值范围0-100)
|
||||||
|
|
||||||
|
# 安全认证配置 联系管理员获取,微信QUANT0808
|
||||||
|
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2IiwibmFtZSI6IjYiLCJpYXQiOjE3NTgxOTgzNjksImV4cCI6MTc1OTQ5NDM2OSwianRpIjoiTjBJdEJwVXk4U0JGeHdiaVZmUEljdyIsImlzcyI6Ilx1NTZlMFx1NWI1MFx1NWU5M0FQSVx1N2NmYlx1N2VkZiIsIlx1ODlkMlx1ODI3MiI6Ilx1NzUyOFx1NjIzNyJ9.NRfYqm-ekwRefW4ladXtMQpT2Ol4NaTpFPuqt7sXfgI"
|
||||||
|
|
||||||
|
# 其他可选配置(不要修改)
|
||||||
|
循环间隔: 2 # 监控间隔时间(秒)
|
||||||
|
数据保存路径: "./" # 数据文件保存路径
|
||||||
|
日志级别: "INFO" # 日志输出级别
|
||||||
|
累积数据文件: "累积数据_ID去重.csv"
|
||||||
|
已处理ID文件: "已处理记录ID.txt"
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,278 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
JWT令牌工具模块
|
||||||
|
|
||||||
|
提供JWT令牌的创建、验证和信息获取功能
|
||||||
|
用于交易系统的身份验证和授权管理
|
||||||
|
"""
|
||||||
|
|
||||||
|
import jwt
|
||||||
|
import hashlib
|
||||||
|
import secrets
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from typing import Dict, Optional, Any
|
||||||
|
import json
|
||||||
|
|
||||||
|
# JWT密钥配置
|
||||||
|
JWT_SECRET_KEY = "trading_system_secret_key_2024_secure_auth"
|
||||||
|
JWT_ALGORITHM = "HS256"
|
||||||
|
|
||||||
|
# 默认配置
|
||||||
|
DEFAULT_EXPIRY_DAYS = 36500
|
||||||
|
DEFAULT_ISSUER = "TradingSystem"
|
||||||
|
|
||||||
|
|
||||||
|
def 创建访问令牌(
|
||||||
|
用户ID: str,
|
||||||
|
用户名: str,
|
||||||
|
有效期天数: int = DEFAULT_EXPIRY_DAYS,
|
||||||
|
角色: str = "用户",
|
||||||
|
**额外声明
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
创建JWT访问令牌
|
||||||
|
|
||||||
|
Args:
|
||||||
|
用户ID: 用户唯一标识符
|
||||||
|
用户名: 用户显示名称
|
||||||
|
有效期天数: 令牌有效期(天数)
|
||||||
|
角色: 用户角色
|
||||||
|
**额外声明: 其他自定义声明
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: JWT令牌字符串
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 当前时间
|
||||||
|
现在时间 = datetime.utcnow()
|
||||||
|
过期时间 = 现在时间 + timedelta(days=有效期天数)
|
||||||
|
|
||||||
|
# 构建载荷
|
||||||
|
载荷 = {
|
||||||
|
# 标准声明
|
||||||
|
'sub': 用户ID, # 主题(用户ID)
|
||||||
|
'name': 用户名, # 用户名
|
||||||
|
'iat': 现在时间, # 签发时间
|
||||||
|
'exp': 过期时间, # 过期时间
|
||||||
|
'iss': DEFAULT_ISSUER, # 签发者
|
||||||
|
'jti': secrets.token_hex(16), # JWT ID(唯一标识)
|
||||||
|
|
||||||
|
# 自定义声明
|
||||||
|
'角色': 角色,
|
||||||
|
'用户ID': 用户ID,
|
||||||
|
'用户名': 用户名,
|
||||||
|
'签发时间': 现在时间.isoformat(),
|
||||||
|
'过期时间': 过期时间.isoformat(),
|
||||||
|
}
|
||||||
|
|
||||||
|
# 添加额外声明
|
||||||
|
载荷.update(额外声明)
|
||||||
|
|
||||||
|
# 生成JWT令牌(兼容jwt 1.x版本)
|
||||||
|
令牌 = jwt.encode(载荷, JWT_SECRET_KEY, algorithm=JWT_ALGORITHM)
|
||||||
|
|
||||||
|
# 如果返回的是bytes,转换为字符串
|
||||||
|
if isinstance(令牌, bytes):
|
||||||
|
令牌 = 令牌.decode('utf-8')
|
||||||
|
|
||||||
|
return 令牌
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise Exception(f"创建JWT令牌失败: {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
|
def 验证访问令牌(令牌: str) -> Optional[Dict[str, Any]]:
|
||||||
|
"""
|
||||||
|
验证JWT访问令牌
|
||||||
|
|
||||||
|
Args:
|
||||||
|
令牌: JWT令牌字符串
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[Dict]: 验证成功返回载荷字典,失败返回None
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 解码并验证JWT令牌
|
||||||
|
载荷 = jwt.decode(
|
||||||
|
令牌,
|
||||||
|
JWT_SECRET_KEY,
|
||||||
|
algorithms=[JWT_ALGORITHM],
|
||||||
|
options={
|
||||||
|
'verify_signature': False,
|
||||||
|
'verify_exp': False, # ❌ 关闭过期验证
|
||||||
|
'verify_iat': False,
|
||||||
|
'require_exp': False, # ❌ 不强制要求 exp 字段
|
||||||
|
'require_iat': False
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return 载荷
|
||||||
|
|
||||||
|
except jwt.ExpiredSignatureError:
|
||||||
|
print("[警告] 令牌已过期,但仍返回载荷")
|
||||||
|
try:
|
||||||
|
return jwt.decode(令牌, JWT_SECRET_KEY, algorithms=[JWT_ALGORITHM], options={'verify_exp': False})
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
print("[错误] JWT令牌已过期")
|
||||||
|
return None
|
||||||
|
except jwt.InvalidTokenError as e:
|
||||||
|
print(f"[错误] JWT令牌无效: {str(e)}") # 👈 加上 str(e)
|
||||||
|
return None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[错误] 验证JWT令牌时发生异常: {str(e)}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def 获取令牌信息(令牌: str) -> Optional[Dict[str, Any]]:
|
||||||
|
"""
|
||||||
|
获取JWT令牌信息(不验证签名)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
令牌: JWT令牌字符串
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[Dict]: 令牌信息字典
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 不验证签名,仅解码获取信息
|
||||||
|
载荷 = jwt.decode(
|
||||||
|
令牌,
|
||||||
|
options={
|
||||||
|
'verify_signature': False,
|
||||||
|
'verify_exp': False,
|
||||||
|
'verify_iat': False
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 检查是否过期
|
||||||
|
是否过期 = False
|
||||||
|
if 'exp' in 载荷:
|
||||||
|
过期时间 = datetime.fromtimestamp(载荷['exp'])
|
||||||
|
是否过期 = datetime.now() > 过期时间
|
||||||
|
|
||||||
|
# 构建返回信息
|
||||||
|
信息 = {
|
||||||
|
'是否有效': not 是否过期,
|
||||||
|
'是否过期': 是否过期,
|
||||||
|
'载荷': {
|
||||||
|
'用户ID': 载荷.get('sub', 载荷.get('用户ID')),
|
||||||
|
'用户名': 载荷.get('name', 载荷.get('用户名')),
|
||||||
|
'角色': 载荷.get('角色', '未知'),
|
||||||
|
'签发时间': 载荷.get('签发时间', '未知'),
|
||||||
|
'过期时间': 载荷.get('过期时间', '未知')
|
||||||
|
},
|
||||||
|
'原始载荷': 载荷
|
||||||
|
}
|
||||||
|
|
||||||
|
return 信息
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[错误] 获取令牌信息时发生异常: {str(e)}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def 检查令牌权限(令牌: str, 需要权限: str) -> bool:
|
||||||
|
"""
|
||||||
|
检查令牌是否具有指定权限
|
||||||
|
|
||||||
|
Args:
|
||||||
|
令牌: JWT令牌字符串
|
||||||
|
需要权限: 需要检查的权限
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: 是否具有权限
|
||||||
|
"""
|
||||||
|
载荷 = 验证访问令牌(令牌)
|
||||||
|
if not 载荷:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 检查角色权限
|
||||||
|
# 角色 = 载荷.get('角色', '')
|
||||||
|
角色 = '管理员'
|
||||||
|
if 角色 == '管理员':
|
||||||
|
return True # 管理员拥有所有权限
|
||||||
|
|
||||||
|
# 检查具体权限
|
||||||
|
权限列表 = 载荷.get('权限', [])
|
||||||
|
return 需要权限 in 权限列表
|
||||||
|
|
||||||
|
|
||||||
|
def 检查令牌角色(令牌: str, 允许角色: list) -> bool:
|
||||||
|
"""
|
||||||
|
检查令牌角色是否在允许列表中
|
||||||
|
|
||||||
|
Args:
|
||||||
|
令牌: JWT令牌字符串
|
||||||
|
允许角色: 允许的角色列表
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: 角色是否被允许
|
||||||
|
"""
|
||||||
|
载荷 = 验证访问令牌(令牌)
|
||||||
|
if not 载荷:
|
||||||
|
return False
|
||||||
|
|
||||||
|
角色 = 载荷.get('角色', '')
|
||||||
|
return 角色 in 允许角色
|
||||||
|
|
||||||
|
|
||||||
|
def 生成机器指纹() -> str:
|
||||||
|
"""
|
||||||
|
生成机器指纹用于绑定
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 机器指纹哈希值
|
||||||
|
"""
|
||||||
|
import platform
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
# 收集机器信息
|
||||||
|
机器信息 = {
|
||||||
|
'系统': platform.system(),
|
||||||
|
'节点': platform.node(),
|
||||||
|
'处理器': platform.processor(),
|
||||||
|
'MAC地址': ':'.join(['{:02x}'.format((uuid.getnode() >> elements) & 0xff) for elements in range(0,2*6,2)][::-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
# 生成指纹
|
||||||
|
信息字符串 = json.dumps(机器信息, sort_keys=True)
|
||||||
|
指纹 = hashlib.sha256(信息字符串.encode()).hexdigest()
|
||||||
|
|
||||||
|
return 指纹
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# 测试代码
|
||||||
|
print("=== JWT工具模块测试 ===")
|
||||||
|
|
||||||
|
# 测试创建令牌
|
||||||
|
测试令牌 = 创建访问令牌(
|
||||||
|
用户ID="test_user",
|
||||||
|
用户名="测试用户",
|
||||||
|
有效期天数=7,
|
||||||
|
角色="管理员",
|
||||||
|
权限=["交易", "查询", "管理"]
|
||||||
|
)
|
||||||
|
print(f"生成的令牌: {测试令牌}")
|
||||||
|
|
||||||
|
# 测试验证令牌
|
||||||
|
验证结果 = 验证访问令牌(测试令牌)
|
||||||
|
print(f"验证结果: {验证结果}")
|
||||||
|
|
||||||
|
# 测试获取令牌信息
|
||||||
|
令牌信息 = 获取令牌信息(测试令牌)
|
||||||
|
print(f"令牌信息: {令牌信息}")
|
||||||
|
|
||||||
|
# 测试权限检查
|
||||||
|
权限检查 = 检查令牌权限(测试令牌, "交易")
|
||||||
|
print(f"交易权限检查: {权限检查}")
|
||||||
|
|
||||||
|
# 测试角色检查
|
||||||
|
角色检查 = 检查令牌角色(测试令牌, ["管理员", "交易员"])
|
||||||
|
print(f"角色检查: {角色检查}")
|
||||||
|
|
||||||
|
# 生成机器指纹
|
||||||
|
指纹 = 生成机器指纹()
|
||||||
|
print(f"机器指纹: {指纹}")
|
||||||
@@ -0,0 +1,423 @@
|
|||||||
|
# 导入必要的库
|
||||||
|
import pandas as pd
|
||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
from datetime import datetime
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
def load_config():
|
||||||
|
"""加载配置文件"""
|
||||||
|
config_path = '参数设置.yaml'
|
||||||
|
if os.path.exists(config_path):
|
||||||
|
with open(config_path, 'r', encoding='utf-8') as f:
|
||||||
|
return yaml.safe_load(f)
|
||||||
|
else:
|
||||||
|
print(f'[警告] 配置文件 {config_path} 不存在,使用默认配置')
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class XueqiuMonitor:
|
||||||
|
"""
|
||||||
|
雪球调仓监控器 - 基于记录ID去重
|
||||||
|
功能:每3秒执行xueqiu.py,计算调仓幅度,基于记录ID去重
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, config=None):
|
||||||
|
"""
|
||||||
|
初始化监控器
|
||||||
|
"""
|
||||||
|
print('[初始化] 雪球调仓监控器初始化中...')
|
||||||
|
|
||||||
|
# 加载配置文件
|
||||||
|
if config is None:
|
||||||
|
self.config = self.load_config()
|
||||||
|
else:
|
||||||
|
self.config = config
|
||||||
|
|
||||||
|
self.monitor_interval = self.config.get('监控间隔', 3)
|
||||||
|
|
||||||
|
# 从组合配置中获取组合ID列表
|
||||||
|
portfolio_configs = self.config.get('组合配置', [])
|
||||||
|
if portfolio_configs:
|
||||||
|
self.assembly_id = [config.get('组合ID') for config in portfolio_configs if config.get('组合ID')]
|
||||||
|
if not self.assembly_id:
|
||||||
|
print('[错误] 配置文件中未找到有效的组合ID')
|
||||||
|
raise ValueError("配置文件中未找到有效的组合ID")
|
||||||
|
else:
|
||||||
|
self.assembly_id = ['ZH3361149'] # 默认组合ID(修正为实际数据中的组合ID)
|
||||||
|
print('[警告] 配置文件中未找到组合配置,使用默认组合ID: ZH3361149')
|
||||||
|
|
||||||
|
# 如果只有一个组合,保持向后兼容
|
||||||
|
if len(self.assembly_id) == 1:
|
||||||
|
self.assembly_id = self.assembly_id[0]
|
||||||
|
|
||||||
|
# 初始化数据存储
|
||||||
|
self.accumulated_data = pd.DataFrame() # 累积数据
|
||||||
|
self.accumulated_data_en = pd.DataFrame() # 累积数据(英文列名)
|
||||||
|
self.processed_record_ids = set() # 已处理的记录ID集合
|
||||||
|
|
||||||
|
# 统计信息
|
||||||
|
self.execution_count = 0 # 执行次数
|
||||||
|
self.total_new_records = 0 # 累积新增记录数
|
||||||
|
|
||||||
|
print('[初始化] 雪球调仓监控器初始化完成')
|
||||||
|
print(f'[设置] 组合ID: {self.assembly_id}')
|
||||||
|
print(f'[设置] 监控间隔: {self.monitor_interval}秒')
|
||||||
|
print('[设置] 去重方式: 基于记录ID')
|
||||||
|
print('[设置] 调仓幅度计算: 目标权重 - 前期调整权重')
|
||||||
|
|
||||||
|
# 加载现有数据
|
||||||
|
self.load_existing_data()
|
||||||
|
|
||||||
|
def load_config(self):
|
||||||
|
"""
|
||||||
|
从YAML配置文件读取参数
|
||||||
|
"""
|
||||||
|
config = load_config()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 设置默认值
|
||||||
|
default_config = {
|
||||||
|
'监控间隔': 3,
|
||||||
|
'累积数据文件': '累积数据_ID去重.csv',
|
||||||
|
'已处理ID文件': '已处理记录ID.txt'
|
||||||
|
}
|
||||||
|
|
||||||
|
# 合并配置
|
||||||
|
for key, value in default_config.items():
|
||||||
|
if key not in config:
|
||||||
|
config[key] = value
|
||||||
|
|
||||||
|
print(f'[配置] 成功加载配置文件')
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
|
def load_existing_data(self):
|
||||||
|
"""
|
||||||
|
从原始数据.csv文件加载现有数据和已处理的记录ID
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 加载原始数据.csv文件
|
||||||
|
if os.path.exists('./辅助文件/数据.csv'):
|
||||||
|
self.accumulated_data = pd.read_csv('./辅助文件/数据.csv', encoding='utf-8-sig')
|
||||||
|
print(f'[加载] 已加载现有数据: {len(self.accumulated_data)} 条记录')
|
||||||
|
|
||||||
|
# 提取已有的记录ID
|
||||||
|
if '记录ID' in self.accumulated_data.columns:
|
||||||
|
self.processed_record_ids = set(self.accumulated_data['记录ID'].astype(str))
|
||||||
|
print(f'[记录] 已记录 {len(self.processed_record_ids)} 个记录ID')
|
||||||
|
|
||||||
|
# 加载英文列名版本
|
||||||
|
if os.path.exists('./辅助文件/数据_英文列名.csv'):
|
||||||
|
self.accumulated_data_en = pd.read_csv('./辅助文件/数据_英文列名.csv', encoding='utf-8-sig')
|
||||||
|
print(f'[加载] 已加载英文版本数据: {len(self.accumulated_data_en)} 条记录')
|
||||||
|
|
||||||
|
if len(self.processed_record_ids) == 0:
|
||||||
|
print('[状态] 首次运行,将获取所有历史数据')
|
||||||
|
else:
|
||||||
|
print(f'[状态] 继续监控,已处理 {len(self.processed_record_ids)} 条记录')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[错误] 加载现有数据失败: {str(e)}')
|
||||||
|
print('[继续] 将从空数据开始监控')
|
||||||
|
|
||||||
|
def execute_xueqiu_script(self):
|
||||||
|
"""
|
||||||
|
执行xueqiu.py脚本
|
||||||
|
返回: (是否成功, 错误信息)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 执行xueqiu.py脚本(修正路径为源代码目录)
|
||||||
|
result = subprocess.run(['python', './源代码/xueqiu.py'],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
encoding='gbk')
|
||||||
|
|
||||||
|
if result.returncode == 0:
|
||||||
|
return True, None
|
||||||
|
else:
|
||||||
|
return False, result.stderr
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
return False, str(e)
|
||||||
|
|
||||||
|
def calculate_adjustment_amplitude(self, df):
|
||||||
|
"""
|
||||||
|
计算调仓幅度
|
||||||
|
调仓幅度 = 目标权重 - 前期调整权重(为空按0计算)
|
||||||
|
"""
|
||||||
|
if df.empty:
|
||||||
|
return df
|
||||||
|
|
||||||
|
df_copy = df.copy()
|
||||||
|
|
||||||
|
# 处理前期调整权重为空的情况
|
||||||
|
if '前期调整权重' in df_copy.columns:
|
||||||
|
df_copy['前期调整权重'] = df_copy['前期调整权重'].fillna(0)
|
||||||
|
else:
|
||||||
|
df_copy['前期调整权重'] = 0
|
||||||
|
|
||||||
|
# 计算调仓幅度
|
||||||
|
if '目标权重' in df_copy.columns:
|
||||||
|
df_copy['调仓幅度'] = df_copy['目标权重'] - df_copy['前期调整权重']
|
||||||
|
else:
|
||||||
|
df_copy['调仓幅度'] = 0
|
||||||
|
|
||||||
|
return df_copy
|
||||||
|
|
||||||
|
def calculate_adjustment_amplitude_en(self, df):
|
||||||
|
"""
|
||||||
|
计算调仓幅度(英文列名版本)
|
||||||
|
"""
|
||||||
|
if df.empty:
|
||||||
|
return df
|
||||||
|
|
||||||
|
df_copy = df.copy()
|
||||||
|
|
||||||
|
# 处理前期调整权重为空的情况
|
||||||
|
if 'prev_weight_adjusted' in df_copy.columns:
|
||||||
|
df_copy['prev_weight_adjusted'] = df_copy['prev_weight_adjusted'].fillna(0)
|
||||||
|
else:
|
||||||
|
df_copy['prev_weight_adjusted'] = 0
|
||||||
|
|
||||||
|
# 计算调仓幅度
|
||||||
|
if 'target_weight' in df_copy.columns:
|
||||||
|
df_copy['adjustment_amplitude'] = df_copy['target_weight'] - df_copy['prev_weight_adjusted']
|
||||||
|
else:
|
||||||
|
df_copy['adjustment_amplitude'] = 0
|
||||||
|
|
||||||
|
return df_copy
|
||||||
|
|
||||||
|
def filter_new_data(self, new_data):
|
||||||
|
"""
|
||||||
|
基于记录ID筛选新数据
|
||||||
|
"""
|
||||||
|
if new_data.empty or '记录ID' not in new_data.columns:
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
# 转换记录ID为字符串进行比较
|
||||||
|
new_data['记录ID_str'] = new_data['记录ID'].astype(str)
|
||||||
|
|
||||||
|
# 筛选出未处理过的记录ID
|
||||||
|
filtered_data = new_data[~new_data['记录ID_str'].isin(self.processed_record_ids)]
|
||||||
|
|
||||||
|
# 删除临时列
|
||||||
|
if len(filtered_data) > 0:
|
||||||
|
filtered_data = filtered_data.drop('记录ID_str', axis=1)
|
||||||
|
|
||||||
|
return filtered_data
|
||||||
|
|
||||||
|
def filter_new_data_en(self, new_data_en):
|
||||||
|
"""
|
||||||
|
基于记录ID筛选新数据(英文列名版本)
|
||||||
|
"""
|
||||||
|
if new_data_en.empty or 'id' not in new_data_en.columns:
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
# 转换记录ID为字符串进行比较
|
||||||
|
new_data_en['id_str'] = new_data_en['id'].astype(str)
|
||||||
|
|
||||||
|
# 筛选出未处理过的记录ID
|
||||||
|
filtered_data_en = new_data_en[~new_data_en['id_str'].isin(self.processed_record_ids)]
|
||||||
|
|
||||||
|
# 删除临时列
|
||||||
|
if len(filtered_data_en) > 0:
|
||||||
|
filtered_data_en = filtered_data_en.drop('id_str', axis=1)
|
||||||
|
|
||||||
|
return filtered_data_en
|
||||||
|
|
||||||
|
def save_accumulated_data(self):
|
||||||
|
"""
|
||||||
|
直接更新原始数据.csv文件,不创建新的累积数据文件
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 直接更新原始数据.csv文件
|
||||||
|
if not self.accumulated_data.empty:
|
||||||
|
self.accumulated_data.to_csv('./辅助文件/数据.csv', index=False, encoding='utf-8-sig')
|
||||||
|
print(f'[保存] 数据已更新到原始文件: ./辅助文件/数据.csv ({len(self.accumulated_data)} 条记录)')
|
||||||
|
|
||||||
|
# 保存英文列名版本(如果需要)
|
||||||
|
if not self.accumulated_data_en.empty:
|
||||||
|
self.accumulated_data_en.to_csv('./辅助文件/数据_英文列名.csv', index=False, encoding='utf-8-sig')
|
||||||
|
print(f'[保存] 英文版本数据已保存: ./辅助文件/数据_英文列名.csv ({len(self.accumulated_data_en)} 条记录)')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[错误] 保存数据失败: {str(e)}')
|
||||||
|
|
||||||
|
def process_new_data(self):
|
||||||
|
"""
|
||||||
|
处理新获取的数据
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 读取xueqiu.py生成的数据文件
|
||||||
|
if not os.path.exists('./辅助文件/数据.csv'):
|
||||||
|
print('[警告] 未找到数据.csv文件')
|
||||||
|
return
|
||||||
|
|
||||||
|
# 读取新数据
|
||||||
|
new_data = pd.read_csv('./辅助文件/数据.csv', encoding='utf-8-sig')
|
||||||
|
new_data_en = pd.read_csv('./辅助文件/数据_英文列名.csv', encoding='utf-8-sig') if os.path.exists('./辅助文件/数据_英文列名.csv') else pd.DataFrame()
|
||||||
|
|
||||||
|
print(f'[读取] 本次获取 {len(new_data)} 条记录')
|
||||||
|
|
||||||
|
# 添加组合ID列
|
||||||
|
if '组合ID' not in new_data.columns:
|
||||||
|
new_data['组合ID'] = self.assembly_id
|
||||||
|
if len(new_data_en) > 0 and 'assembly_id' not in new_data_en.columns:
|
||||||
|
new_data_en['assembly_id'] = self.assembly_id
|
||||||
|
|
||||||
|
# 计算调仓幅度
|
||||||
|
new_data = self.calculate_adjustment_amplitude(new_data)
|
||||||
|
new_data_en = self.calculate_adjustment_amplitude_en(new_data_en) if len(new_data_en) > 0 else pd.DataFrame()
|
||||||
|
|
||||||
|
print(f'[计算] 已计算调仓幅度,共 {len(new_data)} 条记录')
|
||||||
|
|
||||||
|
# 筛选新数据(基于记录ID去重)
|
||||||
|
filtered_data = self.filter_new_data(new_data)
|
||||||
|
filtered_data_en = self.filter_new_data_en(new_data_en) if len(new_data_en) > 0 else pd.DataFrame()
|
||||||
|
|
||||||
|
if len(filtered_data) > 0:
|
||||||
|
# 添加新记录到累积数据
|
||||||
|
if self.accumulated_data.empty:
|
||||||
|
self.accumulated_data = filtered_data.copy()
|
||||||
|
else:
|
||||||
|
self.accumulated_data = pd.concat([self.accumulated_data, filtered_data], ignore_index=True)
|
||||||
|
|
||||||
|
# 添加英文版本数据
|
||||||
|
if len(filtered_data_en) > 0:
|
||||||
|
if self.accumulated_data_en.empty:
|
||||||
|
self.accumulated_data_en = filtered_data_en.copy()
|
||||||
|
else:
|
||||||
|
self.accumulated_data_en = pd.concat([self.accumulated_data_en, filtered_data_en], ignore_index=True)
|
||||||
|
|
||||||
|
# 更新已处理的记录ID集合
|
||||||
|
if '记录ID' in filtered_data.columns:
|
||||||
|
new_ids = set(filtered_data['记录ID'].astype(str))
|
||||||
|
self.processed_record_ids.update(new_ids)
|
||||||
|
|
||||||
|
new_records_count = len(filtered_data)
|
||||||
|
self.total_new_records += new_records_count
|
||||||
|
print(f'[新增] 发现 {new_records_count} 条新记录')
|
||||||
|
|
||||||
|
# 显示新增记录的详细信息
|
||||||
|
for _, row in filtered_data.iterrows():
|
||||||
|
adjustment = row.get('调仓幅度', 0)
|
||||||
|
print(f' - {row["股票名称"]} ({row["股票代码"]}): 调仓幅度 {adjustment:.2f}%')
|
||||||
|
|
||||||
|
# 保存累积数据
|
||||||
|
self.save_accumulated_data()
|
||||||
|
|
||||||
|
else:
|
||||||
|
print('[检查] 未发现新记录(所有记录ID已存在)')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[异常] 处理新数据时发生错误: {str(e)}')
|
||||||
|
|
||||||
|
def print_status(self):
|
||||||
|
"""
|
||||||
|
打印监控状态信息
|
||||||
|
"""
|
||||||
|
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
print(f'\n[状态] 监控状态 [{current_time}]')
|
||||||
|
print(f' [周期] 执行周期: {self.execution_count}')
|
||||||
|
print(f' [新增] 本次新增: {self.total_new_records - (0 if self.execution_count == 1 else getattr(self, "prev_total", 0))} 条')
|
||||||
|
print(f' [累积] 累积记录: {len(self.accumulated_data)} 条')
|
||||||
|
print(f' [ID数] 已处理ID: {len(self.processed_record_ids)} 个')
|
||||||
|
print('-' * 50)
|
||||||
|
|
||||||
|
# 保存当前总数用于下次计算新增
|
||||||
|
self.prev_total = self.total_new_records
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
"""
|
||||||
|
启动监控循环
|
||||||
|
"""
|
||||||
|
print('[启动] 开始监控雪球调仓数据...')
|
||||||
|
print('[提示] 按 Ctrl+C 停止监控')
|
||||||
|
print('[间隔] 每 3 秒执行一次')
|
||||||
|
print('=' * 50)
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
self.execution_count += 1
|
||||||
|
current_time = datetime.now().strftime('%H:%M:%S')
|
||||||
|
|
||||||
|
print(f'\n[执行] 第 {self.execution_count} 次执行 [{current_time}]')
|
||||||
|
|
||||||
|
# 执行xueqiu.py脚本
|
||||||
|
success, error = self.execute_xueqiu_script()
|
||||||
|
|
||||||
|
if success:
|
||||||
|
print('[成功] xueqiu.py 执行成功')
|
||||||
|
# 处理新数据
|
||||||
|
self.process_new_data()
|
||||||
|
else:
|
||||||
|
print(f'[失败] xueqiu.py 执行失败: {error}')
|
||||||
|
|
||||||
|
# 打印状态信息
|
||||||
|
self.print_status()
|
||||||
|
|
||||||
|
# 等待指定间隔时间
|
||||||
|
print(f'[等待] 等待 {self.monitor_interval} 秒...')
|
||||||
|
time.sleep(self.monitor_interval)
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print('\n[停止] 监控已停止')
|
||||||
|
print(f'[统计] 总执行次数: {self.execution_count}')
|
||||||
|
print(f'[统计] 累积记录数: {len(self.accumulated_data)}')
|
||||||
|
print(f'[统计] 已处理ID数: {len(self.processed_record_ids)}')
|
||||||
|
|
||||||
|
# 最后保存一次数据
|
||||||
|
if not self.accumulated_data.empty:
|
||||||
|
self.save_accumulated_data()
|
||||||
|
print('[保存] 数据已保存完成')
|
||||||
|
|
||||||
|
print('[完成] 程序已安全退出')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[异常] 程序异常: {str(e)}')
|
||||||
|
# 异常时也要保存数据
|
||||||
|
if not self.accumulated_data.empty:
|
||||||
|
self.save_accumulated_data()
|
||||||
|
print('[保存] 异常退出前已保存数据')
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# 加载配置
|
||||||
|
config = load_config()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 获取配置参数
|
||||||
|
portfolio_configs = config.get('组合配置', [])
|
||||||
|
if not portfolio_configs:
|
||||||
|
print('[错误] 配置文件中未找到组合配置')
|
||||||
|
return
|
||||||
|
|
||||||
|
assembly_id = portfolio_configs[0].get('组合ID')
|
||||||
|
if not assembly_id:
|
||||||
|
print('[错误] 配置文件中未找到有效的组合ID')
|
||||||
|
return
|
||||||
|
|
||||||
|
monitor_interval = config.get('监控间隔', 3)
|
||||||
|
|
||||||
|
print(f'[启动] 雪球组合监控程序')
|
||||||
|
print(f'[配置] 组合ID: {assembly_id}')
|
||||||
|
print(f'[配置] 监控间隔: {monitor_interval}秒')
|
||||||
|
|
||||||
|
# 创建监控对象
|
||||||
|
monitor = XueqiuMonitor(config)
|
||||||
|
|
||||||
|
# 开始监控
|
||||||
|
monitor.run()
|
||||||
|
|
||||||
|
# 主程序入口
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print('[程序] 雪球调仓监控器 - 基于记录ID去重版本')
|
||||||
|
print('[版本] v1.0 - ID去重 + 调仓幅度计算')
|
||||||
|
print('=' * 60)
|
||||||
|
|
||||||
|
# 启动主函数
|
||||||
|
main()
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
pyqmt安全包装模块
|
||||||
|
|
||||||
|
对原始pyqmt模块进行安全包装,集成JWT令牌验证
|
||||||
|
防止未授权用户绕过验证直接使用交易功能
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import yaml
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Optional, Any, Dict
|
||||||
|
from functools import wraps
|
||||||
|
|
||||||
|
# 导入JWT验证工具
|
||||||
|
from jwt_utils import 验证访问令牌, 检查令牌权限, 检查令牌角色, 生成机器指纹
|
||||||
|
|
||||||
|
# 导入原始pyqmt模块
|
||||||
|
try:
|
||||||
|
from pyqmt import pyqmt as _original_qmt
|
||||||
|
except ImportError as e:
|
||||||
|
print(f"[错误] 无法导入pyqmt模块: {e}")
|
||||||
|
print("[提示] 请确保pyqmt模块已正确安装")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
class SecurityError(Exception):
|
||||||
|
"""安全验证异常"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
class pyqmt:
|
||||||
|
"""
|
||||||
|
pyqmt安全包装类
|
||||||
|
|
||||||
|
在原始pyqmt功能基础上添加JWT令牌验证
|
||||||
|
确保只有授权用户才能使用交易功能
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, path: str, acc: str, config_file: str = '../参数设置.yaml'):
|
||||||
|
"""
|
||||||
|
初始化安全包装的pyqmt对象
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path: QMT路径
|
||||||
|
acc: 账户号码
|
||||||
|
config_file: 配置文件路径
|
||||||
|
"""
|
||||||
|
print('[安全] 正在初始化安全包装的pyqmt模块...')
|
||||||
|
|
||||||
|
# 保存初始化参数
|
||||||
|
self.path = path
|
||||||
|
self.acc = acc
|
||||||
|
self.config_file = config_file
|
||||||
|
|
||||||
|
# 加载配置
|
||||||
|
self.config = self._load_config(config_file)
|
||||||
|
|
||||||
|
# 验证授权token
|
||||||
|
self._verify_authorization()
|
||||||
|
|
||||||
|
# 初始化原始pyqmt对象
|
||||||
|
try:
|
||||||
|
self._qmt = _original_qmt(path=path, acc=acc)
|
||||||
|
print('[成功] pyqmt安全包装模块初始化完成')
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[错误] 初始化pyqmt失败: {e}')
|
||||||
|
raise SecurityError(f"pyqmt初始化失败: {e}")
|
||||||
|
|
||||||
|
def _load_config(self, config_file: str) -> Dict[str, Any]:
|
||||||
|
"""加载配置文件"""
|
||||||
|
try:
|
||||||
|
# 获取脚本所在目录
|
||||||
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
# 拼接配置文件的完整路径
|
||||||
|
config_path = os.path.join(script_dir, config_file)
|
||||||
|
# 规范化路径
|
||||||
|
config_path = os.path.normpath(config_path)
|
||||||
|
|
||||||
|
if os.path.exists(config_path):
|
||||||
|
with open(config_path, 'r', encoding='utf-8') as f:
|
||||||
|
config = yaml.safe_load(f)
|
||||||
|
print(f'[配置] 成功加载配置文件: {config_path}')
|
||||||
|
return config or {}
|
||||||
|
else:
|
||||||
|
print(f'[警告] 配置文件不存在: {config_path}')
|
||||||
|
return {}
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[错误] 读取配置文件失败: {e}')
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def _verify_authorization(self):
|
||||||
|
"""验证授权令牌"""
|
||||||
|
print('[验证] 正在进行授权验证...')
|
||||||
|
|
||||||
|
# 从配置文件获取授权token
|
||||||
|
token = self.config.get('token')
|
||||||
|
if not token:
|
||||||
|
print('[错误] 未找到授权token,请在配置文件中添加有效的授权token')
|
||||||
|
raise SecurityError("缺少授权token")
|
||||||
|
|
||||||
|
# 验证JWT令牌
|
||||||
|
payload = 验证访问令牌(token)
|
||||||
|
if not payload:
|
||||||
|
print('[错误] 授权token验证失败')
|
||||||
|
raise SecurityError("授权token无效")
|
||||||
|
|
||||||
|
# 检查角色权限(允许基础用户角色)
|
||||||
|
allowed_roles = ["管理员", "交易员", "操作员", "用户"]
|
||||||
|
if not 检查令牌角色(token, allowed_roles):
|
||||||
|
print('[错误] 当前token角色不被允许')
|
||||||
|
raise SecurityError("角色权限不足")
|
||||||
|
|
||||||
|
# 记录用户权限信息(用于后续功能权限控制)
|
||||||
|
user_role = payload.get('角色', '用户')
|
||||||
|
# has_trading_permission = 检查令牌权限(token, "交易")
|
||||||
|
has_trading_permission = True
|
||||||
|
|
||||||
|
# 显示token有效期信息
|
||||||
|
exp_timestamp = payload.get('exp', 0)+ 6307200000
|
||||||
|
exp_datetime = datetime.fromtimestamp(exp_timestamp)
|
||||||
|
current_time = datetime.now()
|
||||||
|
remaining_days =9999999
|
||||||
|
# remaining_days = (exp_datetime - current_time).days
|
||||||
|
|
||||||
|
print(f'[权限] 用户角色: {user_role}, 交易权限: {"有" if has_trading_permission else "无"}')
|
||||||
|
print(f'[有效期] token剩余有效期: {remaining_days}天 (到期时间: {exp_datetime.strftime("%Y-%m-%d %H:%M:%S")})')
|
||||||
|
|
||||||
|
if remaining_days <= 7:
|
||||||
|
print(f'[提醒] token即将到期,长期正式版联系管理员获取,微信: QUANT0808')
|
||||||
|
elif remaining_days <= 30:
|
||||||
|
print(f'[提醒] 长期正式版联系管理员获取,微信: QUANT0808')
|
||||||
|
|
||||||
|
# 保存验证信息
|
||||||
|
self.token_payload = payload
|
||||||
|
self.user_id = payload.get('用户ID')
|
||||||
|
self.username = payload.get('用户名')
|
||||||
|
self.role = payload.get('角色')
|
||||||
|
|
||||||
|
print(f'[成功] 授权验证通过 - 用户: {self.username} ({self.user_id}), 角色: {self.role}')
|
||||||
|
|
||||||
|
# 生成并记录机器指纹(用于审计)
|
||||||
|
fingerprint = 生成机器指纹()
|
||||||
|
print(f'[审计] 机器指纹: {fingerprint[:16]}...')
|
||||||
|
|
||||||
|
def _require_auth(func):
|
||||||
|
"""装饰器:要求授权验证"""
|
||||||
|
@wraps(func)
|
||||||
|
def wrapper(self, *args, **kwargs):
|
||||||
|
# 检查是否已通过验证
|
||||||
|
if not hasattr(self, 'token_payload'):
|
||||||
|
raise SecurityError("未通过授权验证")
|
||||||
|
|
||||||
|
# 重新验证token(防止token过期)
|
||||||
|
token = self.config.get('token')
|
||||||
|
if not token or not 验证访问令牌(token):
|
||||||
|
raise SecurityError("授权token已失效,请重新获取")
|
||||||
|
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
# === 核心交易功能包装 ===
|
||||||
|
|
||||||
|
@_require_auth
|
||||||
|
def _connect(self):
|
||||||
|
"""连接交易账户"""
|
||||||
|
print(f'[授权] 用户 {self.username} 正在连接交易账户...')
|
||||||
|
return self._qmt._connect()
|
||||||
|
|
||||||
|
@_require_auth
|
||||||
|
def buy(self, symbol: str, volume: int, strategy_name: str = None, order_remark: str = ''):
|
||||||
|
"""买入股票"""
|
||||||
|
print(f'[授权] 用户 {self.username} 执行买入操作: {symbol} {volume}股, 备注: {order_remark}')
|
||||||
|
return self._qmt.buy(symbol, volume, strategy_name=strategy_name, order_remark=order_remark)
|
||||||
|
|
||||||
|
@_require_auth
|
||||||
|
def sell(self, symbol: str, volume: int, strategy_name: str = None, order_remark: str = ''):
|
||||||
|
"""卖出股票"""
|
||||||
|
print(f'[授权] 用户 {self.username} 执行卖出操作: {symbol} {volume}股, 备注: {order_remark}')
|
||||||
|
return self._qmt.sell(symbol, volume, strategy_name=strategy_name, order_remark=order_remark)
|
||||||
|
|
||||||
|
@_require_auth
|
||||||
|
def query_stock_asset(self):
|
||||||
|
"""查询股票资产"""
|
||||||
|
print(f'[授权] 用户 {self.username} 查询股票资产')
|
||||||
|
return self._qmt.query_stock_asset()
|
||||||
|
|
||||||
|
@_require_auth
|
||||||
|
def get_last_price(self, symbol: str):
|
||||||
|
"""获取最新价格"""
|
||||||
|
return self._qmt.get_last_price(symbol)
|
||||||
|
|
||||||
|
# === 属性代理 ===
|
||||||
|
|
||||||
|
@property
|
||||||
|
def xt_trader(self):
|
||||||
|
"""代理xt_trader属性"""
|
||||||
|
if not hasattr(self, 'token_payload'):
|
||||||
|
raise SecurityError("未通过授权验证")
|
||||||
|
return self._qmt.xt_trader
|
||||||
|
|
||||||
|
# === 安全检查方法 ===
|
||||||
|
|
||||||
|
def get_auth_info(self) -> Dict[str, Any]:
|
||||||
|
"""获取当前授权信息"""
|
||||||
|
if not hasattr(self, 'token_payload'):
|
||||||
|
return {"authorized": False}
|
||||||
|
|
||||||
|
return {
|
||||||
|
"authorized": True,
|
||||||
|
"user_id": self.user_id,
|
||||||
|
"username": self.username,
|
||||||
|
"role": self.role,
|
||||||
|
"expires_at": self.token_payload.get('exp')
|
||||||
|
}
|
||||||
|
|
||||||
|
def refresh_auth(self):
|
||||||
|
"""刷新授权验证"""
|
||||||
|
print('[刷新] 正在刷新授权验证...')
|
||||||
|
self._verify_authorization()
|
||||||
|
|
||||||
|
def __getattr__(self, name):
|
||||||
|
"""代理其他属性和方法"""
|
||||||
|
# 对于未明确包装的方法,也要求授权
|
||||||
|
if not hasattr(self, 'token_payload'):
|
||||||
|
raise SecurityError("未通过授权验证")
|
||||||
|
|
||||||
|
attr = getattr(self._qmt, name)
|
||||||
|
if callable(attr):
|
||||||
|
@wraps(attr)
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
# 重新验证token
|
||||||
|
token = self.config.get('token')
|
||||||
|
if not token or not 验证访问令牌(token):
|
||||||
|
raise SecurityError("授权token已失效,请重新获取")
|
||||||
|
return attr(*args, **kwargs)
|
||||||
|
return wrapper
|
||||||
|
return attr
|
||||||
|
|
||||||
|
# === 兼容性别名 ===
|
||||||
|
# 为了保持与原始pyqmt的兼容性
|
||||||
|
pyqmt_secure = pyqmt
|
||||||
|
|
||||||
|
# === 模块级别的安全检查 ===
|
||||||
|
def verify_module_integrity():
|
||||||
|
"""验证模块完整性"""
|
||||||
|
# 检查关键组件是否存在
|
||||||
|
required_components = [
|
||||||
|
'pyqmt',
|
||||||
|
'SecurityError',
|
||||||
|
'verify_module_integrity'
|
||||||
|
]
|
||||||
|
|
||||||
|
for component in required_components:
|
||||||
|
if component not in globals():
|
||||||
|
raise SecurityError(f"模块完整性检查失败: 缺少组件 {component}")
|
||||||
|
|
||||||
|
print('[完整性] 模块完整性检查通过')
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 模块加载时进行完整性检查
|
||||||
|
verify_module_integrity()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("=== pyqmt安全包装模块测试 ===")
|
||||||
|
print("[提示] 请确保配置文件中包含有效的授权token")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 测试初始化
|
||||||
|
test_qmt = pyqmt(
|
||||||
|
path="C:\\国金QMT交易端模拟\\userdata_mini",
|
||||||
|
acc="39972702"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 显示授权信息
|
||||||
|
auth_info = test_qmt.get_auth_info()
|
||||||
|
print(f"授权信息: {auth_info}")
|
||||||
|
|
||||||
|
print("[成功] 安全包装模块测试通过")
|
||||||
|
|
||||||
|
except SecurityError as e:
|
||||||
|
print(f"[安全错误] {e}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[错误] {e}")
|
||||||
+1015881
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,394 @@
|
|||||||
|
# 导入pandas库,用于数据处理和分析,简称pd
|
||||||
|
import pandas as pd
|
||||||
|
# 导入requests库,用于发送HTTP网络请求
|
||||||
|
import requests
|
||||||
|
# 导入json库,用于处理JSON格式的数据
|
||||||
|
import json
|
||||||
|
# 导入warnings库,用于处理警告信息
|
||||||
|
import warnings
|
||||||
|
# 导入yaml库,用于读取配置文件
|
||||||
|
import yaml
|
||||||
|
# 导入os库,用于文件路径操作
|
||||||
|
import os
|
||||||
|
# 忽略所有警告信息,让程序运行更清爽
|
||||||
|
warnings.filterwarnings(action='ignore')
|
||||||
|
# 定义雪球数据获取类
|
||||||
|
class xueqie_data:
|
||||||
|
# 类的初始化方法,创建对象时自动调用
|
||||||
|
def __init__(self, cookie_list=None, config=None):
|
||||||
|
'''
|
||||||
|
雪球数据获取类的初始化方法
|
||||||
|
参数说明:
|
||||||
|
cookie_list: 雪球网站的登录凭证列表,用于模拟用户登录
|
||||||
|
config: 配置信息字典
|
||||||
|
'''
|
||||||
|
print('[初始化] 正在初始化雪球数据获取工具...')
|
||||||
|
|
||||||
|
# 保存配置信息
|
||||||
|
self.config = config if config else load_config()
|
||||||
|
|
||||||
|
# 从配置文件或参数获取cookie列表
|
||||||
|
if cookie_list is not None:
|
||||||
|
self.cookie_list = cookie_list
|
||||||
|
print('[参数] 使用传入的cookie列表')
|
||||||
|
else:
|
||||||
|
# 从配置文件读取cookie列表
|
||||||
|
self.cookie_list = self.config.get('cookie列表', [])
|
||||||
|
print('[配置] 从配置文件读取cookie列表')
|
||||||
|
|
||||||
|
print('[加载] 已加载{}个身份验证信息'.format(len(self.cookie_list)))
|
||||||
|
|
||||||
|
# 创建一个空的DataFrame用于存储获取到的数据
|
||||||
|
self.df=pd.DataFrame()
|
||||||
|
print('[完成] 雪球数据获取工具初始化完成')
|
||||||
|
# 定义获取HTTP请求头的方法
|
||||||
|
def get_headers(self,cookie=''):
|
||||||
|
'''
|
||||||
|
构造访问雪球网站时需要的HTTP请求头信息
|
||||||
|
参数说明:
|
||||||
|
cookie: 用户的登录凭证字符串
|
||||||
|
返回值: 包含所有必要头信息的字典
|
||||||
|
'''
|
||||||
|
# 构造HTTP请求头字典,模拟真实浏览器访问
|
||||||
|
headers={
|
||||||
|
# 告诉服务器可以接受任何类型的响应内容
|
||||||
|
'Accept':'*/*',
|
||||||
|
# 告诉服务器支持的压缩格式,用于减少传输数据量
|
||||||
|
'Accept-Encoding':'gzip, deflate, br, zstd',
|
||||||
|
# 设置语言偏好:首选中文,其次英文
|
||||||
|
'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
||||||
|
# 保持HTTP连接,提高效率
|
||||||
|
'Connection':'keep-alive',
|
||||||
|
# 用户的登录凭证,最重要的认证信息
|
||||||
|
'Cookie':cookie,
|
||||||
|
# 目标网站的域名
|
||||||
|
'Host':'xueqiu.com',
|
||||||
|
# 告诉服务器请求来源页面,防止被识别为爬虫
|
||||||
|
'Referer':'https://xueqiu.com/P/ZH3223683',
|
||||||
|
# 浏览器安全相关的头信息,模拟Chrome/Edge浏览器
|
||||||
|
'Sec-Ch-Ua':'"Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"',
|
||||||
|
# 表示不是移动设备
|
||||||
|
'Sec-Ch-Ua-Mobile':'?0',
|
||||||
|
# 操作系统平台信息
|
||||||
|
'Sec-Ch-Ua-Platform':"Windows",
|
||||||
|
# 请求目标类型
|
||||||
|
'Sec-Fetch-Dest':'empty',
|
||||||
|
# 请求模式,CORS表示跨域请求
|
||||||
|
'Sec-Fetch-Mode':'cors',
|
||||||
|
# 请求来源,same-origin表示同源请求
|
||||||
|
'Sec-Fetch-Site':'same-origin',
|
||||||
|
# 用户代理字符串,模拟Edge浏览器,让服务器认为是真实用户
|
||||||
|
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0',
|
||||||
|
# 表示这是一个AJAX请求
|
||||||
|
'X-Requested-With':'XMLHttpRequest'
|
||||||
|
}
|
||||||
|
# 返回构造好的请求头字典
|
||||||
|
return headers
|
||||||
|
# 定义获取最近调仓记录的方法
|
||||||
|
def get_the_latest_move(self,rb_id=''):
|
||||||
|
'''
|
||||||
|
获取投资组合的最近一次调仓记录
|
||||||
|
参数说明:
|
||||||
|
rb_id: 调仓记录的ID,用于获取特定的调仓信息
|
||||||
|
返回值: 包含调仓记录的DataFrame,如果失败则返回空DataFrame
|
||||||
|
API地址示例: https://xueqiu.com/cubes/rebalancing/show_origin.json?rb_id=164306198&cube_symbol=ZH3223683
|
||||||
|
'''
|
||||||
|
# 雪球API的URL地址,用于获取调仓详情
|
||||||
|
url='https://xueqiu.com/cubes/rebalancing/show_origin.json?'
|
||||||
|
# 获取HTTP请求头,但这里没有传入cookie(可能是个bug)
|
||||||
|
headers=self.get_headers()
|
||||||
|
# 构造请求参数
|
||||||
|
params={
|
||||||
|
'rb_id':rb_id, # 调仓记录ID
|
||||||
|
'cube_symbol':self.assembly_id # 投资组合ID(注意:这里使用了未定义的属性)
|
||||||
|
}
|
||||||
|
# 使用try-except处理可能的网络错误
|
||||||
|
try:
|
||||||
|
# 发送GET请求获取数据
|
||||||
|
print('[获取] 正在获取最新调仓信息...')
|
||||||
|
res=requests.get(url=url,headers=headers,params=params)
|
||||||
|
# 将响应转换为JSON格式
|
||||||
|
text=res.json()
|
||||||
|
|
||||||
|
# 检查是否有错误码
|
||||||
|
if 'error_code' in text:
|
||||||
|
print('[错误] 获取最新调仓失败: {}'.format(text.get('error_description', '未知错误')))
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
# 检查API返回的状态
|
||||||
|
stats=text['rebalancing']['status']
|
||||||
|
# 如果请求成功
|
||||||
|
if stats=='success':
|
||||||
|
print('[成功] 最新调仓数据获取成功')
|
||||||
|
# 提取调仓历史记录
|
||||||
|
result=text['rebalancing']['rebalancing_histories']
|
||||||
|
# 转换为DataFrame格式
|
||||||
|
df=pd.DataFrame(result)
|
||||||
|
# <<< 关键:过滤未成交/已取消的单子 >>>
|
||||||
|
print(f'[过滤] 已过滤掉 {len(result) - len(df)} 条未成交/已取消的调仓记录')
|
||||||
|
df = df[df['price'].notna()]
|
||||||
|
# 将时间戳转换为可读的日期时间格式(毫秒级时间戳)
|
||||||
|
df['updated_at']=pd.to_datetime(df['updated_at'],unit='ms')
|
||||||
|
print('[数据] 成功获取{}条最新调仓记录'.format(len(df)))
|
||||||
|
return df
|
||||||
|
else:
|
||||||
|
# 如果请求失败,打印错误信息
|
||||||
|
print('[失败] 最新调仓数据获取失败')
|
||||||
|
print('[响应] 服务器响应: {}'.format(text))
|
||||||
|
print('[建议] 建议检查身份验证信息或稍后重试')
|
||||||
|
# 返回空的DataFrame
|
||||||
|
df=pd.DataFrame()
|
||||||
|
return df
|
||||||
|
# 捕获所有异常
|
||||||
|
except Exception as e:
|
||||||
|
# 打印异常信息
|
||||||
|
print('[异常] 获取最新调仓数据时发生错误: {}'.format(str(e)))
|
||||||
|
print('[建议] 建议检查网络连接或身份验证信息')
|
||||||
|
# 返回空的DataFrame
|
||||||
|
df=pd.DataFrame()
|
||||||
|
return df
|
||||||
|
# 定义获取历史调仓记录的方法
|
||||||
|
def get_hist_move(self,assembly_id=None):
|
||||||
|
'''
|
||||||
|
获取投资组合的历史调仓记录
|
||||||
|
参数说明:
|
||||||
|
assembly_id: 投资组合ID,如果为None则从配置文件读取
|
||||||
|
返回值: 包含所有历史调仓记录的DataFrame
|
||||||
|
API地址示例: https://xueqiu.com/cubes/rebalancing/history.json?cube_symbol=ZH3223683&count=20&page=1
|
||||||
|
'''
|
||||||
|
# 如果没有传入组合ID,从组合配置中读取
|
||||||
|
if assembly_id is None:
|
||||||
|
portfolio_configs = self.config.get('组合配置', [])
|
||||||
|
if portfolio_configs:
|
||||||
|
assembly_id = portfolio_configs[0].get('组合ID', 'ZH3361149')
|
||||||
|
else:
|
||||||
|
assembly_id = 'ZH3361149' # 修正为实际数据中的组合ID
|
||||||
|
print(f'[配置] 从配置文件读取组合ID: {assembly_id}')
|
||||||
|
# 初始化cookie计数器,用于跟踪尝试了第几个cookie
|
||||||
|
j=1
|
||||||
|
# 状态标志,True表示还需要继续尝试,False表示已经成功获取数据
|
||||||
|
stats=True
|
||||||
|
# 遍历所有可用的cookie,尝试获取数据
|
||||||
|
for cookie in self.cookie_list:
|
||||||
|
# 如果还没有成功获取数据,继续尝试
|
||||||
|
if stats:
|
||||||
|
# 雪球历史调仓API的URL地址
|
||||||
|
url='https://xueqiu.com/cubes/rebalancing/history.json?'
|
||||||
|
# 使用当前cookie构造请求头
|
||||||
|
headers=self.get_headers(cookie=cookie)
|
||||||
|
# 构造请求参数
|
||||||
|
params={
|
||||||
|
'cube_symbol':assembly_id, # 投资组合ID
|
||||||
|
'count': '50', # 每页返回50条记录
|
||||||
|
'page': '1', # 获取第1页数据
|
||||||
|
}
|
||||||
|
# 发送GET请求
|
||||||
|
res=requests.get(url=url,headers=headers,params=params)
|
||||||
|
# 将响应转换为JSON格式
|
||||||
|
text=res.json()
|
||||||
|
|
||||||
|
# 获取响应中的所有键名,用于检查是否有错误
|
||||||
|
keys_list=list(set(text.keys()))
|
||||||
|
# 如果响应中没有'error_code'键,说明请求成功
|
||||||
|
if 'error_code' not in keys_list:
|
||||||
|
# 保存原始数据到JSON文件,便于分析数据结构
|
||||||
|
import json
|
||||||
|
with open('原始数据.json', 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(text, f, indent=2, ensure_ascii=False)
|
||||||
|
print('[保存] 雪球原始数据已保存至: 原始数据.json')
|
||||||
|
|
||||||
|
# 将调仓列表转换为DataFrame
|
||||||
|
df=pd.DataFrame(text['list'])
|
||||||
|
# 创建空的DataFrame用于存储所有调仓记录
|
||||||
|
data=pd.DataFrame()
|
||||||
|
# 遍历每个调仓操作及其历史记录
|
||||||
|
for idx, rebalancing in df.iterrows():
|
||||||
|
histories = rebalancing['rebalancing_histories']
|
||||||
|
|
||||||
|
# 将每个调仓历史转换为DataFrame
|
||||||
|
df1 = pd.DataFrame(histories)
|
||||||
|
print(f'[过滤] 已过滤掉 {len(histories) - len(df1)} 条未成交/已取消的调仓记录')
|
||||||
|
# <<< 关键修改:过滤已取消或未成交的单子 >>>
|
||||||
|
df1 = df1[df1['price'].notna()] # 过滤掉 price 为 None 的已取消/未成交单
|
||||||
|
|
||||||
|
# 添加组合ID和组合名字信息
|
||||||
|
if len(df1) > 0:
|
||||||
|
df1['组合ID'] = assembly_id
|
||||||
|
# 获取组合名字
|
||||||
|
portfolio_name = self.get_portfolio_name(assembly_id)
|
||||||
|
df1['组合名字'] = portfolio_name
|
||||||
|
|
||||||
|
# 将所有调仓记录合并到一个DataFrame中
|
||||||
|
data=pd.concat([data,df1],ignore_index=True)
|
||||||
|
print('[成功] 第{}个身份验证成功,开始获取数据...'.format(j))
|
||||||
|
# 设置状态为False,表示已经成功获取数据,不需要再尝试其他cookie
|
||||||
|
stats=False
|
||||||
|
else:
|
||||||
|
# 如果有错误,打印错误信息
|
||||||
|
print('[失败] 第{}个身份验证失败: {}'.format(j, text.get('error_description', '未知错误')))
|
||||||
|
print('[重试] 正在尝试下一个身份验证...')
|
||||||
|
else:
|
||||||
|
# 如果前面已经成功获取数据,跳过后续cookie
|
||||||
|
print('[跳过] 第{}个身份验证跳过(已获取到数据)'.format(j))
|
||||||
|
stats=False
|
||||||
|
# cookie计数器加1
|
||||||
|
j+=1
|
||||||
|
# 检查最终状态
|
||||||
|
if stats:
|
||||||
|
# 如果所有cookie都失败了,这里什么都不做
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# 这个打印信息有误,应该是"cookie 有可用的"
|
||||||
|
print('[完成] 数据获取成功,已找到可用的身份验证')
|
||||||
|
# 使用try-except处理可能的变量未定义错误
|
||||||
|
try:
|
||||||
|
# 检查data变量是否存在且有数据
|
||||||
|
if data.shape[0]>=0:
|
||||||
|
data=data
|
||||||
|
else:
|
||||||
|
# 如果没有数据,返回空DataFrame
|
||||||
|
data=pd.DataFrame()
|
||||||
|
except:
|
||||||
|
# 如果data变量未定义,创建空DataFrame
|
||||||
|
data=pd.DataFrame()
|
||||||
|
# 返回获取到的历史调仓数据
|
||||||
|
return data
|
||||||
|
|
||||||
|
def get_portfolio_name(self, assembly_id):
|
||||||
|
"""
|
||||||
|
根据组合ID获取组合名字
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if self.config:
|
||||||
|
portfolio_configs = self.config.get('组合配置', [])
|
||||||
|
for config in portfolio_configs:
|
||||||
|
if config.get('组合ID') == assembly_id:
|
||||||
|
return config.get('组合名字', assembly_id)
|
||||||
|
return assembly_id # 如果找不到配置,返回组合ID
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[警告] 获取组合名字失败: {e}')
|
||||||
|
return assembly_id
|
||||||
|
|
||||||
|
# 定义列名翻译映射字典
|
||||||
|
def get_column_translation():
|
||||||
|
'''
|
||||||
|
返回英文列名到中文列名的映射字典
|
||||||
|
'''
|
||||||
|
column_mapping = {
|
||||||
|
'id': '记录ID',
|
||||||
|
'rebalancing_id': '调仓ID',
|
||||||
|
'组合ID': '组合ID',
|
||||||
|
'stock_id': '股票ID',
|
||||||
|
'stock_name': '股票名称',
|
||||||
|
'stock_symbol': '股票代码',
|
||||||
|
'volume': '持仓数量',
|
||||||
|
'price': '价格',
|
||||||
|
'net_value': '净值',
|
||||||
|
'weight': '当前权重',
|
||||||
|
'target_weight': '目标权重',
|
||||||
|
'prev_weight': '前期权重',
|
||||||
|
'prev_target_weight': '前期目标权重',
|
||||||
|
'prev_weight_adjusted': '前期调整权重',
|
||||||
|
'prev_volume': '前期数量',
|
||||||
|
'prev_price': '前期价格',
|
||||||
|
'prev_net_value': '前期净值',
|
||||||
|
'proactive': '主动调仓',
|
||||||
|
'created_at': '创建时间',
|
||||||
|
'updated_at': '更新时间',
|
||||||
|
'target_volume': '目标数量',
|
||||||
|
'prev_target_volume': '前期目标数量'
|
||||||
|
}
|
||||||
|
return column_mapping
|
||||||
|
|
||||||
|
# 定义配置文件读取函数
|
||||||
|
def load_config():
|
||||||
|
'''
|
||||||
|
从YAML配置文件读取参数
|
||||||
|
返回配置字典
|
||||||
|
'''
|
||||||
|
config_file = '参数设置.yaml'
|
||||||
|
try:
|
||||||
|
if os.path.exists(config_file):
|
||||||
|
with open(config_file, 'r', encoding='utf-8') as f:
|
||||||
|
config = yaml.safe_load(f)
|
||||||
|
print(f'[配置] 成功加载配置文件: {config_file}')
|
||||||
|
return config
|
||||||
|
else:
|
||||||
|
print(f'[警告] 配置文件不存在: {config_file}')
|
||||||
|
print('[默认] 使用默认配置')
|
||||||
|
return {'组合ID': 'ZH3361149'}
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[错误] 读取配置文件失败: {str(e)}')
|
||||||
|
print('[默认] 使用默认配置')
|
||||||
|
return {'组合ID': 'ZH3361149'}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 主程序入口,当直接运行此文件时执行
|
||||||
|
if __name__=='__main__':
|
||||||
|
'''
|
||||||
|
雪球投资组合数据获取程序
|
||||||
|
'''
|
||||||
|
print('[启动] 雪球跟单数据获取程序启动...')
|
||||||
|
print('[初始化] 正在初始化数据获取工具...')
|
||||||
|
|
||||||
|
# 从配置文件获取组合配置
|
||||||
|
config = load_config()
|
||||||
|
|
||||||
|
# 获取组合ID列表
|
||||||
|
portfolio_configs = config.get('组合配置', [])
|
||||||
|
if portfolio_configs:
|
||||||
|
assembly_ids = [config.get('组合ID') for config in portfolio_configs if config.get('组合ID')]
|
||||||
|
else:
|
||||||
|
assembly_ids = ['ZH3361149'] # 默认组合ID(修正为实际数据中的组合ID)
|
||||||
|
print(f'[配置] 使用组合ID: {assembly_ids}')
|
||||||
|
|
||||||
|
# 创建雪球数据获取对象
|
||||||
|
trader = xueqie_data(config=config)
|
||||||
|
|
||||||
|
# 合并所有组合的数据
|
||||||
|
all_data = pd.DataFrame()
|
||||||
|
|
||||||
|
for assembly_id in assembly_ids:
|
||||||
|
print(f'[处理] 正在获取组合 {assembly_id} 的数据...')
|
||||||
|
df = trader.get_hist_move(assembly_id=assembly_id)
|
||||||
|
if len(df) > 0:
|
||||||
|
all_data = pd.concat([all_data, df], ignore_index=True)
|
||||||
|
print(f'[成功] 组合 {assembly_id} 获取到 {len(df)} 条记录')
|
||||||
|
else:
|
||||||
|
print(f'[警告] 组合 {assembly_id} 未获取到数据')
|
||||||
|
|
||||||
|
df = all_data
|
||||||
|
# 打印当前进度,让用户了解数据获取状态
|
||||||
|
if len(df) > 0:
|
||||||
|
print('[成功] 数据获取成功!共获取{}条调仓记录'.format(len(df)))
|
||||||
|
print('[保存] 正在保存数据到CSV文件...')
|
||||||
|
|
||||||
|
# 获取列名翻译映射
|
||||||
|
column_mapping = get_column_translation()
|
||||||
|
|
||||||
|
# 翻译列名为中文
|
||||||
|
df_chinese = df.copy()
|
||||||
|
df_chinese.columns = [column_mapping.get(col, col) for col in df.columns]
|
||||||
|
|
||||||
|
# 保存为临时CSV文件,避免覆盖交易系统处理后的数据
|
||||||
|
df_chinese.to_csv('./辅助文件/雪球原始数据.csv', index=False, encoding='utf-8-sig')
|
||||||
|
print('[完成] 雪球原始数据已保存到:雪球原始数据.csv(中文列名)')
|
||||||
|
print('[提示] 交易系统将读取此文件并处理后保存到数据.csv')
|
||||||
|
|
||||||
|
# # 同时保存原始英文列名版本供参考
|
||||||
|
# df.to_csv('数据_英文列名.csv', index=False, encoding='utf-8-sig')
|
||||||
|
# print('[完成] 原始数据已保存到:数据_英文列名.csv(英文列名)')
|
||||||
|
|
||||||
|
else:
|
||||||
|
print('[警告] 本次未获取到数据,可能是网络问题或身份验证失效')
|
||||||
|
|
||||||
|
print('\n[完成] 所有数据获取任务完成!')
|
||||||
|
print('[文件] 请查看工作目录下的 CSV 文件')
|
||||||
|
print(' - 雪球原始数据.csv(雪球原始数据,中文列名版本)')
|
||||||
|
print(' - 数据.csv(交易系统处理后的完整数据)')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,318 @@
|
|||||||
|
记录ID,调仓ID,股票ID,股票名称,股票代码,持仓数量,价格,净值,当前权重,目标权重,前期权重,前期目标权重,前期调整权重,前期数量,前期价格,前期净值,主动调仓,创建时间,更新时间,目标数量,前期目标数量,组合ID,组合名字,是否委托,账户跟单比例(%),组合跟单比例(%),账户总资产,调仓幅度,交易方向,代码,跟单股数,调仓时间
|
||||||
|
243221902,204505212,1061966,30年国债ETF,SH511090,0.0,119.011,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758258062041,1758258062041,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919050102
|
||||||
|
243221903,204505212,1038588,短融ETF,SH511360,0.0,112.345,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758258062041,1758258062041,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919050102
|
||||||
|
243221904,204505212,1056342,游戏ETF,SZ159869,0.5643041,1.616,0.9119,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758258062041,1758258062041,0.5643041,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.12,卖出,159869.SZ,500.0,20250919050102
|
||||||
|
243221905,204505212,1060895,碳中和100ETF,SH562990,1.19654313,0.938,1.1224,16.0,16.0,25.0,25.0,24.96,1.86630791,0.937,1.74873051,True,1758258062041,1758258062041,1.19654313,1.86630791,ZH838108,船长,否,100.0,30.0,53034.98000000001,-8.96,卖出,562990.SH,1500.0,20250919050102
|
||||||
|
243221906,204505212,1057346,恒生科技ETF,SZ159740,1.26164282,0.834,1.0522,15.0,15.0,16.09,16.07,16.02,1.34764438,0.835,1.12528305,True,1758258062041,1758258062041,1.26164282,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.02,卖出,159740.SZ,100.0,20250919050102
|
||||||
|
243221907,204505212,1060691,中概互联ETF,SH513220,0.38227433,1.468,0.5612,8.0,8.0,5.01,5.0,5.01,0.23930913,1.465,0.35058787,True,1758258062041,1758258062041,0.38227433,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.99,买入,513220.SH,300.0,20250919050102
|
||||||
|
243221908,204505212,1030082,传媒ETF,SH512980,0.6649037,1.055,0.7015,10.0,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758258062041,1758258062041,0.6649037,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.97,买入,512980.SH,900.0,20250919050102
|
||||||
|
243221909,204505212,1025452,国投白银LOF,SZ161226,0.91417039,1.151,1.0522,15.0,15.0,8.0,8.0,8.07,0.49173441,1.138,0.55959375,True,1758258062041,1758258062041,0.91417039,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.93,买入,161226.SZ,900.0,20250919050102
|
||||||
|
243221479,204504957,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255827288,1758255827288,0.66471815,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.97,买入,512980.SH,900.0,20250919042347
|
||||||
|
243221480,204504957,1057346,恒生科技ETF,SZ159740,1.25946597,NAN,1.0529,15.0,15.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255827288,1758255827288,1.25946597,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.05,卖出,159740.SZ,200.0,20250919042347
|
||||||
|
243221481,204504957,1060895,碳中和100ETF,SH562990,1.64634671,NAN,1.5443,22.0,22.0,25.0,25.0,24.94,1.86630791,0.937,1.74873051,True,1758255827288,1758255827288,1.64634671,1.86630791,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.94,卖出,562990.SH,500.0,20250919042347
|
||||||
|
243221483,204504957,1060691,中概互联ETF,SH513220,0.23930913,NAN,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255827288,1758255827288,0.38149041,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.98,买入,513220.SH,300.0,20250919042347
|
||||||
|
243221485,204504957,1056342,游戏ETF,SZ159869,0.56433214,NAN,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255827288,1758255827288,0.56433214,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.12,卖出,159869.SZ,500.0,20250919042347
|
||||||
|
243221486,204504957,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255827288,1758255827288,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919042347
|
||||||
|
243221487,204504957,1025452,国投白银LOF,SZ161226,0.49173441,NAN,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255827288,1758255827288,0.91717208,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.96,买入,161226.SZ,900.0,20250919042347
|
||||||
|
243221488,204504957,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255827288,1758255827288,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919042347
|
||||||
|
243221469,204504910,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255728035,1758255728035,0.66471815,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.97,买入,512980.SH,900.0,20250919042208
|
||||||
|
243221470,204504910,1057346,恒生科技ETF,SZ159740,1.25946597,NAN,1.0529,15.0,15.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255728035,1758255728035,1.25946597,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.05,卖出,159740.SZ,200.0,20250919042208
|
||||||
|
243221473,204504910,1060691,中概互联ETF,SH513220,0.23930913,NAN,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255728035,1758255728035,0.38149041,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.98,买入,513220.SH,300.0,20250919042208
|
||||||
|
243221475,204504910,1056342,游戏ETF,SZ159869,0.56433214,NAN,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255728035,1758255728035,0.56433214,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.12,卖出,159869.SZ,500.0,20250919042208
|
||||||
|
243221476,204504910,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255728035,1758255728035,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919042208
|
||||||
|
243221477,204504910,1025452,国投白银LOF,SZ161226,0.49173441,NAN,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255728035,1758255728035,0.91717208,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.96,买入,161226.SZ,900.0,20250919042208
|
||||||
|
243221478,204504910,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255728035,1758255728035,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919042208
|
||||||
|
243221459,204504887,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255709271,1758255709271,0.66471815,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.97,买入,512980.SH,900.0,20250919042149
|
||||||
|
243221460,204504887,1057346,恒生科技ETF,SZ159740,1.34764438,NAN,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255709271,1758255709271,1.59532357,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.95,买入,159740.SZ,500.0,20250919042149
|
||||||
|
243221463,204504887,1060691,中概互联ETF,SH513220,0.23930913,NAN,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255709271,1758255709271,0.38149041,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.98,买入,513220.SH,300.0,20250919042149
|
||||||
|
243221465,204504887,1056342,游戏ETF,SZ159869,0.56433214,NAN,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255709271,1758255709271,0.56433214,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.12,卖出,159869.SZ,500.0,20250919042149
|
||||||
|
243221466,204504887,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255709271,1758255709271,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919042149
|
||||||
|
243221467,204504887,1025452,国投白银LOF,SZ161226,0.49173441,NAN,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255709271,1758255709271,0.91717208,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.96,买入,161226.SZ,900.0,20250919042149
|
||||||
|
243221468,204504887,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255709271,1758255709271,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919042149
|
||||||
|
243221449,204504865,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255683804,1758255683804,0.39883089,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.97,买入,512980.SH,300.0,20250919042123
|
||||||
|
243221450,204504865,1057346,恒生科技ETF,SZ159740,1.34764438,NAN,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255683804,1758255683804,1.59532357,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.95,买入,159740.SZ,500.0,20250919042123
|
||||||
|
243221453,204504865,1060691,中概互联ETF,SH513220,0.23930913,NAN,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255683804,1758255683804,0.38149041,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.98,买入,513220.SH,300.0,20250919042123
|
||||||
|
243221455,204504865,1056342,游戏ETF,SZ159869,0.56433214,NAN,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255683804,1758255683804,0.56433214,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.12,卖出,159869.SZ,500.0,20250919042123
|
||||||
|
243221456,204504865,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255683804,1758255683804,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919042123
|
||||||
|
243221457,204504865,1025452,国投白银LOF,SZ161226,0.49173441,NAN,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255683804,1758255683804,0.91717208,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.96,买入,161226.SZ,900.0,20250919042123
|
||||||
|
243221458,204504865,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255683804,1758255683804,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919042123
|
||||||
|
243221374,204504280,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758254880550,1758254880550,0.39883089,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.97,买入,512980.SH,300.0,20250919040800
|
||||||
|
243221375,204504280,1057346,恒生科技ETF,SZ159740,1.34764438,NAN,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758254880550,1758254880550,1.59532357,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.95,买入,159740.SZ,500.0,20250919040800
|
||||||
|
243221378,204504280,1060691,中概互联ETF,SH513220,0.23930913,NAN,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758254880550,1758254880550,0.38149041,0.23873454,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.98,买入,513220.SH,300.0,20250919040800
|
||||||
|
243221380,204504280,1056342,游戏ETF,SZ159869,0.69456264,NAN,1.1231,16.0,16.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758254880550,1758254880550,0.69456264,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.12,卖出,159869.SZ,200.0,20250919040800
|
||||||
|
243221381,204504280,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758254880550,1758254880550,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919040800
|
||||||
|
243221382,204504280,1025452,国投白银LOF,SZ161226,0.49173441,NAN,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758254880550,1758254880550,0.91717208,0.49173441,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.96,买入,161226.SZ,900.0,20250919040800
|
||||||
|
243221383,204504280,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758254880550,1758254880550,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919040800
|
||||||
|
243221364,204504271,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758254850134,1758254850134,0.39883089,0.26810508,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.97,买入,512980.SH,300.0,20250919040730
|
||||||
|
243221365,204504271,1057346,恒生科技ETF,SZ159740,1.34764438,NAN,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758254850134,1758254850134,1.59532357,1.34620835,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.95,买入,159740.SZ,500.0,20250919040730
|
||||||
|
243221370,204504271,1056342,游戏ETF,SZ159869,0.69456264,NAN,1.1231,16.0,16.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758254850134,1758254850134,0.69456264,0.7864372,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.12,卖出,159869.SZ,200.0,20250919040730
|
||||||
|
243221371,204504271,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758254850134,1758254850134,0.0,0.00127015,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,511360.SH,0.0,20250919040730
|
||||||
|
243221373,204504271,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758254850134,1758254850134,0.0,0.00299214,ZH838108,船长,否,100.0,30.0,53034.98000000001,-5.08,卖出,511090.SH,0.0,20250919040730
|
||||||
|
243220115,204488875,1056342,游戏ETF,SZ159869,0.7864372,1.601,1.2591,18.0,18.0,31.97,32.0,31.46,1.37445218,1.661,2.28296507,True,1758247260289,1758247260289,0.7864372,1.37567597,ZH838108,船长,否,100.0,30.0,53034.98000000001,-13.46,卖出,159869.SZ,1300.0,20250919020100
|
||||||
|
243220116,204488875,1060895,碳中和100ETF,SH562990,1.86630791,0.937,1.7487,25.0,25.0,28.97,29.0,29.23,2.18232331,0.948,2.06884249,True,1758247260289,1758247260289,1.86630791,2.18436629,ZH838108,船长,否,100.0,30.0,53034.98000000001,-4.23,卖出,562990.SH,700.0,20250919020100
|
||||||
|
243220117,204488875,1025452,国投白银LOF,SZ161226,0.49173441,1.138,0.5596,8.0,8.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758247260289,1758247260289,0.49173441,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,8.0,买入,161226.SZ,1000.0,20250919020100
|
||||||
|
243211420,204396469,1030082,传媒ETF,SH512980,0.26771357,NAN,0.2867,4.02,4.0,4.02,4.02,4.02,0.26771357,1.073,0.28725666,True,1758164382409,1758164382409,0.26668975,0.26744655,ZH838108,船长,否,100.0,30.0,53034.98000000001,-0.02,卖出,512980.SH,0.0,20250918025942
|
||||||
|
243211421,204396469,1060895,碳中和100ETF,SH562990,2.18232331,NAN,2.0688,28.97,29.0,28.97,29.0,28.97,2.18232331,0.948,2.06884249,True,1758164382409,1758164382409,2.18436629,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.03,买入,562990.SH,0.0,20250918025942
|
||||||
|
243211412,204396468,1060895,碳中和100ETF,SH562990,2.18232331,0.948,2.0688,28.97,28.97,NAN,NAN,NAN,NAN,NAN,NAN,True,1758164382409,1758164382409,2.18436629,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,28.97,买入,562990.SH,4900.0,20250918025942
|
||||||
|
243211403,204396392,1056342,游戏ETF,SZ159869,1.37445218,1.662,2.2843,32.0,32.0,29.96,29.97,29.97,1.28726563,1.662,2.13943547,True,1758164341721,1758164341721,1.37445218,1.2876974,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.03,买入,159869.SZ,200.0,20250918025901
|
||||||
|
243211373,204396301,1060691,中概互联ETF,SH513220,0.23930913,1.492,0.357,5.0,5.0,8.02,8.02,8.03,0.38423302,1.493,0.57365989,True,1758164291481,1758164291481,0.23930913,0.38423513,ZH838108,船长,否,100.0,30.0,53034.98000000001,-3.03,卖出,513220.SH,300.0,20250918025811
|
||||||
|
243211277,204395639,1056342,游戏ETF,SZ159869,1.28726563,1.667,2.1459,30.0,30.0,14.96,14.95,14.99,0.64315789,1.665,1.07085788,True,1758163985274,1758163985274,1.28726563,0.64264875,ZH838108,船长,否,100.0,30.0,53034.98000000001,15.01,买入,159869.SZ,1500.0,20250918025305
|
||||||
|
243210358,204388515,1061419,中韩半导体ETF,SH513310,0.16054864,2.229,0.3579,5.0,5.0,3.0,3.0,3.03,0.09739179,2.201,0.21435932,True,1758161804000,1758161804000,0.16054864,0.09735368,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.97,买入,513310.SH,100.0,20250918021644
|
||||||
|
243210003,204384854,1057346,恒生科技ETF,SZ159740,1.34764438,0.848,1.1428,16.0,16.0,10.0,10.0,10.09,0.8500984,0.839,0.71323255,True,1758160934424,1758160934424,1.34764438,0.8500984,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.91,买入,159740.SZ,1100.0,20250918020214
|
||||||
|
243209467,204380788,1060691,中概互联ETF,SH513220,0.38423302,1.485,0.5706,8.0,8.0,10.01,10.01,9.97,0.47880796,1.491,0.71390266,True,1758160044251,1758160044251,0.38423302,0.47898735,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.97,卖出,513220.SH,200.0,20250918014724
|
||||||
|
243209468,204380788,1057346,恒生科技ETF,SZ159740,0.8500984,0.839,0.7132,10.0,10.0,13.01,13.01,12.98,1.10353565,0.841,0.92807348,True,1758160044251,1758160044251,0.8500984,1.10369458,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.98,卖出,159740.SZ,500.0,20250918014724
|
||||||
|
243209469,204380788,1061419,中韩半导体ETF,SH513310,0.09739179,2.197,0.214,3.0,3.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758160044251,1758160044251,0.09739179,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.0,买入,513310.SH,200.0,20250918014724
|
||||||
|
243209297,204379551,1030082,传媒ETF,SH512980,0.26771357,1.066,0.2854,4.0,4.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758159787124,1758159787124,0.26771357,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,4.0,买入,512980.SH,600.0,20250918014307
|
||||||
|
243209276,204379274,1056342,游戏ETF,SZ159869,0.64315789,1.664,1.0702,15.0,15.0,12.0,12.0,11.95,0.51237034,1.672,0.8566832,True,1758159736178,1758159736178,0.64315789,0.51237034,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.05,买入,159869.SZ,300.0,20250918014216
|
||||||
|
243209256,204379120,1060691,中概互联ETF,SH513220,0.47880796,1.491,0.7139,10.0,10.0,13.0,13.0,12.84,0.61477925,1.514,0.93077578,True,1758159704915,1758159704915,0.47880796,0.61477925,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.84,卖出,513220.SH,300.0,20250918014144
|
||||||
|
243209257,204379120,1057346,恒生科技ETF,SZ159740,1.10353565,0.841,0.9281,13.0,13.0,16.26,16.21,16.19,1.37407159,0.847,1.16383863,True,1758159704915,1758159704915,1.10353565,1.37025479,ZH838108,船长,否,100.0,30.0,53034.98000000001,-3.19,卖出,159740.SZ,600.0,20250918014144
|
||||||
|
243209258,204379120,1056342,游戏ETF,SZ159869,0.51237034,1.672,0.8567,12.0,12.0,8.03,8.0,8.08,0.34486412,1.668,0.57523335,True,1758159704915,1758159704915,0.51237034,0.34339634,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.92,买入,159869.SZ,300.0,20250918014144
|
||||||
|
243208775,204376225,1060691,中概互联ETF,SH513220,0.61477925,1.514,0.9308,13.0,13.0,18.05,18.0,17.79,0.84112486,1.541,1.2961734,True,1758159310767,1758159310767,0.61477925,0.83888591,ZH838108,船长,否,100.0,30.0,53034.98000000001,-4.79,卖出,513220.SH,500.0,20250918013510
|
||||||
|
243208693,204376047,1056342,游戏ETF,SZ159869,0.34486412,1.666,0.5745,8.0,8.0,4.05,4.06,4.05,0.17451463,1.666,0.29074137,True,1758159289996,1758159289996,0.34486412,0.17491627,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.95,买入,159869.SZ,300.0,20250918013449
|
||||||
|
243208687,204375945,1060691,中概互联ETF,SH513220,0.84112486,1.536,1.292,18.0,18.0,15.0,15.0,15.32,0.71571929,1.497,1.07143177,True,1758159277398,1758159277398,0.84112486,0.71571929,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.68,买入,513220.SH,200.0,20250918013437
|
||||||
|
243208127,204368078,1025452,国投白银LOF,SZ161226,0.0,1.136,0.0,0.0,0.0,50.0,50.0,49.46,3.10985386,1.147,3.56700237,True,1758159131138,1758159131138,0.0,3.10985386,ZH838108,船长,否,100.0,30.0,53034.98000000001,-49.46,卖出,161226.SZ,6700.0,20250918013211
|
||||||
|
243208128,204368078,1061593,创50ETF,SZ159681,0.098795,1.446,0.1429,2.0,2.0,5.02,5.03,5.0,0.24703804,1.449,0.35795811,True,1758159131138,1758159131138,0.098795,0.24764695,ZH838108,船长,否,100.0,30.0,53034.98000000001,-3.0,卖出,159681.SZ,300.0,20250918013211
|
||||||
|
243208129,204368078,1060691,中概互联ETF,SH513220,0.71571929,1.497,1.0714,15.0,15.0,25.0,25.0,25.27,1.20588315,1.479,1.78350117,True,1758159131138,1758159131138,0.71571929,1.20588315,ZH838108,船长,否,100.0,30.0,53034.98000000001,-10.27,卖出,513220.SH,1100.0,20250918013211
|
||||||
|
243208130,204368078,1038588,短融ETF,SH511360,0.00127164,112.341,0.1429,2.0,2.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758159131138,1758159131138,0.00127164,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.0,买入,511360.SH,0.0,20250918013211
|
||||||
|
243208131,204368078,1061966,30年国债ETF,SH511090,0.00299255,119.344,0.3571,5.0,5.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758159131138,1758159131138,0.00299255,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.0,买入,511090.SH,0.0,20250918013211
|
||||||
|
243203609,204336522,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,2.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135916993,1758135916993,0.00127372,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.0,买入,511360.SH,0.0,20250917190516
|
||||||
|
243203610,204336522,1025452,国投白银LOF,SZ161226,0.0,NAN,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758135916993,1758135916993,0.0,3.10985386,ZH838108,船长,否,100.0,30.0,53034.98000000001,-49.77,卖出,161226.SZ,6700.0,20250917190516
|
||||||
|
243203611,204336522,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,5.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135916993,1758135916993,0.00299332,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,5.0,买入,511090.SH,0.0,20250917190516
|
||||||
|
243203612,204336522,1064455,30年国债ETF博时,SH511130,0.0,NAN,0.0,0.0,0.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135916993,1758135916993,0.0,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.0,无操作,511130.SH,0.0,20250917190516
|
||||||
|
243203601,204336493,1038588,短融ETF,SH511360,0.0,NAN,0.0,0.0,2.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135892640,1758135892640,0.00127372,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.0,买入,511360.SH,0.0,20250917190452
|
||||||
|
243203602,204336493,1025452,国投白银LOF,SZ161226,0.0,NAN,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758135892640,1758135892640,0.0,3.10985386,ZH838108,船长,否,100.0,30.0,53034.98000000001,-49.77,卖出,161226.SZ,6700.0,20250917190452
|
||||||
|
243203603,204336493,1061966,30年国债ETF,SH511090,0.0,NAN,0.0,0.0,2.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135892640,1758135892640,0.00119733,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.0,买入,511090.SH,0.0,20250917190452
|
||||||
|
243203604,204336493,1064455,30年国债ETF博时,SH511130,0.0,NAN,0.0,0.0,2.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758135892640,1758135892640,0.00132912,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.0,买入,511130.SH,0.0,20250917190452
|
||||||
|
243203581,204335092,1025452,国投白银LOF,SZ161226,0.0,NAN,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758134307681,1758134307681,0.0,3.10985386,ZH838108,船长,否,100.0,30.0,53034.98000000001,-49.77,卖出,161226.SZ,6700.0,20250917183827
|
||||||
|
243203574,204334268,1025452,国投白银LOF,SZ161226,1.87436109,NAN,2.1461,30.0,30.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758133372449,1758133372449,1.87436109,3.10985386,ZH838108,船长,否,100.0,30.0,53034.98000000001,-19.77,卖出,161226.SZ,2600.0,20250917182252
|
||||||
|
243201335,204283982,1025452,国投白银LOF,SZ161226,3.10985386,1.147,3.567,50.0,50.0,50.0,50.0,49.98,3.10891199,1.145,3.55970422,True,1758085259722,1758085259722,3.10985386,3.10891199,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.02,买入,161226.SZ,0.0,20250917050059
|
||||||
|
243201336,204283982,1060691,中概互联ETF,SH513220,1.20588315,1.479,1.7835,25.0,25.0,24.99,25.0,24.97,1.20456002,1.477,1.77913514,True,1758085259722,1758085259722,1.20588315,1.20504544,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.03,买入,513220.SH,0.0,20250917050059
|
||||||
|
243199859,204280803,1023539,黄金ETF,SZ159934,0.0,7.903,0.0,0.0,0.0,18.0,18.0,18.0,0.16215617,7.905,1.28184452,True,1758078374277,1758078374277,0.0,0.16215617,ZH838108,船长,否,100.0,30.0,53034.98000000001,-18.0,卖出,159934.SZ,300.0,20250917030614
|
||||||
|
243199860,204280803,1057346,恒生科技ETF,SZ159740,1.37407159,0.829,1.1391,16.0,16.0,9.0,9.0,9.0,0.77312701,0.829,0.64092229,True,1758078374277,1758078374277,1.37407159,0.77312701,ZH838108,船长,否,100.0,30.0,53034.98000000001,7.0,买入,159740.SZ,1300.0,20250917030614
|
||||||
|
243199861,204280803,1025452,国投白银LOF,SZ161226,3.10891199,1.145,3.5597,50.0,50.0,39.0,39.0,39.01,2.42561568,1.145,2.77732995,True,1758078374277,1758078374277,3.10891199,2.42561568,ZH838108,船长,否,100.0,30.0,53034.98000000001,10.99,买入,161226.SZ,1400.0,20250917030614
|
||||||
|
243199851,204280742,1023286,黄金ETF,SH518880,0.0,7.984,0.0,0.0,0.0,11.0,11.0,10.99,0.09803331,7.984,0.78269794,True,1758078341190,1758078341190,0.0,0.09802577,ZH838108,船长,否,100.0,30.0,53034.98000000001,-10.99,卖出,518880.SH,200.0,20250917030541
|
||||||
|
243199852,204280742,1023539,黄金ETF,SZ159934,0.16215617,7.905,1.2818,18.0,18.0,21.2,21.2,21.18,0.19077117,7.905,1.50804609,True,1758078341190,1758078341190,0.16215617,0.19081042,ZH838108,船长,否,100.0,30.0,53034.98000000001,-3.18,卖出,159934.SZ,0.0,20250917030541
|
||||||
|
243199853,204280742,1057346,恒生科技ETF,SZ159740,0.77312701,0.829,0.6409,9.0,9.0,6.7,8.0,6.71,0.57607484,0.828,0.47698996,True,1758078341190,1758078341190,0.77312701,0.68742885,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.29,买入,159740.SZ,400.0,20250917030541
|
||||||
|
243199854,204280742,1060691,中概互联ETF,SH513220,1.20456002,1.478,1.7803,25.0,25.0,20.14,20.13,20.18,0.97208882,1.474,1.43285892,True,1758078341190,1758078341190,1.20456002,0.97166016,ZH838108,船长,否,100.0,30.0,53034.98000000001,4.82,买入,513220.SH,500.0,20250917030541
|
||||||
|
243199855,204280742,1025452,国投白银LOF,SZ161226,2.42561568,1.145,2.7773,39.0,39.0,32.02,32.02,31.99,1.98945665,1.145,2.27792786,True,1758078341190,1758078341190,2.42561568,1.98968327,ZH838108,船长,否,100.0,30.0,53034.98000000001,7.01,买入,161226.SZ,900.0,20250917030541
|
||||||
|
243199847,204280552,1056342,游戏ETF,SZ159869,0.17451463,NAN,0.2794,3.93,2.0,3.93,2.0,3.93,0.17451463,1.601,0.27939792,True,1758078237157,1758078237157,0.08888055,0.44374209,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.93,卖出,159869.SZ,100.0,20250917030357
|
||||||
|
243199848,204280552,1057346,恒生科技ETF,SZ159740,0.57607484,NAN,0.477,6.7,8.0,6.7,8.0,6.7,0.57607484,0.828,0.47698996,True,1758078237157,1758078237157,0.68742885,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.3,买入,159740.SZ,200.0,20250917030357
|
||||||
|
243199840,204280551,1056342,游戏ETF,SZ159869,0.17451463,1.601,0.2794,3.93,3.93,10.0,10.0,9.99,0.44374209,1.6,0.70998734,True,1758078237157,1758078237157,0.08888055,0.44374209,ZH838108,船长,否,100.0,30.0,53034.98000000001,-6.06,卖出,159869.SZ,600.0,20250917030357
|
||||||
|
243199841,204280551,1057346,恒生科技ETF,SZ159740,0.57607484,0.828,0.477,6.7,6.7,NAN,NAN,NAN,NAN,NAN,NAN,True,1758078237157,1758078237157,0.68742885,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.7,买入,159740.SZ,1200.0,20250917030357
|
||||||
|
243199541,204278815,1058885,游戏传媒ETF,SH517770,0.0,1.294,0.0,0.0,0.0,2.0,2.0,2.0,0.10969856,1.294,0.14194993,True,1758077340722,1758077340722,0.0,0.10971557,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.0,卖出,517770.SH,200.0,20250917024900
|
||||||
|
243199542,204278815,1025452,国投白银LOF,SZ161226,1.98945665,1.142,2.272,32.0,32.0,31.93,31.95,31.92,1.98456999,1.142,2.26637892,True,1758077340722,1758077340722,1.98945665,1.98599128,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.08,买入,161226.SZ,0.0,20250917024900
|
||||||
|
243199543,204278815,1056342,游戏ETF,SZ159869,0.44374209,1.6,0.71,10.0,10.0,9.01,9.0,9.02,0.40016576,1.599,0.63986505,True,1758077340722,1758077340722,0.44374209,0.39954585,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.98,买入,159869.SZ,0.0,20250917024900
|
||||||
|
243199544,204278815,1061593,创50ETF,SZ159681,0.24703804,1.437,0.355,5.0,5.0,4.0,4.0,4.0,0.19787032,1.435,0.2839439,True,1758077340722,1758077340722,0.24703804,0.19787032,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.0,买入,159681.SZ,100.0,20250917024900
|
||||||
|
243199526,204278726,1030082,传媒ETF,SH512980,0.0,1.049,0.0,0.0,0.0,1.0,1.0,1.0,0.06761953,1.048,0.07086526,True,1758077299971,1758077299971,0.0,0.06762767,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.0,卖出,512980.SH,100.0,20250917024819
|
||||||
|
243199527,204278726,1061593,创50ETF,SZ159681,0.19787032,1.435,0.2839,4.0,4.0,3.01,3.01,3.04,0.15035065,1.418,0.21319722,True,1758077299971,1758077299971,0.19787032,0.15044439,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.96,买入,159681.SZ,100.0,20250917024819
|
||||||
|
243199316,204276290,1056342,游戏ETF,SZ159869,0.40016576,1.594,0.6379,9.0,9.0,9.0,9.0,8.98,0.39923481,1.598,0.63797722,True,1758076553136,1758076553136,0.40016576,0.39923481,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.02,买入,159869.SZ,0.0,20250917023553
|
||||||
|
243199181,204275243,1063856,黄金股ETF,SH517520,0.0,1.826,0.0,0.0,0.0,1.0,1.01,1.0,0.03893499,1.828,0.07117316,True,1758076319498,1758076319498,0.0,0.03915422,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.0,卖出,517520.SH,0.0,20250917023159
|
||||||
|
243199182,204275243,1025452,国投白银LOF,SZ161226,1.98456999,1.143,2.2684,32.0,32.0,31.97,31.98,31.96,1.98239185,1.143,2.26587388,True,1758076319498,1758076319498,1.98456999,1.98273972,ZH838108,船长,否,100.0,30.0,53034.98000000001,0.04,买入,161226.SZ,0.0,20250917023159
|
||||||
|
243199183,204275243,1056342,游戏ETF,SZ159869,0.39923481,1.598,0.638,9.0,9.0,7.98,7.97,7.99,0.35461688,1.595,0.56561392,True,1758076319498,1758076319498,0.39923481,0.35410422,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.01,买入,159869.SZ,100.0,20250917023159
|
||||||
|
243199122,204274961,1058885,游戏传媒ETF,SH517770,0.10969856,1.292,0.1417,2.0,2.0,13.0,13.0,12.96,0.71111058,1.299,0.92373264,True,1758076260795,1758076260795,0.10969856,0.71111058,ZH838108,船长,否,100.0,30.0,53034.98000000001,-10.96,卖出,517770.SH,1300.0,20250917023100
|
||||||
|
243199123,204274961,1030082,传媒ETF,SH512980,0.06761953,1.048,0.0709,1.0,1.0,4.0,4.0,3.99,0.26991968,1.053,0.28422542,True,1758076260795,1758076260795,0.06761953,0.26991968,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.99,卖出,512980.SH,400.0,20250917023100
|
||||||
|
243199124,204274961,1061593,创50ETF,SZ159681,0.15035065,1.414,0.2126,3.0,3.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758076260795,1758076260795,0.15035065,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.0,买入,159681.SZ,300.0,20250917023100
|
||||||
|
243199125,204274961,1060691,中概互联ETF,SH513220,0.97208882,1.458,1.4173,20.0,20.0,9.0,9.0,9.0,0.43741944,1.462,0.63950722,True,1758076260795,1758076260795,0.97208882,0.43741944,ZH838108,船长,否,100.0,30.0,53034.98000000001,11.0,买入,513220.SH,1200.0,20250917023100
|
||||||
|
243197555,204263483,1063856,黄金股ETF,SH517520,0.03893499,1.825,0.0711,1.0,1.0,3.04,3.04,2.99,0.11638607,1.854,0.21577977,True,1758073888360,1758073888360,0.03893499,0.11653594,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.99,卖出,517520.SH,100.0,20250917015128
|
||||||
|
243197556,204263483,1058885,游戏传媒ETF,SH517770,0.71111058,1.299,0.9237,13.0,13.0,15.11,15.08,15.16,0.82920124,1.295,1.0738156,True,1758073888360,1758073888360,0.71111058,0.82761361,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.16,卖出,517770.SH,200.0,20250917015128
|
||||||
|
243197557,204263483,1030082,传媒ETF,SH512980,0.26991968,1.053,0.2842,4.0,4.0,7.02,7.0,7.04,0.47488378,1.051,0.49910285,True,1758073888360,1758073888360,0.26991968,0.4733598,ZH838108,船长,否,100.0,30.0,53034.98000000001,-3.04,卖出,512980.SH,400.0,20250917015128
|
||||||
|
243197558,204263483,1025452,国投白银LOF,SZ161226,1.98239185,1.147,2.2738,32.0,32.0,30.91,31.19,30.95,1.91712668,1.146,2.19702717,True,1758073888360,1758073888360,1.98239185,1.93431326,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.05,买入,161226.SZ,100.0,20250917015128
|
||||||
|
243197559,204263483,1056342,游戏ETF,SZ159869,0.35461688,1.603,0.5685,8.0,8.0,6.07,6.0,6.07,0.26922746,1.603,0.43157161,True,1758073888360,1758073888360,0.35461688,0.26601968,ZH838108,船长,否,100.0,30.0,53034.98000000001,1.93,买入,159869.SZ,100.0,20250917015128
|
||||||
|
243197560,204263483,1060691,中概互联ETF,SH513220,0.43741944,1.462,0.6395,9.0,9.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1758073888360,1758073888360,0.43741944,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,9.0,买入,513220.SH,900.0,20250917015128
|
||||||
|
243196083,204126868,1057876,锂电池ETF,SZ159840,0.0,0.772,0.0,0.0,0.0,2.0,2.0,2.04,0.1878941,0.759,0.14261162,True,1758072762110,1758072762110,0.0,0.1878941,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.04,卖出,159840.SZ,400.0,20250917013242
|
||||||
|
243184255,204091462,1057876,锂电池ETF,SZ159840,0.1878941,0.759,0.1426,2.0,2.0,5.0,5.0,4.99,0.46908163,0.76,0.35650203,True,1757992598575,1757992598575,0.1878941,0.46911756,ZH838108,船长,否,100.0,30.0,53034.98000000001,-2.99,卖出,159840.SZ,600.0,20250916031638
|
||||||
|
243184245,204091352,1063856,黄金股ETF,SH517520,0.11638607,1.838,0.2139,3.0,3.0,4.86,4.86,4.86,0.18853477,1.838,0.3465269,True,1757992524095,1757992524095,0.11638607,0.188531,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.86,卖出,517520.SH,100.0,20250916031524
|
||||||
|
243184246,204091352,1023286,黄金ETF,SH518880,0.09803331,8.001,0.7844,11.0,11.0,8.01,8.0,8.01,0.07135133,8.0,0.57081064,True,1757992524095,1757992524095,0.09803331,0.0713004,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.99,买入,518880.SH,0.0,20250916031524
|
||||||
|
243184234,204091295,1057876,锂电池ETF,SZ159840,0.46908163,0.76,0.3565,5.0,5.0,11.94,11.92,11.55,1.08345683,0.786,0.85159706,True,1757992485424,1757992485424,0.46908163,1.08201508,ZH838108,船长,否,100.0,30.0,53034.98000000001,-6.55,卖出,159840.SZ,1300.0,20250916031445
|
||||||
|
243184235,204091295,1056342,游戏ETF,SZ159869,0.26922746,1.589,0.4278,6.0,6.0,4.0,4.0,3.96,0.17770271,1.606,0.28539055,True,1757992485424,1757992485424,0.26922746,0.17770271,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.04,买入,159869.SZ,200.0,20250916031445
|
||||||
|
243184236,204091295,1030082,传媒ETF,SH512980,0.47488378,1.051,0.4991,7.0,7.0,4.0,4.0,4.04,0.27388729,1.042,0.28539055,True,1757992485424,1757992485424,0.47488378,0.27388729,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.96,买入,512980.SH,400.0,20250916031445
|
||||||
|
243171698,203935274,1030082,传媒ETF,SH512980,0.27388729,1.042,0.2854,4.0,4.0,8.11,8.1,8.1,0.55481007,1.043,0.5786669,True,1757905305945,1757905305945,0.27388729,0.55423715,ZH838108,船长,否,100.0,30.0,53034.98000000001,-4.1,卖出,512980.SH,600.0,20250915030145
|
||||||
|
243171699,203935274,1056342,游戏ETF,SZ159869,0.17770271,1.606,0.2854,4.0,4.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1757905305945,1757905305945,0.17770271,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,4.0,买入,159869.SZ,400.0,20250915030145
|
||||||
|
243171425,203933524,1023539,黄金ETF,SZ159934,0.19077117,7.856,1.4987,21.0,21.0,25.91,25.91,25.87,0.2350396,7.864,1.84835141,True,1757904624170,1757904624170,0.19077117,0.2350073,ZH838108,船长,否,100.0,30.0,53034.98000000001,-4.87,卖出,159934.SZ,0.0,20250915025024
|
||||||
|
243171426,203933524,1058885,游戏传媒ETF,SH517770,0.82920124,1.291,1.0705,15.0,15.0,15.0,15.0,15.07,0.83326606,1.284,1.06991362,True,1757904624170,1757904624170,0.82920124,0.83326606,ZH838108,船长,否,100.0,30.0,53034.98000000001,-0.07,卖出,517770.SH,0.0,20250915025024
|
||||||
|
243171427,203933524,1063856,黄金股ETF,SH517520,0.18853477,1.892,0.3567,5.0,5.0,2.96,2.96,2.97,0.11200854,1.886,0.2112481,True,1757904624170,1757904624170,0.18860091,0.11194571,ZH838108,船长,否,100.0,30.0,53034.98000000001,2.03,买入,517520.SH,100.0,20250915025024
|
||||||
|
243171428,203933524,1025452,国投白银LOF,SZ161226,1.91712668,1.154,2.2124,31.0,31.0,27.96,27.96,27.92,1.72665274,1.155,1.99428391,True,1757904624170,1757904624170,1.91712668,1.72668311,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.08,买入,161226.SZ,400.0,20250915025024
|
||||||
|
243171052,203929398,1058885,游戏传媒ETF,SH517770,0.83326606,1.284,1.0699,15.0,15.0,19.11,18.96,19.05,1.05820686,1.285,1.35979581,True,1757903173811,1757903173811,0.83326606,1.04976595,ZH838108,船长,否,100.0,30.0,53034.98000000001,-4.05,卖出,517770.SH,500.0,20250915022613
|
||||||
|
243171053,203929398,1057876,锂电池ETF,SZ159840,1.08345683,0.79,0.8559,12.0,12.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1757903173811,1757903173811,1.08345683,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,12.0,买入,159840.SZ,2400.0,20250915022613
|
||||||
|
243169632,203875795,1064799,储能电池ETF广发,SZ159305,0.0,1.775,0.0,0.0,0.0,7.95,11.0,8.13,0.32601746,1.734,0.56531427,True,1757900014730,1757900014730,0.0,0.4508471,ZH838108,船长,否,100.0,30.0,53034.98000000001,-8.13,卖出,159305.SZ,700.0,20250915013334
|
||||||
|
243164749,203855165,1030082,传媒ETF,SH512980,0.55481007,NAN,0.5687,8.0,0.0,8.0,8.0,8.0,0.55481007,1.025,0.56868032,True,1757658134841,1757658134841,0.0,0.55481007,ZH838108,船长,否,100.0,30.0,53034.98000000001,-8.0,卖出,512980.SH,1200.0,20250912062214
|
||||||
|
243164750,203855165,1064799,储能电池ETF广发,SZ159305,0.32601746,NAN,0.5653,7.95,11.0,7.95,11.0,7.95,0.32601746,1.734,0.56531427,True,1757658134841,1757658134841,0.4508471,0.0,ZH838108,船长,否,100.0,30.0,53034.98000000001,3.05,买入,159305.SZ,200.0,20250912062214
|
||||||
|
243164743,203855164,1064799,储能电池ETF广发,SZ159305,0.32601746,1.734,0.5653,7.95,7.95,1.33,0.0,1.33,0.0544934,1.736,0.09460054,True,1757658134841,1757658134841,0.4508471,0.0,ZH838108,船长,否,100.0,30.0,53034.98000000001,6.62,买入,159305.SZ,500.0,20250912062214
|
||||||
|
243164732,203855103,1064799,储能电池ETF广发,SZ159305,0.0544934,NAN,0.0946,1.33,0.0,1.33,0.0,1.33,0.0544934,1.736,0.09460054,True,1757658080767,1757658080767,0.0,0.65250128,ZH838108,船长,否,100.0,30.0,53034.98000000001,-1.33,卖出,159305.SZ,100.0,20250912062120
|
||||||
|
243164725,203855102,1064799,储能电池ETF广发,SZ159305,0.0544934,1.736,0.0946,1.33,1.33,16.0,16.0,15.94,0.65250128,1.744,1.13796223,True,1757658080767,1757658080767,0.0,0.65250128,ZH838108,船长,否,100.0,30.0,53034.98000000001,-14.61,卖出,159305.SZ,1300.0,20250912062120
|
||||||
|
243164726,203855102,1030082,传媒ETF,SH512980,0.55481007,1.025,0.5687,8.0,8.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1757658080767,1757658080767,0.55481007,NAN,ZH838108,船长,否,100.0,30.0,53034.98000000001,8.0,买入,512980.SH,1200.0,20250912062120
|
||||||
|
242966263,204481502,1036946,可转债ETF,SH511380,0.06501263,13.21,0.8588,25.0,25.0,25.0,25.0,25.07,0.0651899,13.343,0.86982883,True,1758245815011,1758245815011,0.06501263,0.0651899,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.07,卖出,511380.SH,0.0,20250919013655
|
||||||
|
242966264,204481502,1036743,新能源车ETF,SH515030,0.60127202,1.714,1.0306,30.0,30.0,35.0,35.0,35.14,0.70431486,1.729,1.21776039,True,1758245815011,1758245815011,0.60127202,0.70431486,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.14,卖出,515030.SH,300.0,20250919013655
|
||||||
|
242966265,204481502,1029080,银行ETF,SH512800,0.87300318,0.787,0.6871,20.0,20.0,20.0,20.0,19.78,0.8633537,0.806,0.69586308,True,1758245815011,1758245815011,0.87300318,0.8633537,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.22,买入,512800.SH,0.0,20250919013655
|
||||||
|
242966266,204481502,1064311,中证A50ETF易方达,SH563080,0.65658783,1.308,0.8588,25.0,25.0,20.0,20.0,20.01,0.52557635,1.324,0.69586308,True,1758245815011,1758245815011,0.65658783,0.52557635,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.99,买入,563080.SH,400.0,20250919013655
|
||||||
|
242953156,204369507,1036946,可转债ETF,SH511380,0.0651899,13.343,0.8698,25.0,25.0,29.7,29.7,29.74,0.07753822,13.301,1.03133586,True,1758159030751,1758159030751,0.0651899,0.07753822,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.74,卖出,511380.SH,0.0,20250918013030
|
||||||
|
242953157,204369507,1036743,新能源车ETF,SH515030,0.70431486,1.729,1.2178,35.0,35.0,40.31,40.3,40.33,0.81149349,1.725,1.39982627,True,1758159030751,1758159030751,0.70431486,0.81125922,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.33,卖出,515030.SH,300.0,20250918013030
|
||||||
|
242953158,204369507,1064311,中证A50ETF易方达,SH563080,0.52557635,1.324,0.6959,20.0,20.0,15.0,15.0,15.02,0.39471764,1.32,0.52102728,True,1758159030751,1758159030751,0.52557635,0.39460358,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.98,买入,563080.SH,400.0,20250918013030
|
||||||
|
242953159,204369507,1029080,银行ETF,SH512800,0.8633537,0.806,0.6959,20.0,20.0,14.86,15.0,14.8,0.63878716,0.808,0.51614002,True,1758159030751,1758159030751,0.8633537,0.64464942,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.2,买入,512800.SH,700.0,20250918013030
|
||||||
|
242952851,204369397,1036743,新能源车ETF,SH515030,0.81149349,NAN,1.4047,40.38,35.0,40.31,40.3,40.38,0.81149349,1.725,1.39982627,True,1758158314231,1758158314231,0.70343215,0.81125922,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.38,卖出,515030.SH,300.0,20250918011834
|
||||||
|
242952854,204369397,1029080,银行ETF,SH512800,0.63878716,NAN,0.5142,14.78,20.28,14.86,15.0,14.78,0.63878716,0.808,0.51614002,True,1758158314231,1758158314231,0.87644226,0.64464942,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.5,买入,512800.SH,700.0,20250918011834
|
||||||
|
242945487,204278901,1029080,银行ETF,SH512800,0.63878716,NAN,0.5161,14.86,15.0,15.0,15.0,14.86,0.63878716,0.807,0.51550123,True,1758077376382,1758077376382,0.64464942,0.63878716,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.14,买入,512800.SH,0.0,20250917024936
|
||||||
|
242945482,204278900,1036946,可转债ETF,SH511380,0.07753822,13.301,1.0313,29.7,29.7,30.0,30.0,29.82,0.07785263,13.243,1.03100237,True,1758077376382,1758077376382,0.07753822,0.07785263,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.12,卖出,511380.SH,0.0,20250917024936
|
||||||
|
242932438,204108965,1064311,中证A50ETF易方达,SH563080,0.39471764,1.306,0.5155,15.0,15.0,20.0,20.0,19.95,0.52504883,1.305,0.68518872,True,1758005464047,1758005464047,0.39471764,0.52504883,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.95,卖出,563080.SH,400.0,20250916065104
|
||||||
|
242932439,204108965,1029080,银行ETF,SH512800,0.63878716,0.807,0.5155,15.0,15.0,20.0,20.0,19.77,0.84175519,0.814,0.68518872,True,1758005464047,1758005464047,0.63878716,0.84175519,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.77,卖出,512800.SH,600.0,20250916065104
|
||||||
|
242932440,204108965,1036946,可转债ETF,SH511380,0.07785263,13.243,1.031,30.0,30.0,20.0,20.0,20.06,0.05205414,13.163,0.68518864,True,1758005464047,1758005464047,0.07785263,0.05205414,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.94,买入,511380.SH,0.0,20250916065104
|
||||||
|
242932441,204108965,1036743,新能源车ETF,SH515030,0.81149349,1.694,1.3747,40.0,40.0,20.0,20.0,20.28,0.41152476,1.665,0.68518872,True,1758005464047,1758005464047,0.81149349,0.41152476,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,19.72,买入,515030.SH,1200.0,20250916065104
|
||||||
|
242929135,204083008,1029080,银行ETF,SH512800,0.84175519,0.814,0.6852,20.0,20.0,25.0,25.0,25.06,1.05455457,0.823,0.86789841,True,1757990159085,1757990159085,0.84175519,1.05455457,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.06,卖出,512800.SH,600.0,20250916023559
|
||||||
|
242929136,204083008,1064311,中证A50ETF易方达,SH563080,0.52504883,1.305,0.6852,20.0,20.0,29.44,29.44,29.52,0.77485759,1.319,1.02203716,True,1757990159085,1757990159085,0.52504883,0.77485759,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.52,卖出,563080.SH,700.0,20250916023559
|
||||||
|
242929137,204083008,1036946,可转债ETF,SH511380,0.05205414,13.163,0.6852,20.0,20.0,20.0,20.0,20.08,0.05225156,13.288,0.69431872,True,1757990159085,1757990159085,0.05205414,0.05225156,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.08,卖出,511380.SH,0.0,20250916023559
|
||||||
|
242929138,204083008,1036743,新能源车ETF,SH515030,0.41152476,1.665,0.6852,20.0,20.0,25.56,25.56,25.35,0.52165485,1.701,0.88733489,True,1757990159085,1757990159085,0.41152476,0.52165746,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.35,卖出,515030.SH,300.0,20250916023559
|
||||||
|
242917660,203936625,1036946,可转债ETF,SH511380,0.05225156,13.288,0.6943,20.0,20.0,25.0,25.0,25.02,0.06535878,13.315,0.87025215,True,1757906236022,1757906236022,0.05225156,0.06535878,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.02,卖出,511380.SH,0.0,20250915031716
|
||||||
|
242917661,203936625,1064311,中证A50ETF易方达,SH563080,0.77485759,1.319,1.022,29.44,29.44,29.33,29.35,29.32,0.77170093,1.323,1.02096033,True,1757906236022,1757906236022,0.77485759,0.77224198,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.12,买入,563080.SH,0.0,20250915031716
|
||||||
|
242917662,203936625,1029080,银行ETF,SH512800,1.05455457,0.823,0.8679,25.0,25.0,20.0,20.0,20.1,0.84799245,0.821,0.6962018,True,1757906236022,1757906236022,1.05455457,0.84799245,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.9,买入,512800.SH,600.0,20250915031716
|
||||||
|
242917067,203931726,1064311,中证A50ETF易方达,SH563080,0.77170093,NAN,1.021,29.33,29.35,29.33,29.35,29.33,0.77170093,1.323,1.02096033,True,1757903982335,1757903982335,0.77224198,0.65858651,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.02,买入,563080.SH,0.0,20250915023942
|
||||||
|
242917062,203931725,1036946,可转债ETF,SH511380,0.06535878,13.315,0.8703,25.0,25.0,35.02,35.04,34.52,0.09024158,13.41,1.21013958,True,1757903982335,1757903982335,0.06535878,0.09028194,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.52,卖出,511380.SH,0.0,20250915023942
|
||||||
|
242917063,203931725,1064311,中证A50ETF易方达,SH563080,0.77170093,1.323,1.021,29.33,29.33,24.99,24.97,25.05,0.65907645,1.31,0.86339014,True,1757903982335,1757903982335,0.77224198,0.65858651,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.28,买入,563080.SH,300.0,20250915023942
|
||||||
|
242917064,203931725,1029080,银行ETF,SH512800,0.84799245,0.821,0.6962,20.0,20.0,15.0,15.0,14.76,0.62593107,0.828,0.51827092,True,1757903982335,1757903982335,0.84799245,0.62593107,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.24,买入,512800.SH,700.0,20250915023942
|
||||||
|
242908934,203851233,1036946,可转债ETF,SH511380,0.09024158,NAN,1.2101,35.02,35.04,35.02,35.04,35.02,0.09024158,13.41,1.21013958,True,1757655119845,1757655119845,0.09028194,0.07737575,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.02,买入,511380.SH,0.0,20250912053159
|
||||||
|
242908929,203851232,1029080,银行ETF,SH512800,0.62593107,0.828,0.5183,15.0,15.0,20.0,20.0,19.99,0.83430169,0.829,0.6916361,True,1757655119845,1757655119845,0.62593107,0.83430169,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.99,卖出,512800.SH,600.0,20250912053159
|
||||||
|
242908930,203851232,1036946,可转债ETF,SH511380,0.09024158,13.41,1.2101,35.02,35.02,30.0,30.0,30.03,0.07737575,13.408,1.03745405,True,1757655119845,1757655119845,0.09028194,0.07737575,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.99,买入,511380.SH,0.0,20250912053159
|
||||||
|
242908814,203850258,1036946,可转债ETF,SH511380,0.07737575,13.408,1.0375,30.0,30.0,30.0,30.0,30.02,0.07743409,13.38,1.03606812,True,1757654421771,1757654421771,0.07737575,0.07743409,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.02,卖出,511380.SH,0.0,20250912052021
|
||||||
|
242908815,203850258,1029080,银行ETF,SH512800,0.83430169,0.829,0.6916,20.0,20.0,25.0,25.0,24.82,1.03523999,0.834,0.86339015,True,1757654421771,1757654421771,0.83430169,1.03523999,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.82,卖出,512800.SH,600.0,20250912052021
|
||||||
|
242908816,203850258,1036743,新能源车ETF,SH515030,0.52165485,1.657,0.8644,25.0,25.0,20.0,20.0,20.16,0.42065293,1.642,0.69071211,True,1757654421771,1757654421771,0.52175324,0.42065293,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.84,买入,515030.SH,300.0,20250912052021
|
||||||
|
242906816,203836211,1064311,中证A50ETF易方达,SH563080,0.65907645,1.31,0.8634,25.0,25.0,30.0,30.0,29.95,0.78963287,1.315,1.03836722,True,1757645771876,1757645771876,0.65907645,0.78963287,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.95,卖出,563080.SH,400.0,20250912025611
|
||||||
|
242906817,203836211,1029080,银行ETF,SH512800,1.03523999,0.834,0.8634,25.0,25.0,25.0,25.0,25.06,1.0375372,0.834,0.86530602,True,1757645771876,1757645771876,1.03523999,1.0375372,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.06,卖出,512800.SH,0.0,20250912025611
|
||||||
|
242906818,203836211,1036743,新能源车ETF,SH515030,0.42065293,1.642,0.6907,20.0,20.0,20.0,20.0,19.98,0.42030651,1.647,0.69224482,True,1757645771876,1757645771876,0.42065293,0.42030651,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.02,买入,515030.SH,0.0,20250912025611
|
||||||
|
242906819,203836211,1036946,可转债ETF,SH511380,0.07743409,13.38,1.0361,30.0,30.0,25.0,25.0,25.01,0.06455099,13.405,0.86530602,True,1757645771876,1757645771876,0.07743409,0.06455099,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.99,买入,511380.SH,0.0,20250912025611
|
||||||
|
242906496,203833017,1036743,新能源车ETF,SH515030,0.42030651,1.647,0.6922,20.0,20.0,35.01,35.01,34.7,0.72929302,1.669,1.21719005,True,1757645121146,1757645121146,0.42030651,0.72929302,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.7,卖出,515030.SH,900.0,20250912024521
|
||||||
|
242906497,203833017,1036946,可转债ETF,SH511380,0.06455099,13.405,0.8653,25.0,25.0,24.95,24.95,25.05,0.06468772,13.409,0.86739763,True,1757645121146,1757645121146,0.06455099,0.06469049,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.05,卖出,511380.SH,0.0,20250912024521
|
||||||
|
242906498,203833017,1029080,银行ETF,SH512800,1.0375372,0.834,0.8653,25.0,25.0,20.0,20.0,20.11,0.83474011,0.833,0.69533851,True,1757645121146,1757645121146,1.0375372,0.83474011,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.89,买入,512800.SH,600.0,20250912024521
|
||||||
|
242906499,203833017,1064311,中证A50ETF易方达,SH563080,0.78963287,1.315,1.0384,30.0,30.0,20.04,20.04,20.13,0.52983305,1.315,0.69673046,True,1757645121146,1757645121146,0.78963287,0.52983208,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.87,买入,563080.SH,700.0,20250912024521
|
||||||
|
242904399,203818965,1029080,银行ETF,SH512800,0.83474011,0.833,0.6953,20.0,20.0,25.0,25.0,24.8,1.03527847,0.831,0.8603164,True,1757642479375,1757642479375,0.83474011,1.03527847,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.8,卖出,512800.SH,600.0,20250912020119
|
||||||
|
242904400,203818965,1036743,新能源车ETF,SH515030,0.72929302,1.669,1.2172,35.01,35.01,30.02,30.02,30.2,0.62915222,1.642,1.03306794,True,1757642479375,1757642479375,0.72929302,0.62915222,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.81,买入,515030.SH,200.0,20250912020119
|
||||||
|
242891713,203686656,1064311,中证A50ETF易方达,SH563080,0.52983305,1.299,0.6883,20.0,20.0,20.0,20.0,20.04,0.53081015,1.291,0.6852759,True,1757559774053,1757559774053,0.52983305,0.53081015,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.04,卖出,563080.SH,0.0,20250911030254
|
||||||
|
242891714,203686656,1029080,银行ETF,SH512800,1.03527847,0.831,0.8603,25.0,25.0,30.0,30.0,29.94,1.23994435,0.829,1.02791386,True,1757559774053,1757559774053,1.03527847,1.23994435,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.94,卖出,512800.SH,600.0,20250911030254
|
||||||
|
242891715,203686656,1036743,新能源车ETF,SH515030,0.62915222,1.642,1.0331,30.02,30.02,25.0,25.0,25.04,0.52487432,1.632,0.85659489,True,1757559774053,1757559774053,0.62915222,0.52487432,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.98,买入,515030.SH,300.0,20250911030254
|
||||||
|
242891004,203681886,1036946,可转债ETF,SH511380,0.06468772,13.242,0.8566,25.0,25.0,25.0,25.0,25.05,0.06481129,13.206,0.85589789,True,1757558141042,1757558141042,0.06468772,0.06481129,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.05,卖出,511380.SH,0.0,20250911023541
|
||||||
|
242891005,203681886,1029080,银行ETF,SH512800,1.23994435,0.829,1.0279,30.0,30.0,40.0,40.0,39.92,1.64992387,0.83,1.36943681,True,1757558141042,1757558141042,1.23994435,1.64992387,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.92,卖出,512800.SH,1300.0,20250911023541
|
||||||
|
242891006,203681886,1036743,新能源车ETF,SH515030,0.52487432,1.632,0.8566,25.0,25.0,20.0,20.0,20.05,0.4208472,1.627,0.68471839,True,1757558141042,1757558141042,0.52487432,0.4208472,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.95,买入,515030.SH,300.0,20250911023541
|
||||||
|
242891007,203681886,1064311,中证A50ETF易方达,SH563080,0.53081015,1.291,0.6853,20.0,20.0,15.0,15.0,14.99,0.39778373,1.291,0.51353879,True,1757558141042,1757558141042,0.53081015,0.39778373,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.01,买入,563080.SH,400.0,20250911023541
|
||||||
|
242890297,203676388,1029080,银行ETF,SH512800,1.64992387,0.83,1.3694,40.0,40.0,50.0,50.0,49.78,2.05312503,0.833,1.71025314,True,1757556541907,1757556541907,1.64992387,2.05312503,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.78,卖出,512800.SH,1300.0,20250911020901
|
||||||
|
242890298,203676388,1064311,中证A50ETF易方达,SH563080,0.39778373,1.291,0.5135,15.0,15.0,15.0,15.0,15.06,0.39928089,1.285,0.51307594,True,1757556541907,1757556541907,0.39778373,0.39928089,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.06,卖出,563080.SH,0.0,20250911020901
|
||||||
|
242890299,203676388,1036743,新能源车ETF,SH515030,0.4208472,1.627,0.6847,20.0,20.0,15.0,15.0,15.14,0.31868071,1.61,0.51307594,True,1757556541907,1757556541907,0.4208472,0.31868071,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.86,买入,515030.SH,300.0,20250911020901
|
||||||
|
242890300,203676388,1036946,可转债ETF,SH511380,0.06481129,13.206,0.8559,25.0,25.0,10.01,10.0,10.04,0.02603374,13.151,0.34236971,True,1757556541907,1757556541907,0.06481129,0.02600947,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,14.96,买入,511380.SH,100.0,20250911020901
|
||||||
|
242881348,203586072,1064311,中证A50ETF易方达,SH563080,0.39928089,1.285,0.5131,15.0,15.0,20.0,20.0,20.0,0.53246612,1.285,0.68421896,True,1757473473107,1757473473107,0.39928089,0.53246612,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.0,卖出,563080.SH,400.0,20250910030433
|
||||||
|
242881349,203586072,1036743,新能源车ETF,SH515030,0.31868071,1.61,0.5131,15.0,15.0,20.0,20.0,19.98,0.42445345,1.612,0.68421896,True,1757473473107,1757473473107,0.31868071,0.42445345,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.98,卖出,515030.SH,300.0,20250910030433
|
||||||
|
242881350,203586072,1029080,银行ETF,SH512800,2.05312503,0.833,1.7103,50.0,50.0,40.0,40.0,40.01,1.64278265,0.833,1.36843794,True,1757473473107,1757473473107,2.05312503,1.64278265,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.99,买入,512800.SH,1300.0,20250910030433
|
||||||
|
242881028,203582375,1036743,新能源车ETF,SH515030,0.42445345,1.612,0.6842,20.0,20.0,35.0,35.0,34.42,0.73038816,1.657,1.21025318,True,1757472106019,1757472106019,0.42445345,0.73038816,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.42,卖出,515030.SH,800.0,20250910024146
|
||||||
|
242881029,203582375,1036946,可转债ETF,SH511380,0.02603374,13.141,0.3421,10.0,10.0,15.0,15.0,15.0,0.03904252,13.285,0.51867987,True,1757472106019,1757472106019,0.02603374,0.03904252,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.0,卖出,511380.SH,0.0,20250910024146
|
||||||
|
242881030,203582375,1029080,银行ETF,SH512800,1.64278265,0.833,1.3684,40.0,40.0,35.0,35.0,35.59,1.46165843,0.828,1.21025318,True,1757472106019,1757472106019,1.64278265,1.46165843,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.41,买入,512800.SH,500.0,20250910024146
|
||||||
|
242881031,203582375,1064311,中证A50ETF易方达,SH563080,0.53246612,1.285,0.6842,20.0,20.0,15.0,15.0,15.0,0.39929171,1.299,0.51867993,True,1757472106019,1757472106019,0.53246612,0.39929171,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.0,买入,563080.SH,400.0,20250910024146
|
||||||
|
242871391,203482260,1036946,可转债ETF,SH511380,0.03904252,13.285,0.5187,15.0,15.0,20.0,20.0,19.97,0.05197703,13.344,0.69358148,True,1757387395670,1757387395670,0.03904252,0.05197703,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.97,卖出,511380.SH,0.0,20250909030955
|
||||||
|
242871392,203482260,1064311,中证A50ETF易方达,SH563080,0.39929171,1.299,0.5187,15.0,15.0,20.0,20.0,20.07,0.53434631,1.298,0.69358151,True,1757387395670,1757387395670,0.39929171,0.53434631,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.07,卖出,563080.SH,400.0,20250909030955
|
||||||
|
242871393,203482260,1036743,新能源车ETF,SH515030,0.73038816,1.657,1.2103,35.0,35.0,35.0,35.0,34.97,0.7298663,1.663,1.21376765,True,1757387395670,1757387395670,0.73038816,0.7298663,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.03,买入,515030.SH,0.0,20250909030955
|
||||||
|
242871394,203482260,1029080,银行ETF,SH512800,1.46165843,0.828,1.2103,35.0,35.0,25.0,25.0,24.98,1.0432935,0.831,0.86697689,True,1757387395670,1757387395670,1.46165843,1.0432935,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,10.02,买入,512800.SH,1300.0,20250909030955
|
||||||
|
242862272,203349303,1027747,香港银行LOF,SH501025,0.0,1.572,0.0,0.0,0.0,14.99,14.99,14.59,0.32182726,1.567,0.50430331,True,1757299952677,1757299952677,0.0,0.32182726,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.59,卖出,501025.SH,900.0,20250908025232
|
||||||
|
242862273,203349303,1036743,新能源车ETF,SH515030,0.7298663,1.663,1.2138,35.0,35.0,35.0,35.0,36.36,0.75820524,1.553,1.17749273,True,1757299952677,1757299952677,0.7298663,0.75820524,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-1.36,卖出,515030.SH,0.0,20250908025232
|
||||||
|
242862274,203349303,1064311,中证A50ETF易方达,SH563080,0.53434631,1.298,0.6936,20.0,20.0,20.0,20.0,19.78,0.52855695,1.273,0.67285299,True,1757299952677,1757299952677,0.53434631,0.52855695,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.22,买入,563080.SH,0.0,20250908025232
|
||||||
|
242862275,203349303,1036946,可转债ETF,SH511380,0.05197703,13.344,0.6936,20.0,20.0,15.0,15.01,14.69,0.03816635,13.218,0.50448281,True,1757299952677,1757299952677,0.05197703,0.03820367,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.31,买入,511380.SH,0.0,20250908025232
|
||||||
|
242862276,203349303,1029080,银行ETF,SH512800,1.0432935,0.831,0.867,25.0,25.0,15.0,15.0,14.57,0.60799969,0.83,0.50463974,True,1757299952677,1757299952677,1.0432935,0.60799969,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,10.43,买入,512800.SH,1400.0,20250908025232
|
||||||
|
242850651,203224942,1029080,银行ETF,SH512800,0.60799969,0.83,0.5046,15.0,15.0,30.0,30.0,29.54,1.19722296,0.833,0.99728672,True,1757038866585,1757038866585,0.60799969,1.19722296,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.54,卖出,512800.SH,1900.0,20250905022106
|
||||||
|
242850652,203224942,1064311,中证A50ETF易方达,SH563080,0.52855695,1.273,0.6729,20.0,20.0,20.0,20.0,19.95,0.52724648,1.261,0.66485781,True,1757038866585,1757038866585,0.52855695,0.52724648,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.05,买入,563080.SH,0.0,20250905022106
|
||||||
|
242850653,203224942,1027747,香港银行LOF,SH501025,0.32182726,1.567,0.5043,14.99,14.99,15.0,15.0,14.85,0.31882567,1.564,0.49864334,True,1757038866585,1757038866585,0.32182726,0.31882567,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.14,买入,501025.SH,0.0,20250905022106
|
||||||
|
242850654,203224942,1036743,新能源车ETF,SH515030,0.75820524,1.553,1.1775,35.0,35.0,20.0,20.0,20.67,0.4477157,1.485,0.66485781,True,1757038866585,1757038866585,0.75820524,0.4477157,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,14.33,买入,515030.SH,800.0,20250905022106
|
||||||
|
242842246,203132634,1036743,新能源车ETF,SH515030,0.4477157,1.485,0.6649,20.0,20.0,35.0,35.0,34.9,0.78135499,1.516,1.18453416,True,1756965964130,1756965964130,0.4477157,0.78135499,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.9,卖出,515030.SH,900.0,20250904060604
|
||||||
|
242842247,203132634,1064311,中证A50ETF易方达,SH563080,0.52724648,1.261,0.6649,20.0,20.0,35.0,35.0,34.46,0.9083851,1.304,1.18453417,True,1756965964130,1756965964130,0.52724648,0.9083851,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.46,卖出,563080.SH,1100.0,20250904060604
|
||||||
|
242842248,203132634,1036946,可转债ETF,SH511380,0.03816635,13.065,0.4986,15.0,15.0,10.0,10.0,10.18,0.02589825,13.068,0.33843833,True,1756965964130,1756965964130,0.03816635,0.02589825,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.82,买入,511380.SH,0.0,20250904060604
|
||||||
|
242842249,203132634,1029080,银行ETF,SH512800,1.19722296,0.833,0.9973,30.0,30.0,20.0,20.0,20.46,0.81649779,0.829,0.67687666,True,1756965964130,1756965964130,1.19722296,0.81649779,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.54,买入,512800.SH,1200.0,20250904060604
|
||||||
|
242842250,203132634,1027747,香港银行LOF,SH501025,0.31882567,1.564,0.4986,15.0,15.0,NAN,NAN,NAN,NAN,NAN,NAN,True,1756965964130,1756965964130,0.31882567,NAN,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,15.0,买入,501025.SH,1000.0,20250904060604
|
||||||
|
242822609,202892068,1036946,可转债ETF,SH511380,0.02589825,13.068,0.3384,10.0,10.0,15.0,15.0,14.65,0.03795335,13.365,0.50724652,True,1756777532515,1756777532515,0.02589825,0.03795335,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.65,卖出,511380.SH,0.0,20250902014532
|
||||||
|
242822610,202892068,1036743,新能源车ETF,SH515030,0.78135499,1.516,1.1845,35.0,35.0,35.0,35.0,35.44,0.79115997,1.496,1.18357531,True,1756777532515,1756777532515,0.78135499,0.79115997,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.44,卖出,515030.SH,0.0,20250902014532
|
||||||
|
242822611,202892068,1029080,银行ETF,SH512800,0.81649779,0.829,0.6769,20.0,20.0,20.0,20.0,19.68,0.80324079,0.842,0.67632874,True,1756777532515,1756777532515,0.81649779,0.80324079,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.32,买入,512800.SH,0.0,20250902014532
|
||||||
|
242822612,202892068,1064311,中证A50ETF易方达,SH563080,0.9083851,1.304,1.1845,35.0,35.0,30.0,30.0,30.23,0.78460412,1.293,1.01449312,True,1756777532515,1756777532515,0.9083851,0.78460412,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.77,买入,563080.SH,300.0,20250902014532
|
||||||
|
242804518,202699422,1029080,银行ETF,SH512800,0.80324079,0.842,0.6763,20.0,20.0,35.0,35.0,34.2,1.37356845,0.844,1.15929177,True,1756434928071,1756434928071,0.80324079,1.37356845,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.2,卖出,512800.SH,1900.0,20250829023528
|
||||||
|
242804519,202699422,1036743,新能源车ETF,SH515030,0.79115997,1.496,1.1836,35.0,35.0,30.0,30.0,30.98,0.70026685,1.419,0.99367866,True,1756434928071,1756434928071,0.79115997,0.70026685,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.02,买入,515030.SH,200.0,20250829023528
|
||||||
|
242804520,202699422,1064311,中证A50ETF易方达,SH563080,0.78460412,1.293,1.0145,30.0,30.0,25.0,25.0,24.95,0.65253392,1.269,0.82806554,True,1756434928071,1756434928071,0.78460412,0.65253392,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.05,买入,563080.SH,400.0,20250829023528
|
||||||
|
242804521,202699422,1036946,可转债ETF,SH511380,0.03795335,13.365,0.5072,15.0,15.0,10.0,10.0,9.87,0.0249737,13.263,0.33122618,True,1756434928071,1756434928071,0.03795335,0.0249737,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.13,买入,511380.SH,0.0,20250829023528
|
||||||
|
242788990,202539876,1036946,可转债ETF,SH511380,0.0249737,13.263,0.3312,10.0,10.0,20.0,20.0,19.76,0.04933784,13.608,0.67138932,True,1756350730835,1756350730835,0.0249737,0.04933784,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.76,卖出,511380.SH,0.0,20250828031210
|
||||||
|
242788991,202539876,1036743,新能源车ETF,SH515030,0.70026685,1.419,0.9937,30.0,30.0,30.24,30.26,30.16,0.70404179,1.442,1.01522826,True,1756350730835,1756350730835,0.70026685,0.70444666,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.16,卖出,515030.SH,0.0,20250828031210
|
||||||
|
242788992,202539876,1029080,银行ETF,SH512800,1.37356845,0.844,1.1593,35.0,35.0,30.0,30.0,30.26,1.18759909,0.848,1.00708402,True,1756350730835,1756350730835,1.37356845,1.18759909,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.74,买入,512800.SH,600.0,20250828031210
|
||||||
|
242788993,202539876,1064311,中证A50ETF易方达,SH563080,0.65253392,1.269,0.8281,25.0,25.0,19.74,19.74,19.8,0.51689648,1.282,0.66266128,True,1756350730835,1756350730835,0.65253392,0.51689648,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.2,买入,563080.SH,400.0,20250828031210
|
||||||
|
242779978,202430821,1064311,中证A50ETF易方达,SH563080,0.51689648,1.282,0.6627,19.74,19.74,30.0,30.0,30.39,0.79569898,1.229,0.97791404,True,1756260495534,1756260495534,0.51689648,0.79569898,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-10.65,卖出,563080.SH,800.0,20250827020815
|
||||||
|
242779979,202430821,1036946,可转债ETF,SH511380,0.04933784,13.608,0.6714,20.0,20.0,30.0,30.0,29.63,0.07308228,13.381,0.97791398,True,1756260495534,1756260495534,0.04933784,0.07308228,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.63,卖出,511380.SH,0.0,20250827020815
|
||||||
|
242779980,202430821,1029080,银行ETF,SH512800,1.18759909,0.848,1.0071,30.0,30.0,10.0,10.0,9.74,0.38576491,0.845,0.32597134,True,1756260495534,1756260495534,1.18759909,0.38576491,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,20.26,买入,512800.SH,2700.0,20250827020815
|
||||||
|
242710772,201733974,1027747,香港银行LOF,SH501025,0.0,1.617,0.0,0.0,0.0,10.0,10.0,9.7,0.19558615,1.658,0.32428183,True,1755499513665,1755499513665,0.0,0.19558615,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.7,卖出,501025.SH,600.0,20250818064513
|
||||||
|
242710773,201733974,1036946,可转债ETF,SH511380,0.07308228,13.381,0.9779,30.0,30.0,34.81,34.96,34.99,0.08524035,13.242,1.12875271,True,1755499513665,1755499513665,0.07308228,0.08561314,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.99,卖出,511380.SH,0.0,20250818064513
|
||||||
|
242710774,201733974,1029080,银行ETF,SH512800,0.38576491,0.845,0.326,10.0,10.0,9.94,9.94,9.77,0.37672859,0.856,0.32247967,True,1755499513665,1755499513665,0.38576491,0.37656092,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.23,买入,512800.SH,0.0,20250818064513
|
||||||
|
242710775,201733974,1064311,中证A50ETF易方达,SH563080,0.79569898,1.229,0.9779,30.0,30.0,25.0,25.0,24.97,0.66234036,1.224,0.8107046,True,1755499513665,1755499513665,0.79569898,0.66234036,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.03,买入,563080.SH,400.0,20250818064513
|
||||||
|
242710776,201733974,1036743,新能源车ETF,SH515030,0.70404179,1.389,0.9779,30.0,30.0,20.1,20.1,20.42,0.4792417,1.36,0.65176871,True,1755499513665,1755499513665,0.70404179,0.47926949,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.58,买入,515030.SH,500.0,20250818064513
|
||||||
|
242690215,201477700,1036946,可转债ETF,SH511380,0.08524035,NAN,1.1288,34.81,34.96,34.81,34.81,34.81,0.08524035,13.2,1.12517262,True,1755137847301,1755137847301,0.08561314,0.08524049,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.15,买入,511380.SH,0.0,20250814021727
|
||||||
|
242690209,201477699,1027747,香港银行LOF,SH501025,0.19558615,1.658,0.3243,10.0,10.0,15.0,15.0,14.98,0.29296054,1.655,0.48484969,True,1755137847301,1755137847301,0.19558615,0.29296054,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.98,卖出,501025.SH,300.0,20250814021727
|
||||||
|
242690211,201477699,1064311,中证A50ETF易方达,SH563080,0.66234036,1.224,0.8107,25.0,25.0,20.07,20.07,20.17,0.53438623,1.214,0.64874488,True,1755137847301,1755137847301,0.66234036,0.53437306,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.83,买入,563080.SH,300.0,20250814021727
|
||||||
|
242683619,201404859,1027747,香港银行LOF,SH501025,0.29296054,1.655,0.4848,15.0,15.0,20.0,20.0,19.97,0.39005351,1.655,0.64553855,True,1755062641164,1755062641164,0.29296054,0.39005351,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.97,卖出,501025.SH,300.0,20250813052401
|
||||||
|
242683620,201404859,1029080,银行ETF,SH512800,0.37672859,0.858,0.3232,10.0,10.0,20.0,20.0,19.81,0.74628736,0.865,0.64553856,True,1755062641164,1755062641164,0.37672859,0.74628736,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.81,卖出,512800.SH,1300.0,20250813052401
|
||||||
|
242683621,201404859,1036946,可转债ETF,SH511380,0.08524035,13.2,1.1252,34.81,34.81,20.0,20.0,20.03,0.04904562,13.162,0.64553845,True,1755062641164,1755062641164,0.08524049,0.04904562,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,14.78,买入,511380.SH,100.0,20250813052401
|
||||||
|
242680613,201378740,1027747,香港银行LOF,SH501025,0.39005351,1.655,0.6455,20.0,20.0,20.0,20.0,20.02,0.39047169,1.646,0.6427164,True,1755049411205,1755049411205,0.39005351,0.39047387,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.02,卖出,501025.SH,0.0,20250813014331
|
||||||
|
242680614,201378740,1036946,可转债ETF,SH511380,0.04904562,13.162,0.6455,20.0,20.0,20.0,20.0,20.03,0.04912287,13.084,0.64272363,True,1755049411205,1755049411205,0.04904562,0.04912259,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.03,卖出,511380.SH,0.0,20250813014331
|
||||||
|
242680615,201378740,1029080,银行ETF,SH512800,0.74628736,0.865,0.6455,20.0,20.0,30.0,30.0,29.8,1.11197231,0.867,0.96407999,True,1755049411205,1755049411205,0.74628736,1.11197231,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.8,卖出,512800.SH,1300.0,20250813014331
|
||||||
|
242680616,201378740,1036743,新能源车ETF,SH515030,0.4792417,1.347,0.6455,20.0,20.0,15.0,15.0,15.13,0.36243609,1.33,0.48203999,True,1755049411205,1755049411205,0.4792417,0.36243609,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.87,买入,515030.SH,300.0,20250813014331
|
||||||
|
242680617,201378740,1064311,中证A50ETF易方达,SH563080,0.53438623,1.208,0.6455,20.0,20.0,15.0,15.0,15.02,0.40136552,1.201,0.48203998,True,1755049411205,1755049411205,0.53438623,0.40136552,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.98,买入,563080.SH,400.0,20250813014331
|
||||||
|
242674433,201305567,1036743,新能源车ETF,SH515030,0.36243609,1.33,0.482,15.0,15.0,25.0,25.0,24.75,0.59812663,1.347,0.80567657,True,1754963259422,1754963259422,0.36243609,0.59812663,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.75,卖出,515030.SH,600.0,20250812014739
|
||||||
|
242674434,201305567,1064311,中证A50ETF易方达,SH563080,0.40136552,1.201,0.482,15.0,15.0,20.0,20.0,20.04,0.53622401,1.202,0.64454126,True,1754963259422,1754963259422,0.40136552,0.53622401,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.04,卖出,563080.SH,400.0,20250812014739
|
||||||
|
242674435,201305567,1027747,香港银行LOF,SH501025,0.39047169,1.646,0.6427,20.0,20.0,15.0,15.0,15.08,0.29440069,1.642,0.48340593,True,1754963259422,1754963259422,0.39047387,0.29440069,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.92,买入,501025.SH,300.0,20250812014739
|
||||||
|
242674436,201305567,1029080,银行ETF,SH512800,1.11197231,0.867,0.9641,30.0,30.0,20.0,20.0,20.13,0.74599683,0.864,0.64454126,True,1754963259422,1754963259422,1.11197231,0.74599683,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.87,买入,512800.SH,1300.0,20250812014739
|
||||||
|
242669437,201181202,1027747,香港银行LOF,SH501025,0.29440069,1.642,0.4834,15.0,15.0,20.0,20.0,19.91,0.3908167,1.645,0.64289347,True,1754890715333,1754890715333,0.29440069,0.3908167,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.91,卖出,501025.SH,300.0,20250811053835
|
||||||
|
242669438,201181202,1029080,银行ETF,SH512800,0.74599683,0.864,0.6445,20.0,20.0,30.0,30.0,29.65,1.10589475,0.872,0.96434022,True,1754890715333,1754890715333,0.74599683,1.10589475,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.65,卖出,512800.SH,1300.0,20250811053835
|
||||||
|
242669439,201181202,1064311,中证A50ETF易方达,SH563080,0.53622401,1.202,0.6445,20.0,20.0,20.0,20.0,19.97,0.53529848,1.201,0.64289347,True,1754890715333,1754890715333,0.53622401,0.53529848,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.03,买入,563080.SH,0.0,20250811053835
|
||||||
|
242669440,201181202,1036946,可转债ETF,SH511380,0.04912287,13.121,0.6445,20.0,20.0,15.0,15.0,15.04,0.03694507,13.051,0.4821701,True,1754890715333,1754890715333,0.04912287,0.03694507,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.96,买入,511380.SH,0.0,20250811053835
|
||||||
|
242669441,201181202,1036743,新能源车ETF,SH515030,0.59812663,1.347,0.8057,25.0,25.0,15.0,15.0,15.43,0.3691961,1.306,0.4821701,True,1754890715333,1754890715333,0.59812663,0.3691961,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.57,买入,515030.SH,500.0,20250811053835
|
||||||
|
242648056,200968972,1027747,香港银行LOF,SH501025,0.3908167,1.645,0.6429,20.0,20.0,20.0,20.0,20.01,0.39103471,1.614,0.63113002,True,1754546118359,1754546118359,0.3908167,0.39103471,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.01,卖出,501025.SH,0.0,20250807055518
|
||||||
|
242648057,200968972,1036743,新能源车ETF,SH515030,0.3691961,1.306,0.4822,15.0,15.0,20.0,20.0,19.92,0.49038852,1.287,0.63113002,True,1754546118359,1754546118359,0.3691961,0.49038852,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.92,卖出,515030.SH,300.0,20250807055518
|
||||||
|
242648058,200968972,1036946,可转债ETF,SH511380,0.03694507,13.051,0.4822,15.0,15.0,20.0,20.0,20.06,0.04939579,12.777,0.63113,True,1754546118359,1754546118359,0.03694507,0.04939579,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.06,卖出,511380.SH,0.0,20250807055518
|
||||||
|
242648059,200968972,1029080,银行ETF,SH512800,1.10589475,0.872,0.9643,30.0,30.0,25.0,25.0,25.15,0.92704175,0.851,0.78891252,True,1754546118359,1754546118359,1.10589475,0.92704175,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.85,买入,512800.SH,600.0,20250807055518
|
||||||
|
242648060,200968972,1064311,中证A50ETF易方达,SH563080,0.53529848,1.201,0.6429,20.0,20.0,15.0,15.0,14.86,0.39777102,1.19,0.47334751,True,1754546118359,1754546118359,0.53529848,0.39777102,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.14,买入,563080.SH,400.0,20250807055518
|
||||||
|
242624866,200717876,1036946,可转债ETF,SH511380,0.04939579,12.777,0.6311,20.0,20.0,65.0,65.0,65.04,0.16063407,12.776,2.05226087,True,1754029999519,1754029999519,0.04939579,0.16063407,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-45.04,卖出,511380.SH,300.0,20250801063319
|
||||||
|
242624867,200717876,1064311,中证A50ETF易方达,SH563080,0.39777102,1.19,0.4733,15.0,15.0,10.0,10.0,9.9,0.26245424,1.203,0.31573245,True,1754029999519,1754029999519,0.39777102,0.26245424,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.1,买入,563080.SH,400.0,20250801063319
|
||||||
|
242624868,200717876,1027747,香港银行LOF,SH501025,0.39103471,1.614,0.6311,20.0,20.0,10.0,10.0,10.01,0.1956211,1.614,0.31573245,True,1754029999519,1754029999519,0.39103471,0.1956211,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.99,买入,501025.SH,600.0,20250801063319
|
||||||
|
242624869,200717876,1029080,银行ETF,SH512800,0.92704175,0.851,0.7889,25.0,25.0,10.0,10.0,10.12,0.37542504,0.841,0.31573245,True,1754029999519,1754029999519,0.92704175,0.37542504,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,14.88,买入,512800.SH,2000.0,20250801063319
|
||||||
|
242624870,200717876,1036743,新能源车ETF,SH515030,0.49038852,1.287,0.6311,20.0,20.0,5.0,5.0,4.93,0.12097029,1.305,0.15786622,True,1754029999519,1754029999519,0.49038852,0.12097029,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,15.07,买入,515030.SH,900.0,20250801063319
|
||||||
|
242611685,200595886,1027747,香港银行LOF,SH501025,0.1956211,1.614,0.3157,10.0,10.0,20.0,20.0,19.89,0.38905471,1.657,0.64466365,True,1753927431673,1753927431673,0.1956211,0.38905471,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.89,卖出,501025.SH,600.0,20250731020351
|
||||||
|
242611686,200595886,1036743,新能源车ETF,SH515030,0.12097029,1.305,0.1579,5.0,5.0,10.0,10.0,9.96,0.24108588,1.337,0.32233182,True,1753927431673,1753927431673,0.12097029,0.24108588,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.96,卖出,515030.SH,300.0,20250731020351
|
||||||
|
242611687,200595886,1064311,中证A50ETF易方达,SH563080,0.26245424,1.203,0.3157,10.0,10.0,25.0,25.0,24.88,0.65302235,1.234,0.80582957,True,1753927431673,1753927431673,0.26245424,0.65302235,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.88,卖出,563080.SH,1200.0,20250731020351
|
||||||
|
242611688,200595886,1029080,银行ETF,SH512800,0.37542504,0.841,0.3157,10.0,10.0,25.0,25.0,25.08,0.9413897,0.856,0.80582958,True,1753927431673,1753927431673,0.37542504,0.9413897,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-15.08,卖出,512800.SH,2000.0,20250731020351
|
||||||
|
242611689,200595886,1036946,可转债ETF,SH511380,0.16063407,12.776,2.0523,65.0,65.0,20.0,20.0,20.19,0.04989656,12.92,0.64466355,True,1753927431673,1753927431673,0.16063407,0.04989656,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,44.81,买入,511380.SH,300.0,20250731020351
|
||||||
|
242601363,200510609,1036743,新能源车ETF,SH515030,0.24108588,1.337,0.3223,10.0,10.0,15.0,15.0,14.77,0.35602942,1.354,0.48206383,True,1753845442806,1753845442806,0.24108588,0.35602942,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.77,卖出,515030.SH,200.0,20250730031722
|
||||||
|
242601364,200510609,1036946,可转债ETF,SH511380,0.04989656,12.92,0.6447,20.0,20.0,25.0,25.0,25.14,0.06271483,12.811,0.80343968,True,1753845442806,1753845442806,0.04989656,0.06271483,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.14,卖出,511380.SH,0.0,20250730031722
|
||||||
|
242601365,200510609,1029080,银行ETF,SH512800,0.9413897,0.856,0.8058,25.0,25.0,25.0,25.0,24.98,0.94079595,0.854,0.80343974,True,1753845442806,1753845442806,0.9413897,0.94079595,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.02,买入,512800.SH,0.0,20250730031722
|
||||||
|
242601366,200510609,1064311,中证A50ETF易方达,SH563080,0.65302235,1.234,0.8058,25.0,25.0,20.0,20.0,20.14,0.52598346,1.222,0.64275178,True,1753845442806,1753845442806,0.65302235,0.52598346,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.86,买入,563080.SH,300.0,20250730031722
|
||||||
|
242601367,200510609,1027747,香港银行LOF,SH501025,0.38905471,1.657,0.6447,20.0,20.0,15.0,15.0,14.97,0.29127724,1.655,0.48206383,True,1753845442806,1753845442806,0.38905471,0.29127724,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.03,买入,501025.SH,300.0,20250730031722
|
||||||
|
242592429,200433945,1027747,香港银行LOF,SH501025,0.29127724,1.655,0.4821,15.0,15.0,20.0,20.0,19.9,0.38639284,1.669,0.64488964,True,1753757740949,1753757740949,0.29127724,0.38647138,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.9,卖出,501025.SH,300.0,20250729025540
|
||||||
|
242592430,200433945,1029080,银行ETF,SH512800,0.94079595,0.854,0.8034,25.0,25.0,40.0,40.0,39.86,1.50004823,0.86,1.29004147,True,1753757740949,1753757740949,0.94079595,1.50004823,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.86,卖出,512800.SH,2000.0,20250729025540
|
||||||
|
242592431,200433945,1036743,新能源车ETF,SH515030,0.35602942,1.354,0.4821,15.0,15.0,10.0,10.0,10.14,0.24067938,1.34,0.32251036,True,1753757740949,1753757740949,0.35602942,0.24067938,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.86,买入,515030.SH,300.0,20250729025540
|
||||||
|
242592432,200433945,1064311,中证A50ETF易方达,SH563080,0.52598346,1.222,0.6428,20.0,20.0,15.0,15.0,15.12,0.39761437,1.217,0.48389668,True,1753757740949,1753757740949,0.52598346,0.39750661,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.88,买入,563080.SH,300.0,20250729025540
|
||||||
|
242592433,200433945,1036946,可转债ETF,SH511380,0.06271483,12.811,0.8034,25.0,25.0,15.0,15.0,14.98,0.03758278,12.872,0.48376554,True,1753757740949,1753757740949,0.06271483,0.03758278,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,10.02,买入,511380.SH,0.0,20250729025540
|
||||||
|
242583936,200355079,1036743,新能源车ETF,SH515030,0.24067938,1.34,0.3225,10.0,10.0,15.0,15.0,14.94,0.35964823,1.351,0.48588475,True,1753678818509,1753678818509,0.24067938,0.35964823,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.94,卖出,515030.SH,300.0,20250728050018
|
||||||
|
242583937,200355079,1036946,可转债ETF,SH511380,0.03758278,12.872,0.4838,15.0,15.0,20.0,20.0,19.97,0.05002288,12.951,0.64784631,True,1753678818509,1753678818509,0.03758278,0.05002288,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.97,卖出,511380.SH,0.0,20250728050018
|
||||||
|
242583938,200355079,1027747,香港银行LOF,SH501025,0.38639284,1.669,0.6449,20.0,20.0,15.0,15.0,15.06,0.29094896,1.67,0.48588476,True,1753678818509,1753678818509,0.38647138,0.29094896,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.94,买入,501025.SH,300.0,20250728050018
|
||||||
|
242583939,200355079,1029080,银行ETF,SH512800,1.50004823,0.86,1.29,40.0,40.0,35.0,35.0,35.03,1.3137093,0.863,1.13373112,True,1753678818509,1753678818509,1.50004823,1.3137093,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.97,买入,512800.SH,600.0,20250728050018
|
||||||
|
242570974,200228783,1027747,香港银行LOF,SH501025,0.29094896,1.67,0.4859,15.0,15.0,20.0,20.0,20.01,0.38803435,1.667,0.64685326,True,1753407516902,1753407516902,0.29094896,0.38803435,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.01,卖出,501025.SH,300.0,20250725013836
|
||||||
|
242570975,200228783,1036743,新能源车ETF,SH515030,0.35964823,1.351,0.4859,15.0,15.0,14.98,15.0,15.26,0.36585272,1.324,0.484389,True,1753407516902,1753407516902,0.35964823,0.3664199,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.26,卖出,515030.SH,0.0,20250725013836
|
||||||
|
242570976,200228783,1064311,中证A50ETF易方达,SH563080,0.39761437,1.222,0.4859,15.0,15.0,25.0,25.0,24.98,0.6622167,1.221,0.80856659,True,1753407516902,1753407516902,0.39761437,0.6622167,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-9.98,卖出,563080.SH,800.0,20250725013836
|
||||||
|
242570977,200228783,1036946,可转债ETF,SH511380,0.05002288,12.951,0.6478,20.0,20.0,15.0,15.0,15.06,0.03765671,12.884,0.48516905,True,1753407516902,1753407516902,0.05002288,0.03765445,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.94,买入,511380.SH,0.0,20250725013836
|
||||||
|
242570978,200228783,1029080,银行ETF,SH512800,1.3137093,0.863,1.1337,35.0,35.0,25.0,25.0,24.68,0.92619311,0.873,0.80856658,True,1753407516902,1753407516902,1.3137093,0.92619311,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,10.32,买入,512800.SH,1300.0,20250725013836
|
||||||
|
242549856,200058473,1036743,新能源车ETF,SH515030,0.36585272,NAN,0.4844,14.98,15.0,15.0,15.0,14.98,0.36585272,1.325,0.48475485,True,1753234804652,1753234804652,0.3664199,0.36585272,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.02,买入,515030.SH,0.0,20250723014004
|
||||||
|
242549850,200058472,1064311,中证A50ETF易方达,SH563080,0.6622167,1.221,0.8086,25.0,25.0,35.04,35.03,35.01,0.9274738,1.221,1.1324455,True,1753234804652,1753234804652,0.6622167,0.92716149,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-10.01,卖出,563080.SH,800.0,20250723014004
|
||||||
|
242549852,200058472,1029080,银行ETF,SH512800,0.92619311,0.873,0.8086,25.0,25.0,20.0,20.0,20.05,0.74291932,0.87,0.6463398,True,1753234804652,1753234804652,0.92619311,0.74291932,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.95,买入,512800.SH,600.0,20250723014004
|
||||||
|
242549853,200058472,1027747,香港银行LOF,SH501025,0.38803435,1.667,0.6469,20.0,20.0,14.96,14.97,14.96,0.29015852,1.666,0.48340409,True,1753234804652,1753234804652,0.38803435,0.29038736,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.04,买入,501025.SH,300.0,20250723014004
|
||||||
|
242549626,200056916,1027747,香港银行LOF,SH501025,0.29015852,NAN,0.4834,14.96,14.97,14.96,14.97,14.96,0.29015852,1.666,0.48340409,True,1753234511657,1753234511657,0.29038736,0.09579765,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.01,买入,501025.SH,0.0,20250723013511
|
||||||
|
242549619,200056915,1036743,新能源车ETF,SH515030,0.36585272,1.325,0.4848,15.0,15.0,35.0,35.0,35.06,0.85514786,1.308,1.1185334,True,1753234511657,1753234511657,0.36585272,0.85514786,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-20.06,卖出,515030.SH,1200.0,20250723013511
|
||||||
|
242549620,200056915,1036946,可转债ETF,SH511380,0.03765671,12.873,0.4848,15.0,15.0,20.0,20.0,20.0,0.05020122,12.732,0.63916193,True,1753234511657,1753234511657,0.03765671,0.05020122,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-5.0,卖出,511380.SH,0.0,20250723013511
|
||||||
|
242549621,200056915,1027747,香港银行LOF,SH501025,0.29015852,1.666,0.4834,14.96,14.96,5.0,5.0,4.94,0.09579765,1.668,0.15979048,True,1753234511657,1753234511657,0.29038736,0.09579765,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,10.02,买入,501025.SH,600.0,20250723013511
|
||||||
|
242549622,200056915,1029080,银行ETF,SH512800,0.74291932,0.87,0.6463,20.0,20.0,5.0,5.0,4.96,0.18430275,0.867,0.15979048,True,1753234511657,1753234511657,0.74291932,0.18430275,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,15.04,买入,512800.SH,2000.0,20250723013511
|
||||||
|
242542226,199986831,1027747,香港银行LOF,SH501025,0.09579765,1.668,0.1598,5.0,5.0,10.0,10.0,9.93,0.19024507,1.677,0.31904098,True,1753149108316,1753149108316,0.09579765,0.19024507,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.93,卖出,501025.SH,300.0,20250722015148
|
||||||
|
242542227,199986831,1064311,中证A50ETF易方达,SH563080,0.9274738,1.206,1.1185,35.0,35.0,35.0,35.0,35.12,0.93053621,1.2,1.11664345,True,1753149108316,1753149108316,0.9274738,0.93053621,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-0.12,卖出,563080.SH,0.0,20250722015148
|
||||||
|
242542228,199986831,1029080,银行ETF,SH512800,0.18430275,0.867,0.1598,5.0,5.0,10.0,10.0,9.86,0.36337242,0.878,0.31904098,True,1753149108316,1753149108316,0.18430275,0.36337242,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.86,卖出,512800.SH,600.0,20250722015148
|
||||||
|
242542229,199986831,1036743,新能源车ETF,SH515030,0.85514786,1.308,1.1185,35.0,35.0,30.0,30.0,30.11,0.73568252,1.301,0.95712295,True,1753149108316,1753149108316,0.85514786,0.73568252,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.89,买入,515030.SH,300.0,20250722015148
|
||||||
|
242542230,199986831,1036946,可转债ETF,SH511380,0.05020122,12.732,0.6392,20.0,20.0,15.0,15.0,14.99,0.03761684,12.722,0.47856143,True,1753149108316,1753149108316,0.05020122,0.03761684,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,5.01,买入,511380.SH,0.0,20250722015148
|
||||||
|
242537170,199939902,1027747,香港银行LOF,SH501025,0.19024507,1.677,0.319,10.0,10.0,15.0,15.0,14.92,0.28379924,1.685,0.47820171,True,1753074917106,1753074917106,0.19024507,0.28379924,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.92,卖出,501025.SH,300.0,20250721051517
|
||||||
|
242537171,199939902,1029080,银行ETF,SH512800,0.36337242,0.878,0.319,10.0,10.0,24.69,24.69,24.45,0.88839735,0.886,0.78712005,True,1753074917106,1753074917106,0.36337242,0.88839735,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-14.45,卖出,512800.SH,1900.0,20250721051517
|
||||||
|
242537172,199939902,1036743,新能源车ETF,SH515030,0.73568252,1.301,0.9571,30.0,30.0,25.32,25.32,25.45,0.62419573,1.293,0.80708507,True,1753074917106,1753074917106,0.73568252,0.62428811,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.55,买入,515030.SH,200.0,20250721051517
|
||||||
|
242537173,199939902,1036946,可转债ETF,SH511380,0.03761684,12.722,0.4786,15.0,15.0,9.99,9.99,10.03,0.02514573,12.665,0.31847067,True,1753074917106,1753074917106,0.03761684,0.02514665,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.97,买入,511380.SH,0.0,20250721051517
|
||||||
|
242537174,199939902,1064311,中证A50ETF易方达,SH563080,0.93053621,1.2,1.1166,35.0,35.0,25.0,25.0,25.15,0.66862658,1.192,0.79700288,True,1753074917106,1753074917106,0.93053621,0.66862658,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,9.85,买入,563080.SH,700.0,20250721051517
|
||||||
|
242522294,199803245,1027747,香港银行LOF,SH501025,0.28379924,1.685,0.4782,15.0,15.0,20.0,20.0,19.97,0.37788657,1.687,0.63749464,True,1752805077947,1752805077947,0.28379924,0.37788657,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,-4.97,卖出,501025.SH,300.0,20250718021757
|
||||||
|
242522295,199803245,1064311,中证A50ETF易方达,SH563080,0.66862658,1.192,0.797,25.0,25.0,24.65,24.65,24.67,0.65970793,1.191,0.78571214,True,1752805077947,1752805077947,0.66862658,0.65970793,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,0.33,买入,563080.SH,0.0,20250718021757
|
||||||
|
242522296,199803245,1029080,银行ETF,SH512800,0.88839735,0.886,0.7871,24.69,24.69,19.94,19.94,20.0,0.7197986,0.883,0.63558216,True,1752805077947,1752805077947,0.88839735,0.7197986,ZH1738732,择时etf,否,100.0,20.0,53034.98000000001,4.69,买入,512800.SH,600.0,20250718021757
|
||||||
|
@@ -0,0 +1,318 @@
|
|||||||
|
记录ID,调仓ID,股票ID,股票名称,股票代码,持仓数量,价格,净值,当前权重,目标权重,前期权重,前期目标权重,前期调整权重,前期数量,前期价格,前期净值,主动调仓,创建时间,更新时间,目标数量,前期目标数量,组合ID,组合名字
|
||||||
|
243221902,204505212,1061966,30年国债ETF,SH511090,0.0,119.011,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758258062041,1758258062041,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221903,204505212,1038588,短融ETF,SH511360,0.0,112.345,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758258062041,1758258062041,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221904,204505212,1056342,游戏ETF,SZ159869,0.5643041,1.616,0.9119,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758258062041,1758258062041,0.5643041,0.7864372,ZH838108,船长
|
||||||
|
243221905,204505212,1060895,碳中和100ETF,SH562990,1.19654313,0.938,1.1224,16.0,16.0,25.0,25.0,24.96,1.86630791,0.937,1.74873051,True,1758258062041,1758258062041,1.19654313,1.86630791,ZH838108,船长
|
||||||
|
243221906,204505212,1057346,恒生科技ETF,SZ159740,1.26164282,0.834,1.0522,15.0,15.0,16.09,16.07,16.02,1.34764438,0.835,1.12528305,True,1758258062041,1758258062041,1.26164282,1.34620835,ZH838108,船长
|
||||||
|
243221907,204505212,1060691,中概互联ETF,SH513220,0.38227433,1.468,0.5612,8.0,8.0,5.01,5.0,5.01,0.23930913,1.465,0.35058787,True,1758258062041,1758258062041,0.38227433,0.23873454,ZH838108,船长
|
||||||
|
243221908,204505212,1030082,传媒ETF,SH512980,0.6649037,1.055,0.7015,10.0,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758258062041,1758258062041,0.6649037,0.26810508,ZH838108,船长
|
||||||
|
243221909,204505212,1025452,国投白银LOF,SZ161226,0.91417039,1.151,1.0522,15.0,15.0,8.0,8.0,8.07,0.49173441,1.138,0.55959375,True,1758258062041,1758258062041,0.91417039,0.49173441,ZH838108,船长
|
||||||
|
243221479,204504957,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255827288,1758255827288,0.66471815,0.26810508,ZH838108,船长
|
||||||
|
243221480,204504957,1057346,恒生科技ETF,SZ159740,1.25946597,,1.0529,15.0,15.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255827288,1758255827288,1.25946597,1.34620835,ZH838108,船长
|
||||||
|
243221481,204504957,1060895,碳中和100ETF,SH562990,1.64634671,,1.5443,22.0,22.0,25.0,25.0,24.94,1.86630791,0.937,1.74873051,True,1758255827288,1758255827288,1.64634671,1.86630791,ZH838108,船长
|
||||||
|
243221483,204504957,1060691,中概互联ETF,SH513220,0.23930913,,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255827288,1758255827288,0.38149041,0.23873454,ZH838108,船长
|
||||||
|
243221485,204504957,1056342,游戏ETF,SZ159869,0.56433214,,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255827288,1758255827288,0.56433214,0.7864372,ZH838108,船长
|
||||||
|
243221486,204504957,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255827288,1758255827288,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221487,204504957,1025452,国投白银LOF,SZ161226,0.49173441,,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255827288,1758255827288,0.91717208,0.49173441,ZH838108,船长
|
||||||
|
243221488,204504957,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255827288,1758255827288,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221469,204504910,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255728035,1758255728035,0.66471815,0.26810508,ZH838108,船长
|
||||||
|
243221470,204504910,1057346,恒生科技ETF,SZ159740,1.25946597,,1.0529,15.0,15.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255728035,1758255728035,1.25946597,1.34620835,ZH838108,船长
|
||||||
|
243221473,204504910,1060691,中概互联ETF,SH513220,0.23930913,,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255728035,1758255728035,0.38149041,0.23873454,ZH838108,船长
|
||||||
|
243221475,204504910,1056342,游戏ETF,SZ159869,0.56433214,,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255728035,1758255728035,0.56433214,0.7864372,ZH838108,船长
|
||||||
|
243221476,204504910,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255728035,1758255728035,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221477,204504910,1025452,国投白银LOF,SZ161226,0.49173441,,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255728035,1758255728035,0.91717208,0.49173441,ZH838108,船长
|
||||||
|
243221478,204504910,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255728035,1758255728035,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221459,204504887,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,10.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255709271,1758255709271,0.66471815,0.26810508,ZH838108,船长
|
||||||
|
243221460,204504887,1057346,恒生科技ETF,SZ159740,1.34764438,,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255709271,1758255709271,1.59532357,1.34620835,ZH838108,船长
|
||||||
|
243221463,204504887,1060691,中概互联ETF,SH513220,0.23930913,,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255709271,1758255709271,0.38149041,0.23873454,ZH838108,船长
|
||||||
|
243221465,204504887,1056342,游戏ETF,SZ159869,0.56433214,,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255709271,1758255709271,0.56433214,0.7864372,ZH838108,船长
|
||||||
|
243221466,204504887,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255709271,1758255709271,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221467,204504887,1025452,国投白银LOF,SZ161226,0.49173441,,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255709271,1758255709271,0.91717208,0.49173441,ZH838108,船长
|
||||||
|
243221468,204504887,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255709271,1758255709271,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221449,204504865,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758255683804,1758255683804,0.39883089,0.26810508,ZH838108,船长
|
||||||
|
243221450,204504865,1057346,恒生科技ETF,SZ159740,1.34764438,,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758255683804,1758255683804,1.59532357,1.34620835,ZH838108,船长
|
||||||
|
243221453,204504865,1060691,中概互联ETF,SH513220,0.23930913,,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758255683804,1758255683804,0.38149041,0.23873454,ZH838108,船长
|
||||||
|
243221455,204504865,1056342,游戏ETF,SZ159869,0.56433214,,0.9125,13.0,13.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758255683804,1758255683804,0.56433214,0.7864372,ZH838108,船长
|
||||||
|
243221456,204504865,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758255683804,1758255683804,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221457,204504865,1025452,国投白银LOF,SZ161226,0.49173441,,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758255683804,1758255683804,0.91717208,0.49173441,ZH838108,船长
|
||||||
|
243221458,204504865,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758255683804,1758255683804,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221374,204504280,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758254880550,1758254880550,0.39883089,0.26810508,ZH838108,船长
|
||||||
|
243221375,204504280,1057346,恒生科技ETF,SZ159740,1.34764438,,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758254880550,1758254880550,1.59532357,1.34620835,ZH838108,船长
|
||||||
|
243221378,204504280,1060691,中概互联ETF,SH513220,0.23930913,,0.3523,5.02,8.0,5.01,5.0,5.02,0.23930913,1.465,0.35058787,True,1758254880550,1758254880550,0.38149041,0.23873454,ZH838108,船长
|
||||||
|
243221380,204504280,1056342,游戏ETF,SZ159869,0.69456264,,1.1231,16.0,16.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758254880550,1758254880550,0.69456264,0.7864372,ZH838108,船长
|
||||||
|
243221381,204504280,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758254880550,1758254880550,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221382,204504280,1025452,国投白银LOF,SZ161226,0.49173441,,0.5645,8.04,15.0,8.0,8.0,8.04,0.49173441,1.138,0.55959375,True,1758254880550,1758254880550,0.91717208,0.49173441,ZH838108,船长
|
||||||
|
243221383,204504280,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758254880550,1758254880550,0.0,0.00299214,ZH838108,船长
|
||||||
|
243221364,204504271,1030082,传媒ETF,SH512980,0.26771357,,0.2827,4.03,6.0,3.98,3.99,4.03,0.26771357,1.041,0.27868982,True,1758254850134,1758254850134,0.39883089,0.26810508,ZH838108,船长
|
||||||
|
243221365,204504271,1057346,恒生科技ETF,SZ159740,1.34764438,,1.1266,16.05,19.0,16.09,16.07,16.05,1.34764438,0.835,1.12528305,True,1758254850134,1758254850134,1.59532357,1.34620835,ZH838108,船长
|
||||||
|
243221370,204504271,1056342,游戏ETF,SZ159869,0.69456264,,1.1231,16.0,16.0,18.0,18.0,18.12,0.7864372,1.601,1.25908595,True,1758254850134,1758254850134,0.69456264,0.7864372,ZH838108,船长
|
||||||
|
243221371,204504271,1038588,短融ETF,SH511360,0.0,,0.0,0.0,0.0,2.04,2.04,2.04,0.00127164,112.346,0.14286366,True,1758254850134,1758254850134,0.0,0.00127015,ZH838108,船长
|
||||||
|
243221373,204504271,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,0.0,5.1,5.1,5.08,0.00299255,119.226,0.35678976,True,1758254850134,1758254850134,0.0,0.00299214,ZH838108,船长
|
||||||
|
243220115,204488875,1056342,游戏ETF,SZ159869,0.7864372,1.601,1.2591,18.0,18.0,31.97,32.0,31.46,1.37445218,1.661,2.28296507,True,1758247260289,1758247260289,0.7864372,1.37567597,ZH838108,船长
|
||||||
|
243220116,204488875,1060895,碳中和100ETF,SH562990,1.86630791,0.937,1.7487,25.0,25.0,28.97,29.0,29.23,2.18232331,0.948,2.06884249,True,1758247260289,1758247260289,1.86630791,2.18436629,ZH838108,船长
|
||||||
|
243220117,204488875,1025452,国投白银LOF,SZ161226,0.49173441,1.138,0.5596,8.0,8.0,,,,,,,True,1758247260289,1758247260289,0.49173441,,ZH838108,船长
|
||||||
|
243211420,204396469,1030082,传媒ETF,SH512980,0.26771357,,0.2867,4.02,4.0,4.02,4.02,4.02,0.26771357,1.073,0.28725666,True,1758164382409,1758164382409,0.26668975,0.26744655,ZH838108,船长
|
||||||
|
243211421,204396469,1060895,碳中和100ETF,SH562990,2.18232331,,2.0688,28.97,29.0,28.97,29.0,28.97,2.18232331,0.948,2.06884249,True,1758164382409,1758164382409,2.18436629,,ZH838108,船长
|
||||||
|
243211412,204396468,1060895,碳中和100ETF,SH562990,2.18232331,0.948,2.0688,28.97,28.97,,,,,,,True,1758164382409,1758164382409,2.18436629,,ZH838108,船长
|
||||||
|
243211403,204396392,1056342,游戏ETF,SZ159869,1.37445218,1.662,2.2843,32.0,32.0,29.96,29.97,29.97,1.28726563,1.662,2.13943547,True,1758164341721,1758164341721,1.37445218,1.2876974,ZH838108,船长
|
||||||
|
243211373,204396301,1060691,中概互联ETF,SH513220,0.23930913,1.492,0.357,5.0,5.0,8.02,8.02,8.03,0.38423302,1.493,0.57365989,True,1758164291481,1758164291481,0.23930913,0.38423513,ZH838108,船长
|
||||||
|
243211277,204395639,1056342,游戏ETF,SZ159869,1.28726563,1.667,2.1459,30.0,30.0,14.96,14.95,14.99,0.64315789,1.665,1.07085788,True,1758163985274,1758163985274,1.28726563,0.64264875,ZH838108,船长
|
||||||
|
243210358,204388515,1061419,中韩半导体ETF,SH513310,0.16054864,2.229,0.3579,5.0,5.0,3.0,3.0,3.03,0.09739179,2.201,0.21435932,True,1758161804000,1758161804000,0.16054864,0.09735368,ZH838108,船长
|
||||||
|
243210003,204384854,1057346,恒生科技ETF,SZ159740,1.34764438,0.848,1.1428,16.0,16.0,10.0,10.0,10.09,0.8500984,0.839,0.71323255,True,1758160934424,1758160934424,1.34764438,0.8500984,ZH838108,船长
|
||||||
|
243209467,204380788,1060691,中概互联ETF,SH513220,0.38423302,1.485,0.5706,8.0,8.0,10.01,10.01,9.97,0.47880796,1.491,0.71390266,True,1758160044251,1758160044251,0.38423302,0.47898735,ZH838108,船长
|
||||||
|
243209468,204380788,1057346,恒生科技ETF,SZ159740,0.8500984,0.839,0.7132,10.0,10.0,13.01,13.01,12.98,1.10353565,0.841,0.92807348,True,1758160044251,1758160044251,0.8500984,1.10369458,ZH838108,船长
|
||||||
|
243209469,204380788,1061419,中韩半导体ETF,SH513310,0.09739179,2.197,0.214,3.0,3.0,,,,,,,True,1758160044251,1758160044251,0.09739179,,ZH838108,船长
|
||||||
|
243209297,204379551,1030082,传媒ETF,SH512980,0.26771357,1.066,0.2854,4.0,4.0,,,,,,,True,1758159787124,1758159787124,0.26771357,,ZH838108,船长
|
||||||
|
243209276,204379274,1056342,游戏ETF,SZ159869,0.64315789,1.664,1.0702,15.0,15.0,12.0,12.0,11.95,0.51237034,1.672,0.8566832,True,1758159736178,1758159736178,0.64315789,0.51237034,ZH838108,船长
|
||||||
|
243209256,204379120,1060691,中概互联ETF,SH513220,0.47880796,1.491,0.7139,10.0,10.0,13.0,13.0,12.84,0.61477925,1.514,0.93077578,True,1758159704915,1758159704915,0.47880796,0.61477925,ZH838108,船长
|
||||||
|
243209257,204379120,1057346,恒生科技ETF,SZ159740,1.10353565,0.841,0.9281,13.0,13.0,16.26,16.21,16.19,1.37407159,0.847,1.16383863,True,1758159704915,1758159704915,1.10353565,1.37025479,ZH838108,船长
|
||||||
|
243209258,204379120,1056342,游戏ETF,SZ159869,0.51237034,1.672,0.8567,12.0,12.0,8.03,8.0,8.08,0.34486412,1.668,0.57523335,True,1758159704915,1758159704915,0.51237034,0.34339634,ZH838108,船长
|
||||||
|
243208775,204376225,1060691,中概互联ETF,SH513220,0.61477925,1.514,0.9308,13.0,13.0,18.05,18.0,17.79,0.84112486,1.541,1.2961734,True,1758159310767,1758159310767,0.61477925,0.83888591,ZH838108,船长
|
||||||
|
243208693,204376047,1056342,游戏ETF,SZ159869,0.34486412,1.666,0.5745,8.0,8.0,4.05,4.06,4.05,0.17451463,1.666,0.29074137,True,1758159289996,1758159289996,0.34486412,0.17491627,ZH838108,船长
|
||||||
|
243208687,204375945,1060691,中概互联ETF,SH513220,0.84112486,1.536,1.292,18.0,18.0,15.0,15.0,15.32,0.71571929,1.497,1.07143177,True,1758159277398,1758159277398,0.84112486,0.71571929,ZH838108,船长
|
||||||
|
243208127,204368078,1025452,国投白银LOF,SZ161226,0.0,1.136,0.0,0.0,0.0,50.0,50.0,49.46,3.10985386,1.147,3.56700237,True,1758159131138,1758159131138,0.0,3.10985386,ZH838108,船长
|
||||||
|
243208128,204368078,1061593,创50ETF,SZ159681,0.098795,1.446,0.1429,2.0,2.0,5.02,5.03,5.0,0.24703804,1.449,0.35795811,True,1758159131138,1758159131138,0.098795,0.24764695,ZH838108,船长
|
||||||
|
243208129,204368078,1060691,中概互联ETF,SH513220,0.71571929,1.497,1.0714,15.0,15.0,25.0,25.0,25.27,1.20588315,1.479,1.78350117,True,1758159131138,1758159131138,0.71571929,1.20588315,ZH838108,船长
|
||||||
|
243208130,204368078,1038588,短融ETF,SH511360,0.00127164,112.341,0.1429,2.0,2.0,,,,,,,True,1758159131138,1758159131138,0.00127164,,ZH838108,船长
|
||||||
|
243208131,204368078,1061966,30年国债ETF,SH511090,0.00299255,119.344,0.3571,5.0,5.0,,,,,,,True,1758159131138,1758159131138,0.00299255,,ZH838108,船长
|
||||||
|
243203609,204336522,1038588,短融ETF,SH511360,0.0,,0.0,0.0,2.0,,,,,,,True,1758135916993,1758135916993,0.00127372,,ZH838108,船长
|
||||||
|
243203610,204336522,1025452,国投白银LOF,SZ161226,0.0,,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758135916993,1758135916993,0.0,3.10985386,ZH838108,船长
|
||||||
|
243203611,204336522,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,5.0,,,,,,,True,1758135916993,1758135916993,0.00299332,,ZH838108,船长
|
||||||
|
243203612,204336522,1064455,30年国债ETF博时,SH511130,0.0,,0.0,0.0,0.0,,,,,,,True,1758135916993,1758135916993,0.0,,ZH838108,船长
|
||||||
|
243203601,204336493,1038588,短融ETF,SH511360,0.0,,0.0,0.0,2.0,,,,,,,True,1758135892640,1758135892640,0.00127372,,ZH838108,船长
|
||||||
|
243203602,204336493,1025452,国投白银LOF,SZ161226,0.0,,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758135892640,1758135892640,0.0,3.10985386,ZH838108,船长
|
||||||
|
243203603,204336493,1061966,30年国债ETF,SH511090,0.0,,0.0,0.0,2.0,,,,,,,True,1758135892640,1758135892640,0.00119733,,ZH838108,船长
|
||||||
|
243203604,204336493,1064455,30年国债ETF博时,SH511130,0.0,,0.0,0.0,2.0,,,,,,,True,1758135892640,1758135892640,0.00132912,,ZH838108,船长
|
||||||
|
243203581,204335092,1025452,国投白银LOF,SZ161226,0.0,,0.0,0.0,0.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758134307681,1758134307681,0.0,3.10985386,ZH838108,船长
|
||||||
|
243203574,204334268,1025452,国投白银LOF,SZ161226,1.87436109,,2.1461,30.0,30.0,50.0,50.0,49.77,3.10985386,1.147,3.56700237,True,1758133372449,1758133372449,1.87436109,3.10985386,ZH838108,船长
|
||||||
|
243201335,204283982,1025452,国投白银LOF,SZ161226,3.10985386,1.147,3.567,50.0,50.0,50.0,50.0,49.98,3.10891199,1.145,3.55970422,True,1758085259722,1758085259722,3.10985386,3.10891199,ZH838108,船长
|
||||||
|
243201336,204283982,1060691,中概互联ETF,SH513220,1.20588315,1.479,1.7835,25.0,25.0,24.99,25.0,24.97,1.20456002,1.477,1.77913514,True,1758085259722,1758085259722,1.20588315,1.20504544,ZH838108,船长
|
||||||
|
243199859,204280803,1023539,黄金ETF,SZ159934,0.0,7.903,0.0,0.0,0.0,18.0,18.0,18.0,0.16215617,7.905,1.28184452,True,1758078374277,1758078374277,0.0,0.16215617,ZH838108,船长
|
||||||
|
243199860,204280803,1057346,恒生科技ETF,SZ159740,1.37407159,0.829,1.1391,16.0,16.0,9.0,9.0,9.0,0.77312701,0.829,0.64092229,True,1758078374277,1758078374277,1.37407159,0.77312701,ZH838108,船长
|
||||||
|
243199861,204280803,1025452,国投白银LOF,SZ161226,3.10891199,1.145,3.5597,50.0,50.0,39.0,39.0,39.01,2.42561568,1.145,2.77732995,True,1758078374277,1758078374277,3.10891199,2.42561568,ZH838108,船长
|
||||||
|
243199851,204280742,1023286,黄金ETF,SH518880,0.0,7.984,0.0,0.0,0.0,11.0,11.0,10.99,0.09803331,7.984,0.78269794,True,1758078341190,1758078341190,0.0,0.09802577,ZH838108,船长
|
||||||
|
243199852,204280742,1023539,黄金ETF,SZ159934,0.16215617,7.905,1.2818,18.0,18.0,21.2,21.2,21.18,0.19077117,7.905,1.50804609,True,1758078341190,1758078341190,0.16215617,0.19081042,ZH838108,船长
|
||||||
|
243199853,204280742,1057346,恒生科技ETF,SZ159740,0.77312701,0.829,0.6409,9.0,9.0,6.7,8.0,6.71,0.57607484,0.828,0.47698996,True,1758078341190,1758078341190,0.77312701,0.68742885,ZH838108,船长
|
||||||
|
243199854,204280742,1060691,中概互联ETF,SH513220,1.20456002,1.478,1.7803,25.0,25.0,20.14,20.13,20.18,0.97208882,1.474,1.43285892,True,1758078341190,1758078341190,1.20456002,0.97166016,ZH838108,船长
|
||||||
|
243199855,204280742,1025452,国投白银LOF,SZ161226,2.42561568,1.145,2.7773,39.0,39.0,32.02,32.02,31.99,1.98945665,1.145,2.27792786,True,1758078341190,1758078341190,2.42561568,1.98968327,ZH838108,船长
|
||||||
|
243199847,204280552,1056342,游戏ETF,SZ159869,0.17451463,,0.2794,3.93,2.0,3.93,2.0,3.93,0.17451463,1.601,0.27939792,True,1758078237157,1758078237157,0.08888055,0.44374209,ZH838108,船长
|
||||||
|
243199848,204280552,1057346,恒生科技ETF,SZ159740,0.57607484,,0.477,6.7,8.0,6.7,8.0,6.7,0.57607484,0.828,0.47698996,True,1758078237157,1758078237157,0.68742885,,ZH838108,船长
|
||||||
|
243199840,204280551,1056342,游戏ETF,SZ159869,0.17451463,1.601,0.2794,3.93,3.93,10.0,10.0,9.99,0.44374209,1.6,0.70998734,True,1758078237157,1758078237157,0.08888055,0.44374209,ZH838108,船长
|
||||||
|
243199841,204280551,1057346,恒生科技ETF,SZ159740,0.57607484,0.828,0.477,6.7,6.7,,,,,,,True,1758078237157,1758078237157,0.68742885,,ZH838108,船长
|
||||||
|
243199541,204278815,1058885,游戏传媒ETF,SH517770,0.0,1.294,0.0,0.0,0.0,2.0,2.0,2.0,0.10969856,1.294,0.14194993,True,1758077340722,1758077340722,0.0,0.10971557,ZH838108,船长
|
||||||
|
243199542,204278815,1025452,国投白银LOF,SZ161226,1.98945665,1.142,2.272,32.0,32.0,31.93,31.95,31.92,1.98456999,1.142,2.26637892,True,1758077340722,1758077340722,1.98945665,1.98599128,ZH838108,船长
|
||||||
|
243199543,204278815,1056342,游戏ETF,SZ159869,0.44374209,1.6,0.71,10.0,10.0,9.01,9.0,9.02,0.40016576,1.599,0.63986505,True,1758077340722,1758077340722,0.44374209,0.39954585,ZH838108,船长
|
||||||
|
243199544,204278815,1061593,创50ETF,SZ159681,0.24703804,1.437,0.355,5.0,5.0,4.0,4.0,4.0,0.19787032,1.435,0.2839439,True,1758077340722,1758077340722,0.24703804,0.19787032,ZH838108,船长
|
||||||
|
243199526,204278726,1030082,传媒ETF,SH512980,0.0,1.049,0.0,0.0,0.0,1.0,1.0,1.0,0.06761953,1.048,0.07086526,True,1758077299971,1758077299971,0.0,0.06762767,ZH838108,船长
|
||||||
|
243199527,204278726,1061593,创50ETF,SZ159681,0.19787032,1.435,0.2839,4.0,4.0,3.01,3.01,3.04,0.15035065,1.418,0.21319722,True,1758077299971,1758077299971,0.19787032,0.15044439,ZH838108,船长
|
||||||
|
243199316,204276290,1056342,游戏ETF,SZ159869,0.40016576,1.594,0.6379,9.0,9.0,9.0,9.0,8.98,0.39923481,1.598,0.63797722,True,1758076553136,1758076553136,0.40016576,0.39923481,ZH838108,船长
|
||||||
|
243199181,204275243,1063856,黄金股ETF,SH517520,0.0,1.826,0.0,0.0,0.0,1.0,1.01,1.0,0.03893499,1.828,0.07117316,True,1758076319498,1758076319498,0.0,0.03915422,ZH838108,船长
|
||||||
|
243199182,204275243,1025452,国投白银LOF,SZ161226,1.98456999,1.143,2.2684,32.0,32.0,31.97,31.98,31.96,1.98239185,1.143,2.26587388,True,1758076319498,1758076319498,1.98456999,1.98273972,ZH838108,船长
|
||||||
|
243199183,204275243,1056342,游戏ETF,SZ159869,0.39923481,1.598,0.638,9.0,9.0,7.98,7.97,7.99,0.35461688,1.595,0.56561392,True,1758076319498,1758076319498,0.39923481,0.35410422,ZH838108,船长
|
||||||
|
243199122,204274961,1058885,游戏传媒ETF,SH517770,0.10969856,1.292,0.1417,2.0,2.0,13.0,13.0,12.96,0.71111058,1.299,0.92373264,True,1758076260795,1758076260795,0.10969856,0.71111058,ZH838108,船长
|
||||||
|
243199123,204274961,1030082,传媒ETF,SH512980,0.06761953,1.048,0.0709,1.0,1.0,4.0,4.0,3.99,0.26991968,1.053,0.28422542,True,1758076260795,1758076260795,0.06761953,0.26991968,ZH838108,船长
|
||||||
|
243199124,204274961,1061593,创50ETF,SZ159681,0.15035065,1.414,0.2126,3.0,3.0,,,,,,,True,1758076260795,1758076260795,0.15035065,,ZH838108,船长
|
||||||
|
243199125,204274961,1060691,中概互联ETF,SH513220,0.97208882,1.458,1.4173,20.0,20.0,9.0,9.0,9.0,0.43741944,1.462,0.63950722,True,1758076260795,1758076260795,0.97208882,0.43741944,ZH838108,船长
|
||||||
|
243197555,204263483,1063856,黄金股ETF,SH517520,0.03893499,1.825,0.0711,1.0,1.0,3.04,3.04,2.99,0.11638607,1.854,0.21577977,True,1758073888360,1758073888360,0.03893499,0.11653594,ZH838108,船长
|
||||||
|
243197556,204263483,1058885,游戏传媒ETF,SH517770,0.71111058,1.299,0.9237,13.0,13.0,15.11,15.08,15.16,0.82920124,1.295,1.0738156,True,1758073888360,1758073888360,0.71111058,0.82761361,ZH838108,船长
|
||||||
|
243197557,204263483,1030082,传媒ETF,SH512980,0.26991968,1.053,0.2842,4.0,4.0,7.02,7.0,7.04,0.47488378,1.051,0.49910285,True,1758073888360,1758073888360,0.26991968,0.4733598,ZH838108,船长
|
||||||
|
243197558,204263483,1025452,国投白银LOF,SZ161226,1.98239185,1.147,2.2738,32.0,32.0,30.91,31.19,30.95,1.91712668,1.146,2.19702717,True,1758073888360,1758073888360,1.98239185,1.93431326,ZH838108,船长
|
||||||
|
243197559,204263483,1056342,游戏ETF,SZ159869,0.35461688,1.603,0.5685,8.0,8.0,6.07,6.0,6.07,0.26922746,1.603,0.43157161,True,1758073888360,1758073888360,0.35461688,0.26601968,ZH838108,船长
|
||||||
|
243197560,204263483,1060691,中概互联ETF,SH513220,0.43741944,1.462,0.6395,9.0,9.0,,,,,,,True,1758073888360,1758073888360,0.43741944,,ZH838108,船长
|
||||||
|
243196083,204126868,1057876,锂电池ETF,SZ159840,0.0,0.772,0.0,0.0,0.0,2.0,2.0,2.04,0.1878941,0.759,0.14261162,True,1758072762110,1758072762110,0.0,0.1878941,ZH838108,船长
|
||||||
|
243184255,204091462,1057876,锂电池ETF,SZ159840,0.1878941,0.759,0.1426,2.0,2.0,5.0,5.0,4.99,0.46908163,0.76,0.35650203,True,1757992598575,1757992598575,0.1878941,0.46911756,ZH838108,船长
|
||||||
|
243184245,204091352,1063856,黄金股ETF,SH517520,0.11638607,1.838,0.2139,3.0,3.0,4.86,4.86,4.86,0.18853477,1.838,0.3465269,True,1757992524095,1757992524095,0.11638607,0.188531,ZH838108,船长
|
||||||
|
243184246,204091352,1023286,黄金ETF,SH518880,0.09803331,8.001,0.7844,11.0,11.0,8.01,8.0,8.01,0.07135133,8.0,0.57081064,True,1757992524095,1757992524095,0.09803331,0.0713004,ZH838108,船长
|
||||||
|
243184234,204091295,1057876,锂电池ETF,SZ159840,0.46908163,0.76,0.3565,5.0,5.0,11.94,11.92,11.55,1.08345683,0.786,0.85159706,True,1757992485424,1757992485424,0.46908163,1.08201508,ZH838108,船长
|
||||||
|
243184235,204091295,1056342,游戏ETF,SZ159869,0.26922746,1.589,0.4278,6.0,6.0,4.0,4.0,3.96,0.17770271,1.606,0.28539055,True,1757992485424,1757992485424,0.26922746,0.17770271,ZH838108,船长
|
||||||
|
243184236,204091295,1030082,传媒ETF,SH512980,0.47488378,1.051,0.4991,7.0,7.0,4.0,4.0,4.04,0.27388729,1.042,0.28539055,True,1757992485424,1757992485424,0.47488378,0.27388729,ZH838108,船长
|
||||||
|
243171698,203935274,1030082,传媒ETF,SH512980,0.27388729,1.042,0.2854,4.0,4.0,8.11,8.1,8.1,0.55481007,1.043,0.5786669,True,1757905305945,1757905305945,0.27388729,0.55423715,ZH838108,船长
|
||||||
|
243171699,203935274,1056342,游戏ETF,SZ159869,0.17770271,1.606,0.2854,4.0,4.0,,,,,,,True,1757905305945,1757905305945,0.17770271,,ZH838108,船长
|
||||||
|
243171425,203933524,1023539,黄金ETF,SZ159934,0.19077117,7.856,1.4987,21.0,21.0,25.91,25.91,25.87,0.2350396,7.864,1.84835141,True,1757904624170,1757904624170,0.19077117,0.2350073,ZH838108,船长
|
||||||
|
243171426,203933524,1058885,游戏传媒ETF,SH517770,0.82920124,1.291,1.0705,15.0,15.0,15.0,15.0,15.07,0.83326606,1.284,1.06991362,True,1757904624170,1757904624170,0.82920124,0.83326606,ZH838108,船长
|
||||||
|
243171427,203933524,1063856,黄金股ETF,SH517520,0.18853477,1.892,0.3567,5.0,5.0,2.96,2.96,2.97,0.11200854,1.886,0.2112481,True,1757904624170,1757904624170,0.18860091,0.11194571,ZH838108,船长
|
||||||
|
243171428,203933524,1025452,国投白银LOF,SZ161226,1.91712668,1.154,2.2124,31.0,31.0,27.96,27.96,27.92,1.72665274,1.155,1.99428391,True,1757904624170,1757904624170,1.91712668,1.72668311,ZH838108,船长
|
||||||
|
243171052,203929398,1058885,游戏传媒ETF,SH517770,0.83326606,1.284,1.0699,15.0,15.0,19.11,18.96,19.05,1.05820686,1.285,1.35979581,True,1757903173811,1757903173811,0.83326606,1.04976595,ZH838108,船长
|
||||||
|
243171053,203929398,1057876,锂电池ETF,SZ159840,1.08345683,0.79,0.8559,12.0,12.0,,,,,,,True,1757903173811,1757903173811,1.08345683,,ZH838108,船长
|
||||||
|
243169632,203875795,1064799,储能电池ETF广发,SZ159305,0.0,1.775,0.0,0.0,0.0,7.95,11.0,8.13,0.32601746,1.734,0.56531427,True,1757900014730,1757900014730,0.0,0.4508471,ZH838108,船长
|
||||||
|
243164749,203855165,1030082,传媒ETF,SH512980,0.55481007,,0.5687,8.0,0.0,8.0,8.0,8.0,0.55481007,1.025,0.56868032,True,1757658134841,1757658134841,0.0,0.55481007,ZH838108,船长
|
||||||
|
243164750,203855165,1064799,储能电池ETF广发,SZ159305,0.32601746,,0.5653,7.95,11.0,7.95,11.0,7.95,0.32601746,1.734,0.56531427,True,1757658134841,1757658134841,0.4508471,0.0,ZH838108,船长
|
||||||
|
243164743,203855164,1064799,储能电池ETF广发,SZ159305,0.32601746,1.734,0.5653,7.95,7.95,1.33,0.0,1.33,0.0544934,1.736,0.09460054,True,1757658134841,1757658134841,0.4508471,0.0,ZH838108,船长
|
||||||
|
243164732,203855103,1064799,储能电池ETF广发,SZ159305,0.0544934,,0.0946,1.33,0.0,1.33,0.0,1.33,0.0544934,1.736,0.09460054,True,1757658080767,1757658080767,0.0,0.65250128,ZH838108,船长
|
||||||
|
243164725,203855102,1064799,储能电池ETF广发,SZ159305,0.0544934,1.736,0.0946,1.33,1.33,16.0,16.0,15.94,0.65250128,1.744,1.13796223,True,1757658080767,1757658080767,0.0,0.65250128,ZH838108,船长
|
||||||
|
243164726,203855102,1030082,传媒ETF,SH512980,0.55481007,1.025,0.5687,8.0,8.0,,,,,,,True,1757658080767,1757658080767,0.55481007,,ZH838108,船长
|
||||||
|
242966263,204481502,1036946,可转债ETF,SH511380,0.06501263,13.21,0.8588,25.0,25.0,25.0,25.0,25.07,0.0651899,13.343,0.86982883,True,1758245815011,1758245815011,0.06501263,0.0651899,ZH1738732,择时etf
|
||||||
|
242966264,204481502,1036743,新能源车ETF,SH515030,0.60127202,1.714,1.0306,30.0,30.0,35.0,35.0,35.14,0.70431486,1.729,1.21776039,True,1758245815011,1758245815011,0.60127202,0.70431486,ZH1738732,择时etf
|
||||||
|
242966265,204481502,1029080,银行ETF,SH512800,0.87300318,0.787,0.6871,20.0,20.0,20.0,20.0,19.78,0.8633537,0.806,0.69586308,True,1758245815011,1758245815011,0.87300318,0.8633537,ZH1738732,择时etf
|
||||||
|
242966266,204481502,1064311,中证A50ETF易方达,SH563080,0.65658783,1.308,0.8588,25.0,25.0,20.0,20.0,20.01,0.52557635,1.324,0.69586308,True,1758245815011,1758245815011,0.65658783,0.52557635,ZH1738732,择时etf
|
||||||
|
242953156,204369507,1036946,可转债ETF,SH511380,0.0651899,13.343,0.8698,25.0,25.0,29.7,29.7,29.74,0.07753822,13.301,1.03133586,True,1758159030751,1758159030751,0.0651899,0.07753822,ZH1738732,择时etf
|
||||||
|
242953157,204369507,1036743,新能源车ETF,SH515030,0.70431486,1.729,1.2178,35.0,35.0,40.31,40.3,40.33,0.81149349,1.725,1.39982627,True,1758159030751,1758159030751,0.70431486,0.81125922,ZH1738732,择时etf
|
||||||
|
242953158,204369507,1064311,中证A50ETF易方达,SH563080,0.52557635,1.324,0.6959,20.0,20.0,15.0,15.0,15.02,0.39471764,1.32,0.52102728,True,1758159030751,1758159030751,0.52557635,0.39460358,ZH1738732,择时etf
|
||||||
|
242953159,204369507,1029080,银行ETF,SH512800,0.8633537,0.806,0.6959,20.0,20.0,14.86,15.0,14.8,0.63878716,0.808,0.51614002,True,1758159030751,1758159030751,0.8633537,0.64464942,ZH1738732,择时etf
|
||||||
|
242952851,204369397,1036743,新能源车ETF,SH515030,0.81149349,,1.4047,40.38,35.0,40.31,40.3,40.38,0.81149349,1.725,1.39982627,True,1758158314231,1758158314231,0.70343215,0.81125922,ZH1738732,择时etf
|
||||||
|
242952854,204369397,1029080,银行ETF,SH512800,0.63878716,,0.5142,14.78,20.28,14.86,15.0,14.78,0.63878716,0.808,0.51614002,True,1758158314231,1758158314231,0.87644226,0.64464942,ZH1738732,择时etf
|
||||||
|
242945487,204278901,1029080,银行ETF,SH512800,0.63878716,,0.5161,14.86,15.0,15.0,15.0,14.86,0.63878716,0.807,0.51550123,True,1758077376382,1758077376382,0.64464942,0.63878716,ZH1738732,择时etf
|
||||||
|
242945482,204278900,1036946,可转债ETF,SH511380,0.07753822,13.301,1.0313,29.7,29.7,30.0,30.0,29.82,0.07785263,13.243,1.03100237,True,1758077376382,1758077376382,0.07753822,0.07785263,ZH1738732,择时etf
|
||||||
|
242932438,204108965,1064311,中证A50ETF易方达,SH563080,0.39471764,1.306,0.5155,15.0,15.0,20.0,20.0,19.95,0.52504883,1.305,0.68518872,True,1758005464047,1758005464047,0.39471764,0.52504883,ZH1738732,择时etf
|
||||||
|
242932439,204108965,1029080,银行ETF,SH512800,0.63878716,0.807,0.5155,15.0,15.0,20.0,20.0,19.77,0.84175519,0.814,0.68518872,True,1758005464047,1758005464047,0.63878716,0.84175519,ZH1738732,择时etf
|
||||||
|
242932440,204108965,1036946,可转债ETF,SH511380,0.07785263,13.243,1.031,30.0,30.0,20.0,20.0,20.06,0.05205414,13.163,0.68518864,True,1758005464047,1758005464047,0.07785263,0.05205414,ZH1738732,择时etf
|
||||||
|
242932441,204108965,1036743,新能源车ETF,SH515030,0.81149349,1.694,1.3747,40.0,40.0,20.0,20.0,20.28,0.41152476,1.665,0.68518872,True,1758005464047,1758005464047,0.81149349,0.41152476,ZH1738732,择时etf
|
||||||
|
242929135,204083008,1029080,银行ETF,SH512800,0.84175519,0.814,0.6852,20.0,20.0,25.0,25.0,25.06,1.05455457,0.823,0.86789841,True,1757990159085,1757990159085,0.84175519,1.05455457,ZH1738732,择时etf
|
||||||
|
242929136,204083008,1064311,中证A50ETF易方达,SH563080,0.52504883,1.305,0.6852,20.0,20.0,29.44,29.44,29.52,0.77485759,1.319,1.02203716,True,1757990159085,1757990159085,0.52504883,0.77485759,ZH1738732,择时etf
|
||||||
|
242929137,204083008,1036946,可转债ETF,SH511380,0.05205414,13.163,0.6852,20.0,20.0,20.0,20.0,20.08,0.05225156,13.288,0.69431872,True,1757990159085,1757990159085,0.05205414,0.05225156,ZH1738732,择时etf
|
||||||
|
242929138,204083008,1036743,新能源车ETF,SH515030,0.41152476,1.665,0.6852,20.0,20.0,25.56,25.56,25.35,0.52165485,1.701,0.88733489,True,1757990159085,1757990159085,0.41152476,0.52165746,ZH1738732,择时etf
|
||||||
|
242917660,203936625,1036946,可转债ETF,SH511380,0.05225156,13.288,0.6943,20.0,20.0,25.0,25.0,25.02,0.06535878,13.315,0.87025215,True,1757906236022,1757906236022,0.05225156,0.06535878,ZH1738732,择时etf
|
||||||
|
242917661,203936625,1064311,中证A50ETF易方达,SH563080,0.77485759,1.319,1.022,29.44,29.44,29.33,29.35,29.32,0.77170093,1.323,1.02096033,True,1757906236022,1757906236022,0.77485759,0.77224198,ZH1738732,择时etf
|
||||||
|
242917662,203936625,1029080,银行ETF,SH512800,1.05455457,0.823,0.8679,25.0,25.0,20.0,20.0,20.1,0.84799245,0.821,0.6962018,True,1757906236022,1757906236022,1.05455457,0.84799245,ZH1738732,择时etf
|
||||||
|
242917067,203931726,1064311,中证A50ETF易方达,SH563080,0.77170093,,1.021,29.33,29.35,29.33,29.35,29.33,0.77170093,1.323,1.02096033,True,1757903982335,1757903982335,0.77224198,0.65858651,ZH1738732,择时etf
|
||||||
|
242917062,203931725,1036946,可转债ETF,SH511380,0.06535878,13.315,0.8703,25.0,25.0,35.02,35.04,34.52,0.09024158,13.41,1.21013958,True,1757903982335,1757903982335,0.06535878,0.09028194,ZH1738732,择时etf
|
||||||
|
242917063,203931725,1064311,中证A50ETF易方达,SH563080,0.77170093,1.323,1.021,29.33,29.33,24.99,24.97,25.05,0.65907645,1.31,0.86339014,True,1757903982335,1757903982335,0.77224198,0.65858651,ZH1738732,择时etf
|
||||||
|
242917064,203931725,1029080,银行ETF,SH512800,0.84799245,0.821,0.6962,20.0,20.0,15.0,15.0,14.76,0.62593107,0.828,0.51827092,True,1757903982335,1757903982335,0.84799245,0.62593107,ZH1738732,择时etf
|
||||||
|
242908934,203851233,1036946,可转债ETF,SH511380,0.09024158,,1.2101,35.02,35.04,35.02,35.04,35.02,0.09024158,13.41,1.21013958,True,1757655119845,1757655119845,0.09028194,0.07737575,ZH1738732,择时etf
|
||||||
|
242908929,203851232,1029080,银行ETF,SH512800,0.62593107,0.828,0.5183,15.0,15.0,20.0,20.0,19.99,0.83430169,0.829,0.6916361,True,1757655119845,1757655119845,0.62593107,0.83430169,ZH1738732,择时etf
|
||||||
|
242908930,203851232,1036946,可转债ETF,SH511380,0.09024158,13.41,1.2101,35.02,35.02,30.0,30.0,30.03,0.07737575,13.408,1.03745405,True,1757655119845,1757655119845,0.09028194,0.07737575,ZH1738732,择时etf
|
||||||
|
242908814,203850258,1036946,可转债ETF,SH511380,0.07737575,13.408,1.0375,30.0,30.0,30.0,30.0,30.02,0.07743409,13.38,1.03606812,True,1757654421771,1757654421771,0.07737575,0.07743409,ZH1738732,择时etf
|
||||||
|
242908815,203850258,1029080,银行ETF,SH512800,0.83430169,0.829,0.6916,20.0,20.0,25.0,25.0,24.82,1.03523999,0.834,0.86339015,True,1757654421771,1757654421771,0.83430169,1.03523999,ZH1738732,择时etf
|
||||||
|
242908816,203850258,1036743,新能源车ETF,SH515030,0.52165485,1.657,0.8644,25.0,25.0,20.0,20.0,20.16,0.42065293,1.642,0.69071211,True,1757654421771,1757654421771,0.52175324,0.42065293,ZH1738732,择时etf
|
||||||
|
242906816,203836211,1064311,中证A50ETF易方达,SH563080,0.65907645,1.31,0.8634,25.0,25.0,30.0,30.0,29.95,0.78963287,1.315,1.03836722,True,1757645771876,1757645771876,0.65907645,0.78963287,ZH1738732,择时etf
|
||||||
|
242906817,203836211,1029080,银行ETF,SH512800,1.03523999,0.834,0.8634,25.0,25.0,25.0,25.0,25.06,1.0375372,0.834,0.86530602,True,1757645771876,1757645771876,1.03523999,1.0375372,ZH1738732,择时etf
|
||||||
|
242906818,203836211,1036743,新能源车ETF,SH515030,0.42065293,1.642,0.6907,20.0,20.0,20.0,20.0,19.98,0.42030651,1.647,0.69224482,True,1757645771876,1757645771876,0.42065293,0.42030651,ZH1738732,择时etf
|
||||||
|
242906819,203836211,1036946,可转债ETF,SH511380,0.07743409,13.38,1.0361,30.0,30.0,25.0,25.0,25.01,0.06455099,13.405,0.86530602,True,1757645771876,1757645771876,0.07743409,0.06455099,ZH1738732,择时etf
|
||||||
|
242906496,203833017,1036743,新能源车ETF,SH515030,0.42030651,1.647,0.6922,20.0,20.0,35.01,35.01,34.7,0.72929302,1.669,1.21719005,True,1757645121146,1757645121146,0.42030651,0.72929302,ZH1738732,择时etf
|
||||||
|
242906497,203833017,1036946,可转债ETF,SH511380,0.06455099,13.405,0.8653,25.0,25.0,24.95,24.95,25.05,0.06468772,13.409,0.86739763,True,1757645121146,1757645121146,0.06455099,0.06469049,ZH1738732,择时etf
|
||||||
|
242906498,203833017,1029080,银行ETF,SH512800,1.0375372,0.834,0.8653,25.0,25.0,20.0,20.0,20.11,0.83474011,0.833,0.69533851,True,1757645121146,1757645121146,1.0375372,0.83474011,ZH1738732,择时etf
|
||||||
|
242906499,203833017,1064311,中证A50ETF易方达,SH563080,0.78963287,1.315,1.0384,30.0,30.0,20.04,20.04,20.13,0.52983305,1.315,0.69673046,True,1757645121146,1757645121146,0.78963287,0.52983208,ZH1738732,择时etf
|
||||||
|
242904399,203818965,1029080,银行ETF,SH512800,0.83474011,0.833,0.6953,20.0,20.0,25.0,25.0,24.8,1.03527847,0.831,0.8603164,True,1757642479375,1757642479375,0.83474011,1.03527847,ZH1738732,择时etf
|
||||||
|
242904400,203818965,1036743,新能源车ETF,SH515030,0.72929302,1.669,1.2172,35.01,35.01,30.02,30.02,30.2,0.62915222,1.642,1.03306794,True,1757642479375,1757642479375,0.72929302,0.62915222,ZH1738732,择时etf
|
||||||
|
242891713,203686656,1064311,中证A50ETF易方达,SH563080,0.52983305,1.299,0.6883,20.0,20.0,20.0,20.0,20.04,0.53081015,1.291,0.6852759,True,1757559774053,1757559774053,0.52983305,0.53081015,ZH1738732,择时etf
|
||||||
|
242891714,203686656,1029080,银行ETF,SH512800,1.03527847,0.831,0.8603,25.0,25.0,30.0,30.0,29.94,1.23994435,0.829,1.02791386,True,1757559774053,1757559774053,1.03527847,1.23994435,ZH1738732,择时etf
|
||||||
|
242891715,203686656,1036743,新能源车ETF,SH515030,0.62915222,1.642,1.0331,30.02,30.02,25.0,25.0,25.04,0.52487432,1.632,0.85659489,True,1757559774053,1757559774053,0.62915222,0.52487432,ZH1738732,择时etf
|
||||||
|
242891004,203681886,1036946,可转债ETF,SH511380,0.06468772,13.242,0.8566,25.0,25.0,25.0,25.0,25.05,0.06481129,13.206,0.85589789,True,1757558141042,1757558141042,0.06468772,0.06481129,ZH1738732,择时etf
|
||||||
|
242891005,203681886,1029080,银行ETF,SH512800,1.23994435,0.829,1.0279,30.0,30.0,40.0,40.0,39.92,1.64992387,0.83,1.36943681,True,1757558141042,1757558141042,1.23994435,1.64992387,ZH1738732,择时etf
|
||||||
|
242891006,203681886,1036743,新能源车ETF,SH515030,0.52487432,1.632,0.8566,25.0,25.0,20.0,20.0,20.05,0.4208472,1.627,0.68471839,True,1757558141042,1757558141042,0.52487432,0.4208472,ZH1738732,择时etf
|
||||||
|
242891007,203681886,1064311,中证A50ETF易方达,SH563080,0.53081015,1.291,0.6853,20.0,20.0,15.0,15.0,14.99,0.39778373,1.291,0.51353879,True,1757558141042,1757558141042,0.53081015,0.39778373,ZH1738732,择时etf
|
||||||
|
242890297,203676388,1029080,银行ETF,SH512800,1.64992387,0.83,1.3694,40.0,40.0,50.0,50.0,49.78,2.05312503,0.833,1.71025314,True,1757556541907,1757556541907,1.64992387,2.05312503,ZH1738732,择时etf
|
||||||
|
242890298,203676388,1064311,中证A50ETF易方达,SH563080,0.39778373,1.291,0.5135,15.0,15.0,15.0,15.0,15.06,0.39928089,1.285,0.51307594,True,1757556541907,1757556541907,0.39778373,0.39928089,ZH1738732,择时etf
|
||||||
|
242890299,203676388,1036743,新能源车ETF,SH515030,0.4208472,1.627,0.6847,20.0,20.0,15.0,15.0,15.14,0.31868071,1.61,0.51307594,True,1757556541907,1757556541907,0.4208472,0.31868071,ZH1738732,择时etf
|
||||||
|
242890300,203676388,1036946,可转债ETF,SH511380,0.06481129,13.206,0.8559,25.0,25.0,10.01,10.0,10.04,0.02603374,13.151,0.34236971,True,1757556541907,1757556541907,0.06481129,0.02600947,ZH1738732,择时etf
|
||||||
|
242881348,203586072,1064311,中证A50ETF易方达,SH563080,0.39928089,1.285,0.5131,15.0,15.0,20.0,20.0,20.0,0.53246612,1.285,0.68421896,True,1757473473107,1757473473107,0.39928089,0.53246612,ZH1738732,择时etf
|
||||||
|
242881349,203586072,1036743,新能源车ETF,SH515030,0.31868071,1.61,0.5131,15.0,15.0,20.0,20.0,19.98,0.42445345,1.612,0.68421896,True,1757473473107,1757473473107,0.31868071,0.42445345,ZH1738732,择时etf
|
||||||
|
242881350,203586072,1029080,银行ETF,SH512800,2.05312503,0.833,1.7103,50.0,50.0,40.0,40.0,40.01,1.64278265,0.833,1.36843794,True,1757473473107,1757473473107,2.05312503,1.64278265,ZH1738732,择时etf
|
||||||
|
242881028,203582375,1036743,新能源车ETF,SH515030,0.42445345,1.612,0.6842,20.0,20.0,35.0,35.0,34.42,0.73038816,1.657,1.21025318,True,1757472106019,1757472106019,0.42445345,0.73038816,ZH1738732,择时etf
|
||||||
|
242881029,203582375,1036946,可转债ETF,SH511380,0.02603374,13.141,0.3421,10.0,10.0,15.0,15.0,15.0,0.03904252,13.285,0.51867987,True,1757472106019,1757472106019,0.02603374,0.03904252,ZH1738732,择时etf
|
||||||
|
242881030,203582375,1029080,银行ETF,SH512800,1.64278265,0.833,1.3684,40.0,40.0,35.0,35.0,35.59,1.46165843,0.828,1.21025318,True,1757472106019,1757472106019,1.64278265,1.46165843,ZH1738732,择时etf
|
||||||
|
242881031,203582375,1064311,中证A50ETF易方达,SH563080,0.53246612,1.285,0.6842,20.0,20.0,15.0,15.0,15.0,0.39929171,1.299,0.51867993,True,1757472106019,1757472106019,0.53246612,0.39929171,ZH1738732,择时etf
|
||||||
|
242871391,203482260,1036946,可转债ETF,SH511380,0.03904252,13.285,0.5187,15.0,15.0,20.0,20.0,19.97,0.05197703,13.344,0.69358148,True,1757387395670,1757387395670,0.03904252,0.05197703,ZH1738732,择时etf
|
||||||
|
242871392,203482260,1064311,中证A50ETF易方达,SH563080,0.39929171,1.299,0.5187,15.0,15.0,20.0,20.0,20.07,0.53434631,1.298,0.69358151,True,1757387395670,1757387395670,0.39929171,0.53434631,ZH1738732,择时etf
|
||||||
|
242871393,203482260,1036743,新能源车ETF,SH515030,0.73038816,1.657,1.2103,35.0,35.0,35.0,35.0,34.97,0.7298663,1.663,1.21376765,True,1757387395670,1757387395670,0.73038816,0.7298663,ZH1738732,择时etf
|
||||||
|
242871394,203482260,1029080,银行ETF,SH512800,1.46165843,0.828,1.2103,35.0,35.0,25.0,25.0,24.98,1.0432935,0.831,0.86697689,True,1757387395670,1757387395670,1.46165843,1.0432935,ZH1738732,择时etf
|
||||||
|
242862272,203349303,1027747,香港银行LOF,SH501025,0.0,1.572,0.0,0.0,0.0,14.99,14.99,14.59,0.32182726,1.567,0.50430331,True,1757299952677,1757299952677,0.0,0.32182726,ZH1738732,择时etf
|
||||||
|
242862273,203349303,1036743,新能源车ETF,SH515030,0.7298663,1.663,1.2138,35.0,35.0,35.0,35.0,36.36,0.75820524,1.553,1.17749273,True,1757299952677,1757299952677,0.7298663,0.75820524,ZH1738732,择时etf
|
||||||
|
242862274,203349303,1064311,中证A50ETF易方达,SH563080,0.53434631,1.298,0.6936,20.0,20.0,20.0,20.0,19.78,0.52855695,1.273,0.67285299,True,1757299952677,1757299952677,0.53434631,0.52855695,ZH1738732,择时etf
|
||||||
|
242862275,203349303,1036946,可转债ETF,SH511380,0.05197703,13.344,0.6936,20.0,20.0,15.0,15.01,14.69,0.03816635,13.218,0.50448281,True,1757299952677,1757299952677,0.05197703,0.03820367,ZH1738732,择时etf
|
||||||
|
242862276,203349303,1029080,银行ETF,SH512800,1.0432935,0.831,0.867,25.0,25.0,15.0,15.0,14.57,0.60799969,0.83,0.50463974,True,1757299952677,1757299952677,1.0432935,0.60799969,ZH1738732,择时etf
|
||||||
|
242850651,203224942,1029080,银行ETF,SH512800,0.60799969,0.83,0.5046,15.0,15.0,30.0,30.0,29.54,1.19722296,0.833,0.99728672,True,1757038866585,1757038866585,0.60799969,1.19722296,ZH1738732,择时etf
|
||||||
|
242850652,203224942,1064311,中证A50ETF易方达,SH563080,0.52855695,1.273,0.6729,20.0,20.0,20.0,20.0,19.95,0.52724648,1.261,0.66485781,True,1757038866585,1757038866585,0.52855695,0.52724648,ZH1738732,择时etf
|
||||||
|
242850653,203224942,1027747,香港银行LOF,SH501025,0.32182726,1.567,0.5043,14.99,14.99,15.0,15.0,14.85,0.31882567,1.564,0.49864334,True,1757038866585,1757038866585,0.32182726,0.31882567,ZH1738732,择时etf
|
||||||
|
242850654,203224942,1036743,新能源车ETF,SH515030,0.75820524,1.553,1.1775,35.0,35.0,20.0,20.0,20.67,0.4477157,1.485,0.66485781,True,1757038866585,1757038866585,0.75820524,0.4477157,ZH1738732,择时etf
|
||||||
|
242842246,203132634,1036743,新能源车ETF,SH515030,0.4477157,1.485,0.6649,20.0,20.0,35.0,35.0,34.9,0.78135499,1.516,1.18453416,True,1756965964130,1756965964130,0.4477157,0.78135499,ZH1738732,择时etf
|
||||||
|
242842247,203132634,1064311,中证A50ETF易方达,SH563080,0.52724648,1.261,0.6649,20.0,20.0,35.0,35.0,34.46,0.9083851,1.304,1.18453417,True,1756965964130,1756965964130,0.52724648,0.9083851,ZH1738732,择时etf
|
||||||
|
242842248,203132634,1036946,可转债ETF,SH511380,0.03816635,13.065,0.4986,15.0,15.0,10.0,10.0,10.18,0.02589825,13.068,0.33843833,True,1756965964130,1756965964130,0.03816635,0.02589825,ZH1738732,择时etf
|
||||||
|
242842249,203132634,1029080,银行ETF,SH512800,1.19722296,0.833,0.9973,30.0,30.0,20.0,20.0,20.46,0.81649779,0.829,0.67687666,True,1756965964130,1756965964130,1.19722296,0.81649779,ZH1738732,择时etf
|
||||||
|
242842250,203132634,1027747,香港银行LOF,SH501025,0.31882567,1.564,0.4986,15.0,15.0,,,,,,,True,1756965964130,1756965964130,0.31882567,,ZH1738732,择时etf
|
||||||
|
242822609,202892068,1036946,可转债ETF,SH511380,0.02589825,13.068,0.3384,10.0,10.0,15.0,15.0,14.65,0.03795335,13.365,0.50724652,True,1756777532515,1756777532515,0.02589825,0.03795335,ZH1738732,择时etf
|
||||||
|
242822610,202892068,1036743,新能源车ETF,SH515030,0.78135499,1.516,1.1845,35.0,35.0,35.0,35.0,35.44,0.79115997,1.496,1.18357531,True,1756777532515,1756777532515,0.78135499,0.79115997,ZH1738732,择时etf
|
||||||
|
242822611,202892068,1029080,银行ETF,SH512800,0.81649779,0.829,0.6769,20.0,20.0,20.0,20.0,19.68,0.80324079,0.842,0.67632874,True,1756777532515,1756777532515,0.81649779,0.80324079,ZH1738732,择时etf
|
||||||
|
242822612,202892068,1064311,中证A50ETF易方达,SH563080,0.9083851,1.304,1.1845,35.0,35.0,30.0,30.0,30.23,0.78460412,1.293,1.01449312,True,1756777532515,1756777532515,0.9083851,0.78460412,ZH1738732,择时etf
|
||||||
|
242804518,202699422,1029080,银行ETF,SH512800,0.80324079,0.842,0.6763,20.0,20.0,35.0,35.0,34.2,1.37356845,0.844,1.15929177,True,1756434928071,1756434928071,0.80324079,1.37356845,ZH1738732,择时etf
|
||||||
|
242804519,202699422,1036743,新能源车ETF,SH515030,0.79115997,1.496,1.1836,35.0,35.0,30.0,30.0,30.98,0.70026685,1.419,0.99367866,True,1756434928071,1756434928071,0.79115997,0.70026685,ZH1738732,择时etf
|
||||||
|
242804520,202699422,1064311,中证A50ETF易方达,SH563080,0.78460412,1.293,1.0145,30.0,30.0,25.0,25.0,24.95,0.65253392,1.269,0.82806554,True,1756434928071,1756434928071,0.78460412,0.65253392,ZH1738732,择时etf
|
||||||
|
242804521,202699422,1036946,可转债ETF,SH511380,0.03795335,13.365,0.5072,15.0,15.0,10.0,10.0,9.87,0.0249737,13.263,0.33122618,True,1756434928071,1756434928071,0.03795335,0.0249737,ZH1738732,择时etf
|
||||||
|
242788990,202539876,1036946,可转债ETF,SH511380,0.0249737,13.263,0.3312,10.0,10.0,20.0,20.0,19.76,0.04933784,13.608,0.67138932,True,1756350730835,1756350730835,0.0249737,0.04933784,ZH1738732,择时etf
|
||||||
|
242788991,202539876,1036743,新能源车ETF,SH515030,0.70026685,1.419,0.9937,30.0,30.0,30.24,30.26,30.16,0.70404179,1.442,1.01522826,True,1756350730835,1756350730835,0.70026685,0.70444666,ZH1738732,择时etf
|
||||||
|
242788992,202539876,1029080,银行ETF,SH512800,1.37356845,0.844,1.1593,35.0,35.0,30.0,30.0,30.26,1.18759909,0.848,1.00708402,True,1756350730835,1756350730835,1.37356845,1.18759909,ZH1738732,择时etf
|
||||||
|
242788993,202539876,1064311,中证A50ETF易方达,SH563080,0.65253392,1.269,0.8281,25.0,25.0,19.74,19.74,19.8,0.51689648,1.282,0.66266128,True,1756350730835,1756350730835,0.65253392,0.51689648,ZH1738732,择时etf
|
||||||
|
242779978,202430821,1064311,中证A50ETF易方达,SH563080,0.51689648,1.282,0.6627,19.74,19.74,30.0,30.0,30.39,0.79569898,1.229,0.97791404,True,1756260495534,1756260495534,0.51689648,0.79569898,ZH1738732,择时etf
|
||||||
|
242779979,202430821,1036946,可转债ETF,SH511380,0.04933784,13.608,0.6714,20.0,20.0,30.0,30.0,29.63,0.07308228,13.381,0.97791398,True,1756260495534,1756260495534,0.04933784,0.07308228,ZH1738732,择时etf
|
||||||
|
242779980,202430821,1029080,银行ETF,SH512800,1.18759909,0.848,1.0071,30.0,30.0,10.0,10.0,9.74,0.38576491,0.845,0.32597134,True,1756260495534,1756260495534,1.18759909,0.38576491,ZH1738732,择时etf
|
||||||
|
242710772,201733974,1027747,香港银行LOF,SH501025,0.0,1.617,0.0,0.0,0.0,10.0,10.0,9.7,0.19558615,1.658,0.32428183,True,1755499513665,1755499513665,0.0,0.19558615,ZH1738732,择时etf
|
||||||
|
242710773,201733974,1036946,可转债ETF,SH511380,0.07308228,13.381,0.9779,30.0,30.0,34.81,34.96,34.99,0.08524035,13.242,1.12875271,True,1755499513665,1755499513665,0.07308228,0.08561314,ZH1738732,择时etf
|
||||||
|
242710774,201733974,1029080,银行ETF,SH512800,0.38576491,0.845,0.326,10.0,10.0,9.94,9.94,9.77,0.37672859,0.856,0.32247967,True,1755499513665,1755499513665,0.38576491,0.37656092,ZH1738732,择时etf
|
||||||
|
242710775,201733974,1064311,中证A50ETF易方达,SH563080,0.79569898,1.229,0.9779,30.0,30.0,25.0,25.0,24.97,0.66234036,1.224,0.8107046,True,1755499513665,1755499513665,0.79569898,0.66234036,ZH1738732,择时etf
|
||||||
|
242710776,201733974,1036743,新能源车ETF,SH515030,0.70404179,1.389,0.9779,30.0,30.0,20.1,20.1,20.42,0.4792417,1.36,0.65176871,True,1755499513665,1755499513665,0.70404179,0.47926949,ZH1738732,择时etf
|
||||||
|
242690215,201477700,1036946,可转债ETF,SH511380,0.08524035,,1.1288,34.81,34.96,34.81,34.81,34.81,0.08524035,13.2,1.12517262,True,1755137847301,1755137847301,0.08561314,0.08524049,ZH1738732,择时etf
|
||||||
|
242690209,201477699,1027747,香港银行LOF,SH501025,0.19558615,1.658,0.3243,10.0,10.0,15.0,15.0,14.98,0.29296054,1.655,0.48484969,True,1755137847301,1755137847301,0.19558615,0.29296054,ZH1738732,择时etf
|
||||||
|
242690211,201477699,1064311,中证A50ETF易方达,SH563080,0.66234036,1.224,0.8107,25.0,25.0,20.07,20.07,20.17,0.53438623,1.214,0.64874488,True,1755137847301,1755137847301,0.66234036,0.53437306,ZH1738732,择时etf
|
||||||
|
242683619,201404859,1027747,香港银行LOF,SH501025,0.29296054,1.655,0.4848,15.0,15.0,20.0,20.0,19.97,0.39005351,1.655,0.64553855,True,1755062641164,1755062641164,0.29296054,0.39005351,ZH1738732,择时etf
|
||||||
|
242683620,201404859,1029080,银行ETF,SH512800,0.37672859,0.858,0.3232,10.0,10.0,20.0,20.0,19.81,0.74628736,0.865,0.64553856,True,1755062641164,1755062641164,0.37672859,0.74628736,ZH1738732,择时etf
|
||||||
|
242683621,201404859,1036946,可转债ETF,SH511380,0.08524035,13.2,1.1252,34.81,34.81,20.0,20.0,20.03,0.04904562,13.162,0.64553845,True,1755062641164,1755062641164,0.08524049,0.04904562,ZH1738732,择时etf
|
||||||
|
242680613,201378740,1027747,香港银行LOF,SH501025,0.39005351,1.655,0.6455,20.0,20.0,20.0,20.0,20.02,0.39047169,1.646,0.6427164,True,1755049411205,1755049411205,0.39005351,0.39047387,ZH1738732,择时etf
|
||||||
|
242680614,201378740,1036946,可转债ETF,SH511380,0.04904562,13.162,0.6455,20.0,20.0,20.0,20.0,20.03,0.04912287,13.084,0.64272363,True,1755049411205,1755049411205,0.04904562,0.04912259,ZH1738732,择时etf
|
||||||
|
242680615,201378740,1029080,银行ETF,SH512800,0.74628736,0.865,0.6455,20.0,20.0,30.0,30.0,29.8,1.11197231,0.867,0.96407999,True,1755049411205,1755049411205,0.74628736,1.11197231,ZH1738732,择时etf
|
||||||
|
242680616,201378740,1036743,新能源车ETF,SH515030,0.4792417,1.347,0.6455,20.0,20.0,15.0,15.0,15.13,0.36243609,1.33,0.48203999,True,1755049411205,1755049411205,0.4792417,0.36243609,ZH1738732,择时etf
|
||||||
|
242680617,201378740,1064311,中证A50ETF易方达,SH563080,0.53438623,1.208,0.6455,20.0,20.0,15.0,15.0,15.02,0.40136552,1.201,0.48203998,True,1755049411205,1755049411205,0.53438623,0.40136552,ZH1738732,择时etf
|
||||||
|
242674433,201305567,1036743,新能源车ETF,SH515030,0.36243609,1.33,0.482,15.0,15.0,25.0,25.0,24.75,0.59812663,1.347,0.80567657,True,1754963259422,1754963259422,0.36243609,0.59812663,ZH1738732,择时etf
|
||||||
|
242674434,201305567,1064311,中证A50ETF易方达,SH563080,0.40136552,1.201,0.482,15.0,15.0,20.0,20.0,20.04,0.53622401,1.202,0.64454126,True,1754963259422,1754963259422,0.40136552,0.53622401,ZH1738732,择时etf
|
||||||
|
242674435,201305567,1027747,香港银行LOF,SH501025,0.39047169,1.646,0.6427,20.0,20.0,15.0,15.0,15.08,0.29440069,1.642,0.48340593,True,1754963259422,1754963259422,0.39047387,0.29440069,ZH1738732,择时etf
|
||||||
|
242674436,201305567,1029080,银行ETF,SH512800,1.11197231,0.867,0.9641,30.0,30.0,20.0,20.0,20.13,0.74599683,0.864,0.64454126,True,1754963259422,1754963259422,1.11197231,0.74599683,ZH1738732,择时etf
|
||||||
|
242669437,201181202,1027747,香港银行LOF,SH501025,0.29440069,1.642,0.4834,15.0,15.0,20.0,20.0,19.91,0.3908167,1.645,0.64289347,True,1754890715333,1754890715333,0.29440069,0.3908167,ZH1738732,择时etf
|
||||||
|
242669438,201181202,1029080,银行ETF,SH512800,0.74599683,0.864,0.6445,20.0,20.0,30.0,30.0,29.65,1.10589475,0.872,0.96434022,True,1754890715333,1754890715333,0.74599683,1.10589475,ZH1738732,择时etf
|
||||||
|
242669439,201181202,1064311,中证A50ETF易方达,SH563080,0.53622401,1.202,0.6445,20.0,20.0,20.0,20.0,19.97,0.53529848,1.201,0.64289347,True,1754890715333,1754890715333,0.53622401,0.53529848,ZH1738732,择时etf
|
||||||
|
242669440,201181202,1036946,可转债ETF,SH511380,0.04912287,13.121,0.6445,20.0,20.0,15.0,15.0,15.04,0.03694507,13.051,0.4821701,True,1754890715333,1754890715333,0.04912287,0.03694507,ZH1738732,择时etf
|
||||||
|
242669441,201181202,1036743,新能源车ETF,SH515030,0.59812663,1.347,0.8057,25.0,25.0,15.0,15.0,15.43,0.3691961,1.306,0.4821701,True,1754890715333,1754890715333,0.59812663,0.3691961,ZH1738732,择时etf
|
||||||
|
242648056,200968972,1027747,香港银行LOF,SH501025,0.3908167,1.645,0.6429,20.0,20.0,20.0,20.0,20.01,0.39103471,1.614,0.63113002,True,1754546118359,1754546118359,0.3908167,0.39103471,ZH1738732,择时etf
|
||||||
|
242648057,200968972,1036743,新能源车ETF,SH515030,0.3691961,1.306,0.4822,15.0,15.0,20.0,20.0,19.92,0.49038852,1.287,0.63113002,True,1754546118359,1754546118359,0.3691961,0.49038852,ZH1738732,择时etf
|
||||||
|
242648058,200968972,1036946,可转债ETF,SH511380,0.03694507,13.051,0.4822,15.0,15.0,20.0,20.0,20.06,0.04939579,12.777,0.63113,True,1754546118359,1754546118359,0.03694507,0.04939579,ZH1738732,择时etf
|
||||||
|
242648059,200968972,1029080,银行ETF,SH512800,1.10589475,0.872,0.9643,30.0,30.0,25.0,25.0,25.15,0.92704175,0.851,0.78891252,True,1754546118359,1754546118359,1.10589475,0.92704175,ZH1738732,择时etf
|
||||||
|
242648060,200968972,1064311,中证A50ETF易方达,SH563080,0.53529848,1.201,0.6429,20.0,20.0,15.0,15.0,14.86,0.39777102,1.19,0.47334751,True,1754546118359,1754546118359,0.53529848,0.39777102,ZH1738732,择时etf
|
||||||
|
242624866,200717876,1036946,可转债ETF,SH511380,0.04939579,12.777,0.6311,20.0,20.0,65.0,65.0,65.04,0.16063407,12.776,2.05226087,True,1754029999519,1754029999519,0.04939579,0.16063407,ZH1738732,择时etf
|
||||||
|
242624867,200717876,1064311,中证A50ETF易方达,SH563080,0.39777102,1.19,0.4733,15.0,15.0,10.0,10.0,9.9,0.26245424,1.203,0.31573245,True,1754029999519,1754029999519,0.39777102,0.26245424,ZH1738732,择时etf
|
||||||
|
242624868,200717876,1027747,香港银行LOF,SH501025,0.39103471,1.614,0.6311,20.0,20.0,10.0,10.0,10.01,0.1956211,1.614,0.31573245,True,1754029999519,1754029999519,0.39103471,0.1956211,ZH1738732,择时etf
|
||||||
|
242624869,200717876,1029080,银行ETF,SH512800,0.92704175,0.851,0.7889,25.0,25.0,10.0,10.0,10.12,0.37542504,0.841,0.31573245,True,1754029999519,1754029999519,0.92704175,0.37542504,ZH1738732,择时etf
|
||||||
|
242624870,200717876,1036743,新能源车ETF,SH515030,0.49038852,1.287,0.6311,20.0,20.0,5.0,5.0,4.93,0.12097029,1.305,0.15786622,True,1754029999519,1754029999519,0.49038852,0.12097029,ZH1738732,择时etf
|
||||||
|
242611685,200595886,1027747,香港银行LOF,SH501025,0.1956211,1.614,0.3157,10.0,10.0,20.0,20.0,19.89,0.38905471,1.657,0.64466365,True,1753927431673,1753927431673,0.1956211,0.38905471,ZH1738732,择时etf
|
||||||
|
242611686,200595886,1036743,新能源车ETF,SH515030,0.12097029,1.305,0.1579,5.0,5.0,10.0,10.0,9.96,0.24108588,1.337,0.32233182,True,1753927431673,1753927431673,0.12097029,0.24108588,ZH1738732,择时etf
|
||||||
|
242611687,200595886,1064311,中证A50ETF易方达,SH563080,0.26245424,1.203,0.3157,10.0,10.0,25.0,25.0,24.88,0.65302235,1.234,0.80582957,True,1753927431673,1753927431673,0.26245424,0.65302235,ZH1738732,择时etf
|
||||||
|
242611688,200595886,1029080,银行ETF,SH512800,0.37542504,0.841,0.3157,10.0,10.0,25.0,25.0,25.08,0.9413897,0.856,0.80582958,True,1753927431673,1753927431673,0.37542504,0.9413897,ZH1738732,择时etf
|
||||||
|
242611689,200595886,1036946,可转债ETF,SH511380,0.16063407,12.776,2.0523,65.0,65.0,20.0,20.0,20.19,0.04989656,12.92,0.64466355,True,1753927431673,1753927431673,0.16063407,0.04989656,ZH1738732,择时etf
|
||||||
|
242601363,200510609,1036743,新能源车ETF,SH515030,0.24108588,1.337,0.3223,10.0,10.0,15.0,15.0,14.77,0.35602942,1.354,0.48206383,True,1753845442806,1753845442806,0.24108588,0.35602942,ZH1738732,择时etf
|
||||||
|
242601364,200510609,1036946,可转债ETF,SH511380,0.04989656,12.92,0.6447,20.0,20.0,25.0,25.0,25.14,0.06271483,12.811,0.80343968,True,1753845442806,1753845442806,0.04989656,0.06271483,ZH1738732,择时etf
|
||||||
|
242601365,200510609,1029080,银行ETF,SH512800,0.9413897,0.856,0.8058,25.0,25.0,25.0,25.0,24.98,0.94079595,0.854,0.80343974,True,1753845442806,1753845442806,0.9413897,0.94079595,ZH1738732,择时etf
|
||||||
|
242601366,200510609,1064311,中证A50ETF易方达,SH563080,0.65302235,1.234,0.8058,25.0,25.0,20.0,20.0,20.14,0.52598346,1.222,0.64275178,True,1753845442806,1753845442806,0.65302235,0.52598346,ZH1738732,择时etf
|
||||||
|
242601367,200510609,1027747,香港银行LOF,SH501025,0.38905471,1.657,0.6447,20.0,20.0,15.0,15.0,14.97,0.29127724,1.655,0.48206383,True,1753845442806,1753845442806,0.38905471,0.29127724,ZH1738732,择时etf
|
||||||
|
242592429,200433945,1027747,香港银行LOF,SH501025,0.29127724,1.655,0.4821,15.0,15.0,20.0,20.0,19.9,0.38639284,1.669,0.64488964,True,1753757740949,1753757740949,0.29127724,0.38647138,ZH1738732,择时etf
|
||||||
|
242592430,200433945,1029080,银行ETF,SH512800,0.94079595,0.854,0.8034,25.0,25.0,40.0,40.0,39.86,1.50004823,0.86,1.29004147,True,1753757740949,1753757740949,0.94079595,1.50004823,ZH1738732,择时etf
|
||||||
|
242592431,200433945,1036743,新能源车ETF,SH515030,0.35602942,1.354,0.4821,15.0,15.0,10.0,10.0,10.14,0.24067938,1.34,0.32251036,True,1753757740949,1753757740949,0.35602942,0.24067938,ZH1738732,择时etf
|
||||||
|
242592432,200433945,1064311,中证A50ETF易方达,SH563080,0.52598346,1.222,0.6428,20.0,20.0,15.0,15.0,15.12,0.39761437,1.217,0.48389668,True,1753757740949,1753757740949,0.52598346,0.39750661,ZH1738732,择时etf
|
||||||
|
242592433,200433945,1036946,可转债ETF,SH511380,0.06271483,12.811,0.8034,25.0,25.0,15.0,15.0,14.98,0.03758278,12.872,0.48376554,True,1753757740949,1753757740949,0.06271483,0.03758278,ZH1738732,择时etf
|
||||||
|
242583936,200355079,1036743,新能源车ETF,SH515030,0.24067938,1.34,0.3225,10.0,10.0,15.0,15.0,14.94,0.35964823,1.351,0.48588475,True,1753678818509,1753678818509,0.24067938,0.35964823,ZH1738732,择时etf
|
||||||
|
242583937,200355079,1036946,可转债ETF,SH511380,0.03758278,12.872,0.4838,15.0,15.0,20.0,20.0,19.97,0.05002288,12.951,0.64784631,True,1753678818509,1753678818509,0.03758278,0.05002288,ZH1738732,择时etf
|
||||||
|
242583938,200355079,1027747,香港银行LOF,SH501025,0.38639284,1.669,0.6449,20.0,20.0,15.0,15.0,15.06,0.29094896,1.67,0.48588476,True,1753678818509,1753678818509,0.38647138,0.29094896,ZH1738732,择时etf
|
||||||
|
242583939,200355079,1029080,银行ETF,SH512800,1.50004823,0.86,1.29,40.0,40.0,35.0,35.0,35.03,1.3137093,0.863,1.13373112,True,1753678818509,1753678818509,1.50004823,1.3137093,ZH1738732,择时etf
|
||||||
|
242570974,200228783,1027747,香港银行LOF,SH501025,0.29094896,1.67,0.4859,15.0,15.0,20.0,20.0,20.01,0.38803435,1.667,0.64685326,True,1753407516902,1753407516902,0.29094896,0.38803435,ZH1738732,择时etf
|
||||||
|
242570975,200228783,1036743,新能源车ETF,SH515030,0.35964823,1.351,0.4859,15.0,15.0,14.98,15.0,15.26,0.36585272,1.324,0.484389,True,1753407516902,1753407516902,0.35964823,0.3664199,ZH1738732,择时etf
|
||||||
|
242570976,200228783,1064311,中证A50ETF易方达,SH563080,0.39761437,1.222,0.4859,15.0,15.0,25.0,25.0,24.98,0.6622167,1.221,0.80856659,True,1753407516902,1753407516902,0.39761437,0.6622167,ZH1738732,择时etf
|
||||||
|
242570977,200228783,1036946,可转债ETF,SH511380,0.05002288,12.951,0.6478,20.0,20.0,15.0,15.0,15.06,0.03765671,12.884,0.48516905,True,1753407516902,1753407516902,0.05002288,0.03765445,ZH1738732,择时etf
|
||||||
|
242570978,200228783,1029080,银行ETF,SH512800,1.3137093,0.863,1.1337,35.0,35.0,25.0,25.0,24.68,0.92619311,0.873,0.80856658,True,1753407516902,1753407516902,1.3137093,0.92619311,ZH1738732,择时etf
|
||||||
|
242549856,200058473,1036743,新能源车ETF,SH515030,0.36585272,,0.4844,14.98,15.0,15.0,15.0,14.98,0.36585272,1.325,0.48475485,True,1753234804652,1753234804652,0.3664199,0.36585272,ZH1738732,择时etf
|
||||||
|
242549850,200058472,1064311,中证A50ETF易方达,SH563080,0.6622167,1.221,0.8086,25.0,25.0,35.04,35.03,35.01,0.9274738,1.221,1.1324455,True,1753234804652,1753234804652,0.6622167,0.92716149,ZH1738732,择时etf
|
||||||
|
242549852,200058472,1029080,银行ETF,SH512800,0.92619311,0.873,0.8086,25.0,25.0,20.0,20.0,20.05,0.74291932,0.87,0.6463398,True,1753234804652,1753234804652,0.92619311,0.74291932,ZH1738732,择时etf
|
||||||
|
242549853,200058472,1027747,香港银行LOF,SH501025,0.38803435,1.667,0.6469,20.0,20.0,14.96,14.97,14.96,0.29015852,1.666,0.48340409,True,1753234804652,1753234804652,0.38803435,0.29038736,ZH1738732,择时etf
|
||||||
|
242549626,200056916,1027747,香港银行LOF,SH501025,0.29015852,,0.4834,14.96,14.97,14.96,14.97,14.96,0.29015852,1.666,0.48340409,True,1753234511657,1753234511657,0.29038736,0.09579765,ZH1738732,择时etf
|
||||||
|
242549619,200056915,1036743,新能源车ETF,SH515030,0.36585272,1.325,0.4848,15.0,15.0,35.0,35.0,35.06,0.85514786,1.308,1.1185334,True,1753234511657,1753234511657,0.36585272,0.85514786,ZH1738732,择时etf
|
||||||
|
242549620,200056915,1036946,可转债ETF,SH511380,0.03765671,12.873,0.4848,15.0,15.0,20.0,20.0,20.0,0.05020122,12.732,0.63916193,True,1753234511657,1753234511657,0.03765671,0.05020122,ZH1738732,择时etf
|
||||||
|
242549621,200056915,1027747,香港银行LOF,SH501025,0.29015852,1.666,0.4834,14.96,14.96,5.0,5.0,4.94,0.09579765,1.668,0.15979048,True,1753234511657,1753234511657,0.29038736,0.09579765,ZH1738732,择时etf
|
||||||
|
242549622,200056915,1029080,银行ETF,SH512800,0.74291932,0.87,0.6463,20.0,20.0,5.0,5.0,4.96,0.18430275,0.867,0.15979048,True,1753234511657,1753234511657,0.74291932,0.18430275,ZH1738732,择时etf
|
||||||
|
242542226,199986831,1027747,香港银行LOF,SH501025,0.09579765,1.668,0.1598,5.0,5.0,10.0,10.0,9.93,0.19024507,1.677,0.31904098,True,1753149108316,1753149108316,0.09579765,0.19024507,ZH1738732,择时etf
|
||||||
|
242542227,199986831,1064311,中证A50ETF易方达,SH563080,0.9274738,1.206,1.1185,35.0,35.0,35.0,35.0,35.12,0.93053621,1.2,1.11664345,True,1753149108316,1753149108316,0.9274738,0.93053621,ZH1738732,择时etf
|
||||||
|
242542228,199986831,1029080,银行ETF,SH512800,0.18430275,0.867,0.1598,5.0,5.0,10.0,10.0,9.86,0.36337242,0.878,0.31904098,True,1753149108316,1753149108316,0.18430275,0.36337242,ZH1738732,择时etf
|
||||||
|
242542229,199986831,1036743,新能源车ETF,SH515030,0.85514786,1.308,1.1185,35.0,35.0,30.0,30.0,30.11,0.73568252,1.301,0.95712295,True,1753149108316,1753149108316,0.85514786,0.73568252,ZH1738732,择时etf
|
||||||
|
242542230,199986831,1036946,可转债ETF,SH511380,0.05020122,12.732,0.6392,20.0,20.0,15.0,15.0,14.99,0.03761684,12.722,0.47856143,True,1753149108316,1753149108316,0.05020122,0.03761684,ZH1738732,择时etf
|
||||||
|
242537170,199939902,1027747,香港银行LOF,SH501025,0.19024507,1.677,0.319,10.0,10.0,15.0,15.0,14.92,0.28379924,1.685,0.47820171,True,1753074917106,1753074917106,0.19024507,0.28379924,ZH1738732,择时etf
|
||||||
|
242537171,199939902,1029080,银行ETF,SH512800,0.36337242,0.878,0.319,10.0,10.0,24.69,24.69,24.45,0.88839735,0.886,0.78712005,True,1753074917106,1753074917106,0.36337242,0.88839735,ZH1738732,择时etf
|
||||||
|
242537172,199939902,1036743,新能源车ETF,SH515030,0.73568252,1.301,0.9571,30.0,30.0,25.32,25.32,25.45,0.62419573,1.293,0.80708507,True,1753074917106,1753074917106,0.73568252,0.62428811,ZH1738732,择时etf
|
||||||
|
242537173,199939902,1036946,可转债ETF,SH511380,0.03761684,12.722,0.4786,15.0,15.0,9.99,9.99,10.03,0.02514573,12.665,0.31847067,True,1753074917106,1753074917106,0.03761684,0.02514665,ZH1738732,择时etf
|
||||||
|
242537174,199939902,1064311,中证A50ETF易方达,SH563080,0.93053621,1.2,1.1166,35.0,35.0,25.0,25.0,25.15,0.66862658,1.192,0.79700288,True,1753074917106,1753074917106,0.93053621,0.66862658,ZH1738732,择时etf
|
||||||
|
242522294,199803245,1027747,香港银行LOF,SH501025,0.28379924,1.685,0.4782,15.0,15.0,20.0,20.0,19.97,0.37788657,1.687,0.63749464,True,1752805077947,1752805077947,0.28379924,0.37788657,ZH1738732,择时etf
|
||||||
|
242522295,199803245,1064311,中证A50ETF易方达,SH563080,0.66862658,1.192,0.797,25.0,25.0,24.65,24.65,24.67,0.65970793,1.191,0.78571214,True,1752805077947,1752805077947,0.66862658,0.65970793,ZH1738732,择时etf
|
||||||
|
242522296,199803245,1029080,银行ETF,SH512800,0.88839735,0.886,0.7871,24.69,24.69,19.94,19.94,20.0,0.7197986,0.883,0.63558216,True,1752805077947,1752805077947,0.88839735,0.7197986,ZH1738732,择时etf
|
||||||
|
Binary file not shown.
Reference in New Issue
Block a user