JavaScript是世界上最流行的编程语言之一,已有二十多年的历史,它也是Web开发人员常使用的三种主要语言之一。JavaScript可以用于各种各样的目的,从增强网站功能到运行游戏和基于Web的软件。
但是一种语言不可能做到完美,在过去的十年里,JavaScript驱动的网站方法(如:由JavaScript生成的HTML)常常被用在一些无益的情况下。把应用程序(例如:谷歌地图)和交互式文档(例如:Twitter)混为一谈的人数不胜数,创建了很多占内存、性能差又耗电的网站。另外,JS代码段相当大,且各浏览器厂商对JavaScript支持程度不同,在不同的设备上会以不同的方式呈现,从而导致展示效果不一致。
所以,很多人会产生一种“反JS”的情绪不足为奇。有些“反JS”激进者甚至希望使用一些不带JavaScript的网站。这种观点和“亲JS”一样,都低估了科技发展以及人的能动性的力量。
JavaScript是把双刃剑
Web发展已经有二十年的历史了,但是还是有很多人不会使用。数字鸿沟真实的存在,无论是在手机,还是在电脑上使用网站,仍然有很多人对于如何使用感到费解。如果真的在网站中禁用JavaScript,对于这些用户来说,使用体验只会更差。因为JavaScript还是有一些优点的,比如:
一个简单的基于JavaScript构建的购物车更容易使用,相比于每次按下添加商品按钮后自动重新定向到购物车页面,所需要的资源更少。
与注重体验的页面相比,输入数据时实时更新并实时通知所需支付费用的税收计算器,所产生的压力更小,效率更高,并且需要的来回次数更少。
一家保险公司提供由十几页组成的复杂订阅通道,看起来十分混乱且不易导航。可以用几个较小的表格代替,将这些表格相互堆叠,可以在一个页面中即时保存、编辑和缩小。
如果需要调整设置,阅读障碍者必须进入其配置面板,在表单中选择阅读障碍模式,然后对其进行验证,重新加载整个网站后可以使用新的样式。这个操作可以用一个简单的切换按钮实现,在任何界面都无需重新加载。
无论是绝对支持JavaScript还是反对JavaScript都不是一种好的解决方法。但是如果我们不强制在交互式文档中使用JavaScript,并且把它作为一种增强用户体验的工具就能很好的解决这两种极端情况带来的问题。
在用户体验和技术能力之间找到合适的平衡点的网站已经是一种常态。在我们有工具和知识可以做得更好的时候,绝对支持或反对JavaScript的看法是落后的。围绕着JavaScript使用的思维方式已经在行业中发生了转变,越来越多的人提倡更负责任的方法。
大多数的前端框架现在都用于元框架(其中Next是领导者),提供服务器端的渲染与交互,从而在旧的硬件上工作。其中一些框架甚至不再是库,而是编译器(如Svelte),可以输出超级微小和高效的代码。
现在微框架已经兴起,它们的工作方式没有变化,但体积却小了10倍(Preact vs React),而且它们中的大多数甚至更快。还有另一些框架,它们可以编译成HTML并创建JavaScript交互的 "岛屿",结合了双方的优点(这就是Astro)。
所有这些之前提到的框架都严重依赖于一个庞大的工具生态系统,而这个生态系统仍然存在问题,不安全,脆弱(而且其中大部分现在被微软拥有)。但至少他们更加注重用户体验。对于那些不喜欢NPM但又想编译JavaScript的人来说,有一些单一的二进制文件,比如(Esbuild),可以直接安装在系统上,按照自己想要的方式使用。
最后,对于一些真的抗拒JavaScript的人来说,有一些库可以通过HTML属性(HTMX,Alpine)来管理Ajax调用或dom交互。这些库已经在“反JS”文化的团队中取得了很大的成功,比如Python、Ruby甚至JAVA。
但这依然不是万全之策。我们要消除Angular和React对网站造成的损害,同时保持它们的优势,仍然需要很多年的努力。但是,至少我们努力的方向是对的,也许很快我们就能够在2005年的电脑上拥有看起来和感觉上都不像2005年网页的网站。
你对此有什么看法呢?你是极端的支持或者反对JS者还是中立者呢?欢迎留言告诉我们。
参考资料:
https://thomasorus.com/about-the-no-js-mindset.html
https://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html
https://www.simcf.cc/9122.html
《新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造
评:如果停用浏览器里的 JavaScript,网页还能正常运作吗?JavaScript 的便利到底是让我们更方便了还是更复杂了?
在柏林,有一个写 JavaScript 的程序员,有一天她终于厌烦了天天为了挣钱而写 JavaScript,一点乐趣都没有。于是她决定要在没有 JavaScript 的情况下度过完全属于自己的一整天。
看起来好像有点疯狂,不过想想上古时期的网页没有 JavaScript 不也这么过来了么,看起来完全禁用 JavaScript 也不是什么大不了的事情。
然后她就这么干了!
以下是她访问过的几个热门网站,禁用 JavaScript 之后:
YouTube 的视频和缩略图都无法加载
Netflix 除了左上角的徽标之外不加载任何东西
亚马逊看起来有点奇怪,不过还是可以买买买!
维基百科依然很正常
Google 搜索仍然很好用
没有 JavaScript 的一天,大体是这样的:
网页加载速度快得不要不要的
没有任何广告弹窗,也没有渣推自动播放视频
但是……很多网站不工作。图片不加载,表单无法提交
总之,作者依然有点愤慨,她认为这是个面向所有用户和设备的互联网,而不是 JavaScript App Store,我们应该确保即使是最基本的设备也能浏览网页。
似性模式匹配如何帮助我们预测股票走势。
Python代码在最后用于复制和粘贴。本文将解释我如何使用Python实现,以及我们应该如何在股票预测中最好地使用这种模式匹配技术。
免责声明:我强烈建议您在将这些代码用于交易算法之前,先阅读我的文章。
我还将在最后分享我的观点,以及如何最好地利用这个想法来调整我们的创业。
以下是明天(2024年5月22日)盈利公告前即将到来的90天英伟达股票预测的快速视图。
你有什么感觉?
Nvidia股票预测在2024年第1季度前1天赚取股份(即2024年5月21日)
以上是股票公告后的价格预测(作者更新时间:2024年5月23日)
继续阅读,看看这张图表是如何用末尾的完整代码生成的。
由于英伟达将于明天2024年5月22日宣布其2024年第一季度结果的收益,让我首先向您展示预测结果,并展示我的Python代码是如何得出这一预测的。
我用左边的30天红线作为每个公告的“价格模式”。DOTTED-RED线是每个公告发布之前未来90天的预测。绿线是供比较的实际股价。
2023年5月24日宣布2023年第1季度
2023年8月23日发布2023年第二季度公告
2023年11月21日发布2023年Q3公告
2023年2月21日Q4公告
乍一看,你可能会说“这完全关闭了!”
你是对的!
尽管我可以争辩说“趋势实际上还不错!”但它似乎被巨大的规模所抵消。发生这种情况是因为在每次宣布时,市场的行为都不同,市场反应是由预期驱动的。机构投资者设定了这种预期,如果结果超过“他们的”预期,尽管结果实际上每季度呈指数增长,但则设定了主观预期。
好的,让我们调整我们的预测,并将其推迟到通知后1到2天后。以下是预测1-2天后未来股票走势的相同程序。
2023年5月25日宣布2023年第一季度(晚1天)——看起来不错
2023年8月24日宣布2023年2季度(晚1天)——非常关闭
2023年11月22日宣布2023年第三季度(晚1天)——和以前一样
2023年2月23日第4季度宣布(晚2天)——还不错
如果我们能在一两天内避免重大事件,那么预测似乎与实际价格趋势有很大距离。这并不难理解,因为重大事件导致价格波动更大。我会在这篇文章的结尾处解释更多。
让我们讨论一下我在幕后做什么。
使用一只股票的股票图表模式来识别另一只股票或自己图表的早期阶段的类似模式,我们可以进行预测,这是一个非常诱人的策略,因为市场认为历史价格走势包含有价值的信息,可以应用于不同的股票,特别是在同一行业内。
这种方法背后的原则在于假设股票图表中的某些模式或趋势,如支撑和阻力水平、趋势线和烛台形成,反映了潜在的市场心理和投资者行为。这些模式被认为在各种股票和时间框架中重复出现,为我们提供了预测未来价格走势的机会。
通过利用机器学习算法或统计技术,可以从一只股票的历史数据中提取的模式与另一只股票的模式进行比较和匹配,从而能够识别类似的市场条件和潜在的交易机会。
在这个程序中,我正在使用余弦相似性进行模式匹配,并使用sklearn.metrics.pairwise中的模块作为测量两个向量之间相似性的常见技术,通常用于文本挖掘、信息检索和机器学习。
如果你不熟悉余弦相似性,并且有时间,那就去做别的事情吧:)相信它能从两种模式中找到相似性就足够了。除非你想更深入地研究数据科学,否则你可以去维基百科作为你的起点。下面的方程已经由sklearn模块处理了......唉!
我将在我正在编写的书中更详细地解释这个程序的工作原理,但在这篇文章中,我将给出要点,以保持简短。
以下是喂养两个周期股票的例程,通过从sklearn模块调用cosine_similarity,如果找到匹配的模式,它将返回起点。
从 sklearn.metrics.pairwise import cosine_similarity
def calculate_similarity(target_period,other_period):
#通过用相应列的平均值填充来处理NaN值
target_period_filled=np.nan_to_num(target_period,nan=np.nanmean(target_period))
other_period_filled=np.nan_to_num(other_period, nan=np.nanmean(other_period))
similarity=cosine_similarity(target_period_filled.reshape(1, -1), other_period_filled.reshape(1, -1))
返回相似性[0][0]
通过此例程并将滚动()函数应用于股票,我们可以找出Nvidia与我们要比较的周期相似:
上图显示了我们在自己的历史图表中发现类似模式的位置。
底部图表显示了红色时期(以供比较)和黄色时期(发现类似模式)的放大视图。请注意,左轴和下轴代表类似的模式周期和价格;上轴和右轴代表我们的目标比较股票的周期和价格。
我想预测在2023年11月21日2023年第三季度宣布之后的价格。我在通知前30天使用了,并试图从之前的价格中找到一个匹配的模式。
在下图中,它显示了从2023-10-15到2023-11-22(红色突出显示)(30天)的Nvidia价格可以从2021-06-09到2021-07-09(黄色突出显示-共30天)的同一图表中找到。如果需要,我们可以更改变量以搜索更长的时间跨度,例如90天。
从早期日期发现的类似模式,底部图表是两个时期的比较
如果我们扩展符号列表,我们甚至可以从其他股票或同一行业内搜索股票模式的相似性,因为同一股票的历史数据并不总是具有最佳匹配模式。然而,人们必须注意,尽管没有最佳匹配模式,但同一只股票应该比其他股票有更好的指示。将苹果与橙子进行比较是可能的,但并不总是可取的。
如果我们将Nvidia与其他技术股票相比较,并尝试找到一种模式,以下是一些结果,这是控制台输出供参考:
计划开始时间:20240521_1614
从文件中读取股票部门...
[********************100%%*************************] 56个已完成
比较AAPL |#######################################| 2371/2371
比较MSFT |#######################################| 2371/2371
比较GOOG |####################################| 2371/2371
比较AMZN |#################################| 2371/2371
比较META |####################################| 2371/2371
比较T |####################################| 2371/2371
比较VZ |####################################| 2371/2371
比较DIS |####################################| 2371/2371
比较NFLX |####################################| 2371/2371
比较CMCSA |####################################| 2371/2371
比较TSLA |####################################| 2371/2371
比较通用汽车 |####################################| 2371/2371
比较F |####################################| 2371/2371
比较NIO |################### | 1309/2371
比较福特 |#################################| 2371/2371
比较JNJ |####################################| 2371/2371
比较PFE |####################################| 2371/2371
比较UNH |####################################| 2371/2371
比较MRK |#################################| 2371/2371
比较AMGN |####################################| 2371/2371
比较JPM |####################################| 2371/2371
比较BAC |####################################| 2371/2371
比较WFC |####################################| 2371/2371
比较C |####################################| 2371/2371
比较GS |#################################| 2371/2371
比较PG |####################################| 2371/2371
比较KO |####################################| 2371/2371
比较PEP |####################################| 2371/2371
比较成本 |####################################| 2371/2371
比较WMT |####################################| 2371/2371
比较BA |#################################| 2371/2371
比较 HON |####################################| 2371/2371
比较MMM |####################################| 2371/2371
比较UNP |####################################| 2371/2371
比较UPS |####################################| 2371/2371
比较LIN |#################################| 2371/2371
比较APD |####################################| 2371/2371
比较ECL |####################################| 2371/2371
比较NEM |####################################| 2371/2371
比较DD |####################################| 2371/2371
比较AMT |####################################| 2371/2371
比较EQIX |####################################| 2371/2371
比较PLD |#################################| 2371/2371
比较SPG |####################################| 2371/2371
比较CBRE |####################################| 2371/2371
比较NEE |####################################| 2371/2371
比较DUK |#################################| 2371/2371
比较SO |####################################| 2371/2371
比较EXC |####################################| 2371/2371
比较D |####################################| 2371/2371
比较XOM |####################################| 2371/2371
比较CVX |####################################| 2371/2371
比较COP |####################################| 2371/2371
比较SLB |#################################| 2371/2371
比较PSX |#######################################| 2371/2371
比较NVDA |####################################| 2349/2349
[?25hCOP股票与NVDA股票最相似的时期:
most_类似_库存
警察
最高相似度值:99.98%
类似时期开始日期:2016-03-17 00:00:00
类似时期结束日期:2016-04-28 00:00:00
我们发现COP在2016年期间与NVDA有99.98%的相似性。以下是放大视图
通过在我们找到匹配模式后绘制以下时期,我们可以用它来预测当前时期,以预测未来的股票走势。
现在,我们从上面的两张图表中看到,我们能够找到类似的模式,一种是早期时期的股票本身,另一种是其他股票的更密切匹配,我们现在可以尝试使用以下时期来预测价格走势作为我们的预测。让我们用这两个例子来预测NVDA的未来!
如果使用NVDA本身来预测未来的价格行动,结果:
由于从2021-06年到2021-07年(30天)也发现了类似的模式,我们现在可以使用以下90天(2021-07年至2021-10)来预测我们未来的90天。
我们未来时间框架2023-12至2024-02年使用2021-6至2021-10的预测价格
如果我们使用COP来预测相同,我们将获得未来期间的下图:
我们可以看到,即使我们从自身和其他股票COP中都发现了非常相似的模式,未来的预测可能非常不同。
在这种情况下,我们应该使用哪一个?让我们叠加NVDA的结果,并与COP的结果进行比较:
基于NVDA历史价格的预测价格表明预计会长期升级
基于COP历史价格的预测价格,预计短期内交易区间为平
使用30天的模式并尝试预测90天的未来是很好的指导,但无论预测是基于统计或机器学习/人工智能,都不能过度依赖预测。
如果您能够理解上述内容,我的程序已将所有视图合并到一个图中,下面显示了我如何在2023年第四季度使用它,日期为2024-02-21的收益公告的完整故事,但正如我之前提到的,在公告日期后创建预测是更明智的,以避免不可预测的波动性,即2024-02-22。
与自身概述比较
如果我使用技术股票作为主要参与者进行比较,我得到META与该计划的更接近的匹配,NVDA未来价格绘制在顶部图表上。
与技术股票相比,META有99.95%的匹配和NVDA未来模式
我会把程序留给你探索,并运行各种模拟。
如果您与我之前的文章相结合,如何从各种来源中提取股票符号或从同一部门的符号,您可以比较并尝试找到数千只股票的匹配模式,以便根据近期价格走势给出各种可能的价格范围。
股票模式匹配有时有效,有时无效,我简单的答案是历史重复,但不完全像我们想象的那样,不是在一个完美的圆圈中,而是更像一个螺旋。
如果可以找到一种模式,并在交易日过去时以一定的准确性正确预测,这意味着在那个时期,市场情感与当前情况非常相似,这只股票确实给投资者一种与过去事件进行比较的类似感觉。
如果无论我们如何努力,都无法找到或预测模式,我们将消除“历史会重演!”的想法。从我们的脑海中,并在对市场分析的整个过程中执行更多操作。这意味着我们正在研究的股票“不像其他任何东西”,因为我们人类总是想在生活中找到熟悉的模式。是时候“跳出框框思考”并忘记过去了。太多的人迷失在他们所做的事情中,因为他们“希望”和思考事情会重演。我的图表告诉你“是时候放手了”。
正如Nvidia示例中观察到的,在收益公告(“事件”)后,市场预测往往更准确或在预期范围内。这一观察支持了这样一种观点,即市场在很大程度上是由情绪驱动的,而不是完全基于事实和数字。
情感决策通常主导着围绕事件的交易行为,本质上不那么准确,也更不可预测。
鉴于此,在正常交易期间依靠市场预测,并根据不可预测的事件不断调整预测,是更明智、更安全的。此类事件创造了波动性和新的价格行为,可以成为人工智能和机器学习中强化学习算法的宝贵投入。
通过不断整合这些新数据点,人工智能系统可以改进其模型,更好地了解市场情绪和反应的细微差别。这种自适应学习方法允许任何逻辑,特别是人工智能,随着时间的推移完善其预测,使其在面对受人类情绪和意外事件影响的市场动态时更具弹性和准确性。
本质上,虽然由于人类行为和情绪的固有不可预测性,市场可能永远无法完全预测,但利用您的算法从这些波动中学习可以增强预测模型。这种迭代的学习和适应过程有助于创建一个更强大的系统,能够驾驭市场运动的复杂性,无论是在稳定时期还是在应对突然的、情绪驱动的变化。
为了最好地利用这种预测方法,我强烈建议:
Geranimo在Unsplash上拍摄的照片
我们可能仍然怀疑,即使人工智能和机器学习取得了进步,任何预测方法是否也能实现完全的准确性。这种怀疑是绝对合理的。如今,市场主要由买家和卖家驱动,主要是人类。也许有一天,如果交易完全由机器人和自动化系统主导,市场行为将更可预测......
但是,有什么好玩的呢?
*请认真填写需求信息,我们会在24小时内与您取得联系。