【python量化交易】—— 雙均線擇時策略 - Qteasy自定義交易策略【附源碼】

使用qteasy自定義并回測雙均線交易策略

  • 使用qteasy自定義并回測一個雙均線擇時策略
    • 策略思想
    • 導入qteasy模塊
    • 創建一個新的策略
    • 回測交易策略,查看結果

使用qteasy自定義并回測一個雙均線擇時策略

我們今天使用qteasy來回測一個雙均線擇時交易策略,qteasy是一個功能全面且易用的量化交易策略框架,Github地址在這里。使用它,能輕松地獲取歷史數據,創建交易策略并完成回測和優化,還能實盤運行。項目文檔在這里。

為了繼續本章的內容,您需要安裝qteasy【教程1】,并下載歷史數據到本地【教程2、),詳情可以參考更多教程【教程3】。

建議您先按照前面教程的內容了解qteasy的使用方法,然后再參考這里的例子創建自己的交易策略。

策略思想

本策略根據交易目標的其日K線數據建立簡單移動平均線的雙均線交易模型,
交易策略如下:

策略包含兩個參數:短周期天數S、長周期天數L
分別以兩個不同的周期計算交易標的日K線收盤價的移動平均線,得到兩根移動均線,以S為周期計算的均線為快均線,以L為周期計算的均線為慢均線,根據快慢均線的交叉情況產生交易信號:

  1. 當快均線由下向上穿越慢均線時全倉買入交易標的
  2. 當快均線由上向下穿越短均線時平倉

模擬回測交易:

  • 回測數據為:滬深300指數(000300.SH)
  • 回測周期為2011年1月1日到2020年12月31日
  • 生成交易結果圖表

策略參數優化:

  • 同樣使用HS300指數,在2011年至2020年共十年的歷史區間上搜索最佳策略參數
  • 并在2020年至2022年的數據上進行驗證
  • 輸出30組最佳參數的測試結果

導入qteasy模塊

import qteasy as qt

創建一個新的策略

使用qt.RuleIterator策略基類,可以創建規則迭代策略,
這種策略可以把相同的規則迭代應用到投資組合中的所有股票上,適合在一個投資組合
中的所有股票上應用同一種擇時規則。

from qteasy import RuleIterator
# 創建雙均線交易策略類
class Cross_SMA_PS(RuleIterator):"""自定義雙均線擇時策略策略,產生的信號類型為交易信號這個均線擇時策略有兩個參數:- FMA 快均線周期- SMA 慢均線周期策略跟蹤上述兩個周期產生的簡單移動平均線,當兩根均線發生交叉時直接產生交易信號。"""def __init__(self):"""初始化交易策略的參數信息和基本信息"""super().__init__(pars=(30, 60),  # 策略默認參數是快均線周期30, 慢均線周期60par_count=2,  # 策略只有長短周期兩個參數par_types=['int', 'int'],  # 策略兩個參數的數據類型均為整型變量par_range=[(10, 100), (10, 200)],  # 兩個策略參數的取值范圍name='CROSSLINE',  # 策略的名稱description='快慢雙均線擇時策略',  # 策略的描述data_types='close',  # 策略基于收盤價計算均線,因此數據類型為'close'window_length=200,  # 歷史數據窗口長度為200,每一次交易信號都是由它之前前200天的歷史數據決定的)# 策略的具體實現代碼寫在策略的realize()函數中# 這個函數接受多個參數: h代表歷史數據, r為參考數據, t為交易數據,pars代表策略參數# 請參閱doc_string或qteasy文檔獲取更多信息def realize(self, h, r=None, t=None, pars=None):"""策略的具體實現代碼:- f: fast, 短均線計算日期;- s: slow: 長均線計算日期;"""from qteasy.tafuncs import sma# 獲取傳入的策略參數f, s= pars# 計算長短均線的當前值和昨天的值# 由于h是一個M行N列的ndarray,包含多種歷史數據類型# 使用h[:, N]獲取第N種數據類型的全部窗口歷史數據# 由于策略的歷史數據類型為‘close’(收盤價),# 因此h[:, 0]可以獲取股票在窗口內的所有收盤價close = h[:, 0]# 使用qt.sma計算簡單移動平均價s_ma = sma(close, s)f_ma = sma(close, f)# 為了考察兩條均線的交叉, 計算兩根均線昨日和今日的值,以便判斷s_today, s_last = s_ma[-1], s_ma[-2]f_today, f_last = f_ma[-1], f_ma[-2]# 根據觀望模式在不同的點位產生交易信號# 在PS信號類型下,1表示全倉買入,-1表示賣出全部持有股份# 關于不同模式下不同信號的含義和表示方式,請查閱# qteasy的文檔。# 當快均線自下而上穿過上邊界,發出全倉買入信號if (f_last < s_last) and (f_today > s_today):  return 1# 當快均線自上而下穿過上邊界,發出全部賣出信號elif (f_last > s_last) and (f_today < s_today):  return -1else:  # 其余情況不產生任何信號return 0

回測交易策略,查看結果

使用歷史數據回測交易策略,使用歷史數據生成交易信號后進行模擬交易,記錄并分析交易結果

# 定義好策略后,定一個交易員對象,引用剛剛創建的策略,根據策略的規則
# 設定交易員的信號模式為PS
# PS表示比例交易信號,此模式下信號在-1到1之間,1表示全倉買入,-1表示
# 全部賣出,0表示不操作。
op = qt.Operator([Cross_SMA_PS()], signal_type='PS')# 設置op的策略參數
op.set_parameter(0, pars= (20, 60)  # 設置快慢均線周期分別為10天、166天)# 設置基本回測參數,開始運行模擬交易回測
res = qt.run(op, mode=1,  # 運行模式為回測模式asset_pool='000300.SH',  # 投資標的為000300.SH即滬深300指數invest_start='20110101',  # 回測開始日期visual=True  # 生成交易回測結果分析圖)

交易結果如下;

     ====================================|                                  ||       BACK TESTING RESULT        ||                                  |====================================qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 36.2ms
time consumption for operation back looping:  718.5msinvestment starts on      2011-01-04 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     10.1 years.-------------operation summary:------------Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    24       25     49   52.8%      0.0%     47.2%   Total operation fee:     ¥      861.65
total investment amount: ¥  100,000.00
final value:              ¥  117,205.20
Total return:                    17.21% 
Avg Yearly return:                1.59%
Skewness:                         -1.11
Kurtosis:                         13.19
Benchmark return:                69.85% 
Benchmark Yearly return:          5.39%------strategy loop_results indicators------ 
alpha:                           -0.044
Beta:                             1.001
Sharp ratio:                     -0.029
Info ratio:                      -0.020
250 day volatility:               0.153
Max drawdown:                    47.88% peak / valley:        2015-06-08 / 2017-06-16recovered on:         Not recovered!===========END OF REPORT=============

從上面的交易結果可以看到,十年間買入25次賣出24次,持倉時間為52%,最終收益率只有17.2%。

下面是交易結果的可視化圖表展示

在這里插入圖片描述

交叉線交易策略的長短周期選擇很重要,可以使用qteasy來搜索最優的策略參數:

# 策略參數的優化
# 
# 設置op的策略參數
op.set_parameter(0, opt_tag=1  # 將op中的策略設置為可優化,如果不這樣設置,將無法優化策略參數)
res = qt.run(op, mode=2, opti_start='20110101',  # 優化區間開始日期opti_end='20200101',  # 優化區間結束日期test_start='20200101',  # 獨立測試開始日期test_end='20220101',  # 獨立測試結束日期opti_sample_count=1000  # 一共進行1000次搜索)

策略優化可能會花很長時間,qt會顯示一個進度條:

[########################################]1000/1000-100.0%  best performance: 226061.246
Optimization completed, total time consumption: 28"964
[########################################]30/30-100.0%  best performance: 226061.246

優化完成,顯示最好的30組參數及其相關信息:

==================================== 
|                                  |
|       OPTIMIZATION RESULT        |
|                                  |
====================================qteasy running mode: 2 - Strategy Parameter Optimizationinvestment starts on 2011-01-04 00:00:00
ends on 2021-12-31 00:00:00
Total looped periods: 11.0 years.
total investment amount: ¥   100,000.00
Reference index type is 000300.SH at IDX
Total Benchmark rtn: 54.89% 
Average Yearly Benchmark rtn rate: 4.06%
statistical analysis of optimal strategy messages indicators: 
total return:        98.11% ± 8.85%
annual return:       6.41% ± 0.42%
alpha:               -inf ± nan
Beta:                -inf ± nan
Sharp ratio:         -inf ± nan
Info ratio:          0.004 ± 0.002
250 day volatility:  0.150 ± 0.005
other messages indicators are listed in below tableStrategy items Sell-outs Buy-ins ttl-fee      FV      ROI   Benchmark rtn  MDD 
0     (13, 153)      14.0     14.0    687.05 190,792.39  90.8%     54.9%     32.8%
1     (22, 173)       8.0      8.0    395.88 190,814.17  90.8%     54.9%     31.6%
2     (39, 153)       9.0      9.0    472.15 192,264.81  92.3%     54.9%     32.4%
3     (40, 161)      11.0     11.0    560.40 191,355.89  91.4%     54.9%     31.6%
4     (25, 117)      12.0     13.0    628.58 192,098.97  92.1%     54.9%     31.6%
5     (28, 177)       7.0      7.0    330.99 192,535.14  92.5%     54.9%     31.6%
6     (19, 183)       8.0      8.0    393.19 191,723.19  91.7%     54.9%     31.6%
7     (19, 185)       7.0      7.0    321.65 192,112.23  92.1%     54.9%     31.6%
8     (16, 165)       8.0      8.0    367.36 192,663.11  92.7%     54.9%     31.6%
9     (37, 170)       8.0      8.0    406.04 192,756.35  92.8%     54.9%     31.6%
10    (24, 167)       9.0      9.0    434.69 193,170.89  93.2%     54.9%     31.6%
11    (33, 173)       6.0      6.0    296.75 194,352.40  94.4%     54.9%     31.6%
12    (35, 172)       6.0      6.0    296.42 194,090.45  94.1%     54.9%     31.6%
13     (81, 82)      66.0     67.0  4,074.64 193,209.43  93.2%     54.9%     43.3%
14    (18, 192)       8.0      8.0    375.54 194,179.11  94.2%     54.9%     32.0%
15    (39, 149)       7.0      7.0    330.31 194,549.12  94.5%     54.9%     31.6%
16     (17, 21)      90.0     91.0  5,375.15 195,955.66  96.0%     54.9%     27.9%
17    (27, 168)       8.0      8.0    356.07 194,993.23  95.0%     54.9%     31.6%
18     (59, 70)      27.0     28.0  1,517.79 196,081.66  96.1%     54.9%     41.0%
19    (20, 181)       7.0      7.0    324.45 196,273.52  96.3%     54.9%     31.6%
20    (11, 175)       9.0      9.0    441.25 196,223.57  96.2%     54.9%     31.6%
21    (10, 178)      12.0     12.0    592.85 198,623.15  98.6%     54.9%     31.6%
22    (28, 104)      13.0     14.0    766.09 200,232.97 100.2%     54.9%     31.8%
23    (23, 170)       8.0      8.0    412.78 203,044.62 103.0%     54.9%     31.6%
24    (11, 160)      17.0     17.0    859.76 204,142.24 104.1%     54.9%     31.6%
25     (80, 85)      33.0     34.0  2,102.59 210,103.70 110.1%     54.9%     43.4%
26    (25, 166)       9.0      9.0    450.67 205,575.49 105.6%     54.9%     31.6%
27    (10, 162)      17.0     17.0  1,002.46 214,217.37 114.2%     54.9%     31.6%
28     (61, 66)      42.0     43.0  2,630.56 219,235.18 119.2%     54.9%     36.9%
29     (19, 24)      77.0     78.0  4,899.88 226,061.25 126.1%     54.9%     25.0%===========END OF REPORT=============

這三十組參數會被用于獨立測試,以檢驗它們是否過擬合:

[########################################]30/30-100.0%  best performance: 133297.532
==================================== 
|                                  |
|       OPTIMIZATION RESULT        |
|                                  |
====================================qteasy running mode: 2 - Strategy Parameter Optimizationinvestment starts on 2020-01-02 00:00:00
ends on 2021-12-31 00:00:00
Total looped periods: 2.0 years.
total investment amount: ¥   100,000.00
Reference index type is 000300.SH at IDX
Total Benchmark rtn: 18.98% 
Average Yearly Benchmark rtn rate: 9.09%
statistical analysis of optimal strategy messages indicators: 
total return:        22.91% ± 9.01%
annual return:       10.80% ± 4.25%
alpha:               -0.015 ± 0.041
Beta:                1.000 ± 0.000
Sharp ratio:         0.857 ± 0.200
Info ratio:          0.022 ± 0.021
250 day volatility:  0.178 ± 0.007
other messages indicators are listed in below tableStrategy items Sell-outs Buy-ins ttl-fee     FV      ROI  Benchmark rtn  MDD 
0     (13, 153)       4.0      4.0   182.60 124,409.92 24.4%     19.0%     15.9%
1     (40, 161)       3.0      3.0   138.74 118,359.00 18.4%     19.0%     17.0%
2     (22, 173)       2.0      2.0    93.49 126,071.63 26.1%     19.0%     15.2%
3     (19, 183)       2.0      2.0    93.90 129,292.01 29.3%     19.0%     15.2%
4     (25, 117)       1.0      2.0    81.75 129,142.22 29.1%     19.0%     15.2%
5     (39, 153)       3.0      3.0   143.88 128,106.78 28.1%     19.0%     15.2%
6     (19, 185)       1.0      1.0    42.70 126,797.97 26.8%     19.0%     15.2%
7     (28, 177)       1.0      1.0    42.66 126,448.59 26.4%     19.0%     15.2%
8     (16, 165)       1.0      1.0    42.64 126,241.62 26.2%     19.0%     15.2%
9      (81, 82)      16.0     17.0   621.41  91,210.11 -8.8%     19.0%     20.3%
10    (37, 170)       2.0      2.0    93.28 126,103.26 26.1%     19.0%     15.2%
11    (24, 167)       2.0      2.0    92.94 123,720.72 23.7%     19.0%     15.2%
12    (35, 172)       1.0      1.0    42.86 128,377.96 28.4%     19.0%     15.2%
13    (18, 192)       2.0      2.0    84.91 133,297.53 33.3%     19.0%     15.2%
14    (33, 173)       1.0      1.0    42.97 129,519.55 29.5%     19.0%     15.2%
15    (39, 149)       1.0      1.0    42.53 125,231.92 25.2%     19.0%     15.2%
16    (27, 168)       1.0      1.0    42.78 127,628.65 27.6%     19.0%     15.2%
17     (17, 21)      19.0     20.0   886.06 110,117.03 10.1%     19.0%     16.4%
18     (59, 70)       5.0      6.0   276.46 128,273.29 28.3%     19.0%     20.1%
19    (20, 181)       1.0      1.0    42.78 127,628.65 27.6%     19.0%     15.2%
20    (11, 175)       2.0      2.0    82.10 125,706.51 25.7%     19.0%     15.2%
21    (28, 104)       2.0      3.0   131.99 125,189.61 25.2%     19.0%     15.2%
22    (10, 178)       3.0      3.0   132.35 127,100.60 27.1%     19.0%     15.2%
23    (23, 170)       2.0      2.0    93.52 126,385.21 26.4%     19.0%     15.2%
24    (11, 160)       4.0      4.0   179.66 124,113.04 24.1%     19.0%     15.4%
25    (25, 166)       2.0      2.0    93.23 126,539.86 26.5%     19.0%     15.2%
26     (80, 85)       8.0      9.0   342.77 100,764.28  0.8%     19.0%     18.9%
27    (10, 162)       7.0      7.0   291.80 113,699.46 13.7%     19.0%     16.2%
28     (61, 66)       9.0     10.0   428.25 117,497.81 17.5%     19.0%     22.6%
29     (19, 24)      17.0     18.0   774.83 114,216.87 14.2%     19.0%     15.6%===========END OF REPORT=============

參數優化結果以及各個指標的可視化圖表展示:

在這里插入圖片描述

優化之后我們可以檢驗一下找到的最佳參數:

# 從優化結果中取出一組參數試驗一下:
op.set_parameter(0, pars= (25, 166)  # 修改策略參數,改為短周期25天,長周期166天)# 重復一次測試,除策略參數意外,其他設置不變
res = qt.run(op, mode=1,  asset_pool='000300.SH',  invest_start='20110101',  visual=True  )
     ====================================|                                  ||       BACK TESTING RESULT        ||                                  |====================================qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 30.7ms
time consumption for operation back looping:  721.6msinvestment starts on      2011-01-04 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     10.1 years.-------------operation summary:------------Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    7        8      15   50.7%      0.0%     49.3%   Total operation fee:     ¥      348.02
total investment amount: ¥  100,000.00
final value:              ¥  217,727.40
Total return:                   117.73% 
Avg Yearly return:                8.02%
Skewness:                         -0.98
Kurtosis:                         14.70
Benchmark return:                69.85% 
Benchmark Yearly return:          5.39%------strategy loop_results indicators------ 
alpha:                             -inf
Beta:                              -inf
Sharp ratio:                       -inf
Info ratio:                       0.005
250 day volatility:               0.143
Max drawdown:                    31.58% peak / valley:        2015-06-08 / 2015-07-08recovered on:         2018-01-22===========END OF REPORT=============

優化后總回報率達到了117%,比優化前的參數好很多。

優化后的結果可視化圖表如下:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13322.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring初學入門(跟學筆記)

一、Spring概述 Spring是一款主流的Java EE輕量級開源框架。 Spring的核心模塊&#xff1a;IoC&#xff08;控制反轉&#xff0c;指把創建對象過程交給Spring管理 &#xff09;、AOP&#xff08;面向切面編程&#xff0c;在不修改源代碼的基礎上增強代碼功能&#xff09; 二、…

AI大語言模型在公共服務中的應用實例

隨著計算機技術的飛速發展&#xff0c;人工智能已經成為了當今科技領域的熱門話題。從早期的圖靈測試到現在的深度學習和神經網絡&#xff0c;人工智能已經取得了令人矚目的成就。特別是近年來&#xff0c;大數據、云計算、高性能計算等技術的發展為人工智能的研究提供了更加廣…

【Linux深度學習5.15(堡壘機)】

JumpServer堡壘機 使用堡壘機管理服務器 一. 環境 1.將jump壓縮包上傳至服務器并解壓2.安裝jump server./jumpserver install一直選擇默認就可以3.啟動jumpserver./jumpserver start4.測試windows : 瀏覽器訪問ipLinux : ssh -p2222 adminip5.登錄賬號 : admin 密碼 : admin…

多客陪玩系統源碼,線上游戲開黑陪玩,線下預約家政服務,語音陪聊,陪玩成品搭建,源碼交付,支持二開,陪玩系統開發

游戲陪玩系統主要的優勢就是&#xff0c;只要有手游和網游不斷推出&#xff0c;就有錢可賺。為什么呢?因為電競行業正處于上升發展階段&#xff0c;而且玩游戲對于現代人來說是很好的一種解壓方式&#xff0c;所以在市場和用戶需求方面都是有保證的。再加上現代人的社交壓力越…

使用 5 種有用的方法將音樂從 iTunes 傳輸到安卓手機

有許多在線音樂應用程序可供您選擇&#xff0c;但如果您想在 安卓手機上欣賞 iTunes 音樂&#xff0c;您需要了解步驟。今天的主題是如何將音樂從 iTunes 傳輸到 安卓設備上。雖然沒有適用于 Android 的 iTunes&#xff0c;但您可以在此處獲取 5 種有用的方法將 iTunes 音樂傳輸…

Nginx-04-Docker Nginx

Docker Nginx 實戰 HTTP 服務 Nginx 的最大作用&#xff0c;就是搭建一個 Web Server。 有了容器&#xff0c;只要一行命令&#xff0c;服務器就架設好了&#xff0c;完全不用配置。 運行官方 image $ docker container run \-d \-p 8080:80 \--rm \--name mynginx \nginx…

突破性能瓶頸: Java 22的性能提升之旅

Java 22帶來的性能改進&#xff0c;特別是在垃圾回收&#xff08;GC&#xff09;方面的優化&#xff0c;對于實時系統有著顯著的影響。實時系統要求在保證高響應性的同時&#xff0c;還需要保持較高的可靠性和穩定性。以下是一些關鍵點&#xff0c;展示了Java 22性能改進對于實…

Java進階-SpringCloud設計模式-工廠模式的設計與詳解

在Java和Spring Cloud的上下文中&#xff0c;雖然Spring Cloud本身并沒有直接實現傳統的設計模式&#xff08;如工廠模式&#xff09;&#xff0c;但理解設計模式如何與Spring框架結合使用是非常重要的。工廠模式是一種創建型設計模式&#xff0c;它提供了一種封裝對象創建過程…

網站開發之前端和后端開發的區別和聯系

隨著互聯網的發展&#xff0c;網站已經成為人們日常生活中不可或缺的一部分。而網站的開發技術也在不斷地發展和更新。在網站開發中&#xff0c;前端和后端是兩個重要的概念。本文將介紹前端和后端的區別與聯系。 一、前端和后端的定義 前端是指網站的用戶界面&#xff0c;包…

【學習筆記】C++每日一記[20240515]

簡述malloc/free與new/delete的區別 malloc/free是C語言提供的庫函數&#xff0c;通過函數調用訪問&#xff0c;需要傳遞參數并接收返回值&#xff1b;而new/delete是C的運算符&#xff0c;有自己的語法規則和運算方式。 malloc/free函數只能應用于基本類型&#xff0c;而new…

.NET使用Microsoft.IdentityModel.Tokens對SAML2.0登錄斷言校驗

如題。使用SAML單點登錄對IDP返回的Response斷言使用微軟提供的Microsoft.IdentityModel.Tokens對斷言&#xff08;Assertion&#xff09;進行校驗。 首先需要安裝Muget包&#xff0c;Microsoft.IdentityModel.Tokens和Microsoft.IdentityModel.Tokens.Saml。 簡易示例代碼如…

手機自養號測評系統:專業應對電商平臺風控,提升賬號穩定性

用手機做自養號測評它具備無限生成不同真實手機底層環境的能力&#xff0c;每個環境都相當于一臺全新的手機設備。通過先進的底層屏蔽技術&#xff0c;我們成功讓亞馬遜等平臺僅能檢測到我們預設的參數&#xff0c;如手機型號、內存、lMEI、序列號、MAC地址以及運營商信息等。每…

Stable Diffusion超詳細教程!本地部署 Stable Diffusion

前言 目前市面上比較權威&#xff0c;并能用于工作中的AI繪畫軟件其實就兩款&#xff1a; Midjourney&#xff08;MJ&#xff09;Stable-Diffusion&#xff08;SD&#xff09; MJ需要付費使用&#xff0c;而SD開源免費&#xff0c;但是上手難度和學習成本略大&#xff0c;并…

變色龍還是樹懶:揭示大型語言模型在知識沖突中的行為

你是知識變色龍還是樹懶?我今天在ICLR學到一個很有趣的術語,叫做證據順序(order of evidence)。 大模型RAG處理知識沖突的探討: 在檢索增強生成(Retrieval-Augmented Generation, RAG)的過程中,技術團隊會將檢索到的前幾名文檔作為證據,并提示(prompt)給大型語言模型(Large La…

電巢直播XR鑒賞|一塊綠幕,閃現進入異星戰爭的現場!

XR場景賞析 在浩瀚的宇宙深處&#xff0c;一顆神秘莫測的異星球映入我們的眼簾&#xff0c;這里&#xff0c;龍卷風與炮火交織&#xff0c;似乎永不停歇。 星球表面散布著無數的飛船殘骸&#xff0c;它們是某場宇宙大戰殘酷的遺存&#xff0c;無聲地訴說著過往的激烈沖突。地面…

LeetCode 3題:無重復字符的最長子串(原創)

【題目描述】 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長子串的長度。 示例 1: 輸入: s "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc"&#xff0c;所以其長度為 3。示例 2: 輸入: s "bbbbb" 輸出…

Dalsa windows10下安裝流程及部分問題分析

文章目錄 安裝及依賴庫說明切換驅動模式流程問題&#xff1a;通過Dalsa SDK開發后找不到相機&#xff1f;問題&#xff1a;找不到采集卡&#xff1f; 安裝及依賴庫說明 官網(https://www.teledynedalsa.com/en/support/downloads-center/)下載的最新文件&#xff08;20240515&…

Leetcode 404:左葉子之和

給定二叉樹的根節點 root &#xff0c;返回所有左葉子之和。 思路&#xff1a;遍歷樹&#xff0c;尋找左葉子節點&#xff1b; 如果判斷是左葉子節點&#xff0c;就更新sum。 public static int sumOfLeftLeaves(TreeNode root){int sum0;sumcompute(root,sum);return sum;}/…

Elasticsearch 8.1官網文檔梳理 - 十四、Query DSL(ES 查詢語法)

Query DSL Elasticsearch 提供了一種基于JSON 的查詢 DSL (Domain Specific Language) 來定義查詢。可以把查詢 DSL 看作是查詢的 AST&#xff08;Abstract Syntax Tree)&#xff0c;由兩種類型的子句組成: 葉子節點查詢&#xff1a; 葉子查詢子句在特定字段中查找特定值&…

Flutter 中的 DrawerHeader 小部件:全面指南

Flutter 中的 DrawerHeader 小部件&#xff1a;全面指南 在 Flutter 的 Drawer 組件中&#xff0c;DrawerHeader 是一個特殊的部件&#xff0c;用于在抽屜的頂部顯示&#xff0c;通常包含應用的標志、用戶信息、標題或其他重要的視覺元素。DrawerHeader 可以作為一個視覺分隔符…