下载
登录/ 注册
主页
论坛
视频
热股
可转债
下载
下载

做正确的事~202412~如切如磋如琢如磨

24-11-29 18:38 6077次浏览
谋城
+关注
博主要求身份验证
登录用户ID:
做正确的事,
这是方向

如切如磋、如琢如磨
这是精益求精

与君共勉。
打开淘股吧APP
9
评论(508)
收藏
展开
热门 最新
谋城

24-12-08 15:27

0
KIMI聊天后的一些总结

当然可以,以下是更新后的总结,包括了你提到的关于封装Java和Python代码为可执行文件的内容:
1.  JavaFX与Python的比较:
•  JavaFX可以让你的应用界面更现代,但可能不如Python的一些库(如Matplotlib、Seaborn、Plotly)在数据可视化方面美观和专业。
2.  代码转换:
•  理论上,AI可以将Java代码转换成Python代码,尤其是对于简单的界面操作和逻辑。复杂的Java特性或逻辑可能需要人工检查和调整。
3.  结合使用Java和Python:
•  你计划使用Java进行后端数据处理,而Python负责前端展示,这样可以发挥各自的优势。这种分工明确的方法被认为是理想的。
4.  数据可视化和动画效果:
•  Python的Plotly库可以实现数据随时间变化的动态展示,包括平滑的动画效果,如柱状图的增长动画。
5.  监控系统的布局:
•  你计划使用一个更大的显示器来更好地监控和管理数据,将监控应用程序、Java监控程序和Python数据展示分别布局在屏幕的不同区域。
6.  数据库服务:
•  你考虑使用阿里云的数据库服务,而不是本地部署数据库,这样可以远程访问数据,简化了存储和访问的复杂性。
7.  硬件选择:
•  你提到家里已有两台电脑,计划开发完成后根据需要购买新的电脑,专门用于显示数据。
8.  代码封装为可执行文件:
•  你计划将Java和Python的代码封装成可执行文件,这样用户无需使用IDE或打开命令行窗口即可运行程序,提高了程序的易用性和便携性。
这个总结现在包含了你提到的所有关键点。希望这能帮助你更好地记录和规划你的项目。如果还有其他需要补充的,请随时告诉我。
谋城

24-12-08 14:29

0
VSCode加豆包指示配置
然后通义灵码插件
真的是飞速

 
谋城

24-12-08 11:55

0
这几日对自动化交易进行了深入思考。其核心逻辑在于,我的交易策略较为简易,仅依赖价位且可提前挂单,与技术分析、基本面分析毫无关联。因策略简单,无需依赖行情数据,只需持续监测成交状况并挂反向单即可,所以自行编写程序便能达成。

反过来讲,其中涉及的核心要素虽不多,但各类判断与比较却颇为繁琐,所运用的工具技术也相对繁杂。不过,若能将它们有机整合,便能实现预期效果,这一点至关重要。实际上,可以从反向理解,思维需足够开阔,要有一定的开放经验,并且借助各种灵活变通的方式去妥善解决问题,同时自身也要逐步摸索,将各个步骤逐一落实。总体而言,难度并非巨大,在探索过程中或许会产生新的灵感,抑或遭遇一些小障碍,但都能够逐步调整优化并予以解决。关键在于思路必须清晰明了,不能混乱模糊。

如有可能,应多借助 AI 工具提升效率,尤其是开发效率。使用这些工具时,能够将更多精力聚焦于业务逻辑与实现步骤,而非深陷于实现细节之中,仿若站在更高维度审视问题,拥有一种类似上帝视角,琐碎的细节问题可交由 AI 处理,这恰是其擅长之处。或许不久之后,只需向其阐述大概逻辑,它便能补齐诸多细节。例如告知其获取菜单项内容以及当前可用金额,它便能自行思索获取方式,是采用 OCR 截图识别(本地识别或远程识别)、计算方式,还是调用本地控件读取鼠标位置控件中的文字或数字等,它都能够实现。它会尝试多种方式并编写代码运行,最终给出每种方式在识别效果、准确性、速度、安全性等方面的报告,甚至基于此提供建议,而我们只需做出最终决策或部分决策过程,具体实现细节则可交予 AI 或这个虚拟的“助手”完成。

从当前案例便能直观感受到 AI 在发展进程中对我们产生的影响。展望未来,随着 AI 推理能力不断增强,其补充具体步骤、解决特定问题的能力愈发强大,人类所需从事的工作或许会愈发抽象。以软件开发为例,如今在详细设计层面,只要用图形与文字清晰描述,它便能补齐所有细节,尽管尚处于试验版,但已初现端倪。再看李飞飞团队的成果,能依据一张图片生成系列 3D 视频,从 2D 图片中识别深度信息并拓展理解,补全未展示部分,如从房屋侧面生成其立体效果并制作视频,目前虽仅能生成 30 秒,不久便能延长至两三分钟。谷歌也推出依据图片生成 3D 游戏的技术,这可替代大量美工、策划与设计人员以及开发人员,其能力之强悍可见一斑。可以想象,日后依据图片或文字生成图片并调整后,便能直接生成游戏,这将极大提升游戏开发速度。

我目前所运用的虽只是解决特定问题的基础功能,但也切实有效,关键在于解决问题的同时,还能强化监控力度,节省诸多事务,使我能够接入更多账户,从而有更多时间去思考更高层级的概要设计乃至架构设计等事务。
谋城

24-12-08 11:32

0
目前主要采用 Java 结合数据库与文件的组合方式来实现相关功能。后续我也在考虑,Python 还是需要学的,毕竟量化平台大多使用它。若之后发现其他更复杂的策略,例如需要在量化平台读取五日平均数、当前行情数据等信息,单纯依靠 Java 本地操作肯定不行,不仅速度难以跟上,数据也不够全面。所以,为应对这种情况,也要编写 Python 代码。学会 Python 后,可以用其改写 Java 代码,这样整个程序运行或许会更加顺畅,而且部分代码能够复用。倘若日后规模扩大,券商若能开放交易接口,就无需通过监控界面,可直接调用相关接口,或者在量化平台内调用接口来实现自身逻辑,如此操作会便捷许多,这样之前提及的多台电脑方案也可缩减为一台或两台,当然每台电脑单独运行一个程序会更保险,可避免相互冲突与影响。

在代码开发过程中,可以参考 Kimi 的建议,我会把相关逻辑发给它,并且可能还需要绘制整体架构图与流程图,以便从全局检查是否存在漏洞。毕竟涉及资金交易,务必谨慎,要多做判断。机器人操作初期,速度应设置得慢一些,避免屏幕切换过快而让人目不暇接,待运行稳定后,再逐步缩短每个页面的等待时间,慢慢减少人工确认与提交等人工参与环节。若资金量较大且参与的交易标的众多,人工挂单效率确实低下,像期货方面,目前主要操作鸡蛋期货,也开始涉足花生期货,后续玉米期货也可能适当参与,品种增多时人工挂单会极为麻烦,若能实现自动化操作则会便利许多。不过,除非这三个品种行情波动巨大,否则在较长一段时间内人工挂单也可满足需求。现阶段重点在于将操作流程化、固定化并进一步优化,尽力避免出现明显的遗漏或问题,接下来便是推进程序化与自动化进程。未来可能会朝着量化方向发展,但这属于中长期目标,近期首要任务还是做好手工操作,设置好网格单。资金可能会在东方财富与银河证券之间频繁流转,但因背后绑定的银行均为招行,所以转入转出并无大碍。

之前提到很多代码我打算让 Kimi 帮忙实现,然后在此基础上进行调整优化。若有开发人员全力配合,我的工作量会大幅减少,他能协助我检查逻辑,我开发他测试,如此代码质量也会显著提高。然而目前缺乏能全职配合的开发人员,那就只能自己动手。其实工作量不算大,尤其有 Kimi 辅助,总体进展应该会比较快。不过我每天投入此项目的时间有限,大概一两个小时,更多时间要用于思考与处理操作事务,还要适当监督自身学。依我目前进度,若要进行小规模资金试验,估计至少需要一个半月到两个月;若有人员全职配合,一两个星期或许就足够了。此事也无需着急,可徐徐图之。或许再过段时间,编程助手如 Kimi 会更加智能,甚至百度、豆包等也有对应的 AI 插件,那时完全可以借助它们在本地开展开发测试工作,比如按钮点击导出等功能测试都可交由它们完成,代码修改也会极为便捷。我个人更倾向于直接指出语言存在的问题,只是不太清楚百度或豆包这些编程助手的智能程度,不确定它们能否实现对话功能,即我提出一个对话需求,例如实现某个功能,数据库所需字段、新增字段的特定属性值及其编号对应的中文含义等信息放入字典中,能否自动全部搞定。我认为此逻辑相对简单清晰,难度不大,若能实现,编程助手或插件使用起来将极为方便,关键是可大幅提升开发效率,原本一周五天的工作量或许一天就能完成,正好借此机会试用 AI 工具。
谋城

24-12-08 11:21

0
刚才我也在思考,关于触发的时机,也就是如何判断有没有单子成交,有几种方案。一种是刚刚提及的不断扫描委托成交菜单项,并与数据库进行对比。这种方式有个小缺点,即响应速度会稍慢。例如,若设定每 30 秒或每分钟扫描一次,这中间就会存在时间差,若按一分钟扫描一次计算,理论上时间差最大可达 59 秒左右,如此一来,再去挂反向单就会相对迟缓。不过,这种方式稳定性较好。

还有一种方式是依靠人工点击。比如有单子成交时,电脑右下角会弹出通知,同时伴有声音播放,知晓后手动点击,即可强行触发手动扫描程序,从而以最快速度响应。这种方式需要人工参与,相对而言略显麻烦,但比第一种方式更优。因为若不人工点击,就是按设定的一分钟或 30 秒触发;若人工点击,可能一两秒就能响应,毕竟点击后相当于立即触发。不过,右下角弹窗的消息,程序一般难以获取,除非使用特定控件来识别系统中右下角是否有弹窗,以及弹窗内容是否为成交信息,虽然理论上能够实现,但操作起来较为繁琐。

我个人认为稳定性更为重要,所以可以分两步走。第一步,先采用固定频率自动扫描,并且可对固定频率进行适当调整。比如在上午 9:30 至 10:00 之间,让扫描频率加快,设定为每隔 30 秒扫描一次;若过了这个时间段,可调整为一分钟或两分钟扫描一次。实际上,过了 10 点后,若无人专门盯盘,我们可能外出活动,像一边走路或跑步一边听音乐,此时若有成交,手机会收到成交信息,这种情况下完全可以手动挂反向单,因为此时交易节奏较慢,一般不会因挂单稍慢而错失成交机会,这种概率极低。

综上所述,可以先开发一个在 9:30 至 10:00 之间按特定频率扫描的软件,10 点之后降低扫描频率并使其运行。可设置一个计数器,当计数为偶数或能被三整除时正常运行,为奇数或不能被三整除时则空跑并直接返回,我觉得此策略理论上可行。

另外,关于界面调整,由于要监控程序,需将程序窗口设置为固定大小。我初步设想是将屏幕左侧分为两部分,左侧占据绝大部分空间,用于显示交易软件界面,右侧较窄,放置 Java 监控程序。当然,若监控程序能在后台运行也可,但我的想法是让 Java 程序也在界面上并排显示,这样一些日志输出能直接看到,比如当前扫描到成交单时,打印日志显示准备挂什么单、计算后准备挂多少股等信息都能持续输出,如此便能清楚知晓程序运行状况,包括定时扫描委托单还是空跑等情况都能输出日志,看着会很有成就感。若显示器更宽更大,理论上这个程序也能更好地适配。比如有些宽达一米的显示器,可以开启多个交易软件和多个交易监控程序,且界面都能合理排布,设置好后就能实现自动交易,这样一个人就能看到所有成交情况和状态,效果会更佳。当然,这只是初步设想,后续若进展顺利,也可以用 Java 绘制图表来显示,而非单纯输出日志,这样整体效果会更美观直观,虽说 Java 绘制的界面可能不够精致,但这并非关键,关键是能直观呈现信息,无需查看大量文字。
谋城

24-12-08 10:57

1
按照以往的规则,昨晚娃与同学去打球,之后在一家拉面馆吃面。回来途中有些冷,或许是吸入了凉风,晚上便感觉肚子不适。一两点时在沙发上坐了会儿,后来还是吐了。今早起来状况好了些,今天大概得好好休息。

现在嘛,自然是抓紧时间和同学一起玩王者荣耀开黑啦。

关于自动化交易这一块,基本已确定方向。接下来主要从实现层面着手,将各个环节与细节都弄清楚,然后尝试用 Java 代码进行操控,主要是模拟鼠标点击,比如导出文件并读取文件内容再加以分析,还有模拟键盘输入。理论上,这些环节不存在技术难题,但其中也有些细节,我刚才也在反复思索。

其一,获取当前可用资金余额有两种方法。第一种是直接对我的持仓进行截图,接着使用 ocr 服务识别,Java 代码可调用 Java 的第三方库,这种本地调用方式可能更快些,不过识别率会稍低一点,但因其文字较大,我觉得本地调用识别应该问题不大,可以一试。第二种则是调用阿里或亚马逊云的识别工具,在那上面识别,一是有费用,二是速度会慢些,好处是识别率较高,而我本地的都是标准文字,所以识别率应该也不会有太大问题。总体而言,如果要用 ocr 识别,我倾向于直接使用第三方库。

另一种方式是计算,先给当前总市值一个大概数值,例如 250 万,写入配置文件,然后计算当前持仓,把当前持仓列表中每支股票对应的市值减去,再减去当日已报或待报这类状态的委托单总金额,最终得出的就是当前可用金额。这种方式有个小问题,若持仓总市值发生变化,比如突然转入或转出一笔钱,或者市值自然增减,那持仓总市值就得适当矫正。当然,还有另一种办法,就是每天手动将市值的实际数值输入到配置文件中,这样就是最新的值,只是稍微麻烦一点,不过这问题不大,解决方案至少有这两套。

另外一个问题是对成交的判断,主要是将当前委托单与数据库里记录的委托单作对比,若发现其状态从已报变为已成,就表明该单子已完全成交,那就得准备挂反向单,这难度不大,但却是关键要点。

第三个是挂反向单的逻辑,比如刚成交的单子,无论是向上突破卖出成交,还是向下跌破买入成交是,都是在更高一档挂卖单,更低一档挂买单。也就是完全模仿银河的加强版网格。但这里有个小问题,要先生成的卖出单价位和买入单价位,得与现有的挂单对比一下,若发现现有已报状态的挂单里已经有对应价位,那就不应再挂单。

具体价位也要注意。因价格计算存在一定偏差,我打算将每个价位固定住,给每个价位编个号,且把价位数字作为编号一部分,比如 20241208_40.5 就改成 20241208_405,这样的好处是能与数据库直接匹配,我无需再计算。并且在类似字典表中设置每支股票的代码、名称、价位编号以及价位本身,如此在程序里基本只需用价位编号作为键,取值时取出对应的值即可。再者,再给个序号,即每个价位都有下一个价位,取出序号就能自动获取其下一位或上一位价位,如果取不到,就代表已到最高位或最低位,那就无需操作。这样能避免临时的手工计算和电脑计算,因涉及浮点数容易产生误差,现在直接取值就是固定值了。
程序启动时从数据库字典中直接加载数据放到内存对象中保存起来。

除此之外,还有个好处,若手动挂单成交金额与程序预先设置的价位列表不相等,若有成交就做特殊标记,即认为是人工挂单成交,将其忽略,人工挂单成交若不是标准价位,就让其对应人工再反向操作,这样现有的整套逻辑总体不受影响。不过这里有个小问题,人工操作会影响持仓量和当前可用量,这是个弊端,但总体来说问题不大,若涉及人工操作,最好先暂停自动化交易软件,做完人工操作后,后续主要是人工反向操作,理论上应尽量避免人工操作,因其相当于临盘决策,不太合理。

第四点,若整个股票软件能顺利运行,我就无需量化策略了,每天只要开启程序,它就能自动帮我交易,还能实现特定网格交易,比如跌到某个价位,对应的买单和卖单数量是多少,这些都能提前在数据字典里配置好,到了相应位置就自动按逻辑买卖,这样能尽量避开情绪干扰。

第五点,如果程序运行稳定,我将重点使用东方财富,目前正准备适配其自动化交易。它的最大优势在于软件稳定且人性化,还有 vip 交易服务,也开通了融资融券,后续若要使用融资,可人工操作或扩展程序适当介入融资操作,不过要格外谨慎。

第六点,我打算先使用 pc 版东方财富证券里的模拟盘,只要菜单相似即可。使用模拟盘的好处是能随意折腾、挂单,不会对实际金额产生影响。当然,也可以间接操作,真要测试时,选一只价格较低且稳定的股票做网格交易,用自动化程序实现,练一两个星期,把遇到的问题尽量解决好,资金大部分先转至银河证券,等这边稳定运行后再转回来,这样更稳妥。

第七点,如果股票交易稳定,日后尽量集中使用一个账户,若有更多账户需要操作,可考虑同时登录多个账户。东方财富有个功能,按键盘上的 or + 1 可显示当前账户,or + 2 显示另一个账户,几个账户间可切换,但这会增加程序复杂性,较好的方式是用多台电脑,每台电脑单独控制一个账户,若账户规模较小,设置网格单条件单或人工操作即可,若同学账户资金规模较大,就有必要设置自动交易,毕竟其参与标的多,成交数量可能也多,若自动化交易能实现,可节省大量人工操作。这样理论上也能接入更多账户,若每台笔记本电脑操作一个账户,准备两三台笔记本电脑基本足够,且每台电脑若都是东方财富证券交易,代码基本无需改动,只需在取鼠标区域坐标位置时,因不同电脑分辨率有差异而稍作调整,若想更便捷,可购买几台型号相同的笔记本电脑,调好一台后,其余可参照设置。

除了操作股票,理论上按此思路也能操作期货,前提是期货的交易委托单等都能导出为 Excel 文件之类的,若可以,这些理论上都能达成。这样每台电脑开一个自动化程序控制一个账户,理论上控制七八个甚至十个都没问题,若一个人同时看两三台电脑,或三四台电脑,两三个人来看七八个或上十个电脑也可行。如此一来,之前所说让机器、电脑模拟操作,告知其操作逻辑,就相当于通过自动化程序实现了这一点。从这个角度讲,自动化交易与量化交易存在极大区别,量化交易一般包含自动化交易,但自动化交易很多时候不属于量化交易,我的策略非常简单,无需像量化交易那样做很多诸如当前符合某个技术指标、涨速等临盘分析决策。当然,我的方式也有缺点,因很多是通过导出文件再分析数据,尤其是导出委托单那部分需反复操作,所以实际操作时速度没那么快,但估计 5 - 10 秒处理一个成交单的反向单应该足够,所以理论上比人工操作还是要快些,且更安全可靠。
谋城

24-12-08 10:01

0
早上的时候
打开交易软件
发现里面可以导出当前持仓、当日委托到excel文件
这就更简单了
完全不需要截图OCR来识别文字或表格
可以直接用Java程序模拟鼠标点击来导出文件
然后按交易逻辑判断,与本地的MySQL数据库中的当日委托单比较
就能有效地识别出是否有新的单子成交
然后生成反向买卖单,
模拟鼠标点击和键盘输入
最后弹窗提示,等待人工确认后点击 买入 或 卖出按钮

待整套系统运行成熟后
再将最后一步等待人工确认过程取消
即可自动完成所有动作
静观其变521

24-12-08 08:07

0
@艾呈彬 确实。又能干又体贴!
谋城

24-12-08 00:49

1
Java实现

1、坐标定位,使用微信截图时显示鼠标坐标
记录到文件里
2、使用Java的Robot模拟鼠标点击菜单项
3、菜单项中部分内容截图,保存到文件
调用服务上传图片识别与提取文字,从返回接口中提取有效目标位置内容。
4、对内容进行逻辑判断
比如最近委托成交(全部成交)的股票与价格、数量等信息,如果是刚才成交的,反向挂买卖单
如果有必要,可以将最近成交的单子保存到文件或数据库中,最典型的是保存委托编号与提交日期(当天,而不是前一天晚上)
5、模拟鼠标点击买入或卖出菜单项
6、获取到股票代码输入框位置,鼠标点击定位,键盘模拟输入代码,然后鼠标定位买入或卖出数量位置,键盘模拟输入数量,弹窗提示用户点击买入或卖出按钮。
7、用户确认无误后,关闭Java的确认框,并实际点击买入或卖出按钮。并再次确认提交的单子无误。

本次操作完成。

基本上一系列的难点与重点都过了一遍
理论上可以通。
谋城

24-12-08 00:29

0
从坐标定位、模拟鼠标点击,
到截图,到调用服务识别与提取文字,
到逻辑判断
到下单时需要的坐标定位
模拟键盘输入数字

基本上一系列的难点与重点都过了一遍
理论上可以通。

用Java实现
刷新 首页 上一页 下一页 末页
提交