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小時內與您取得聯系。