Python標準庫中bisect模塊的bisect_right()函數在網格交易中的應用

? ? ? 本文將深入探討Python標準庫中bisect模塊的bisect_right()函數在網格交易中的具體應用。

bisect模塊

bisect模塊是Python標準庫中的一個模塊,提供了對有序列表的插入和搜索操作的支持。它基于二分查找算法,可以高效地在有序列表中查找或插入元素,并保持列表的有序性

bisect庫提供了兩個主要的函數:bisect_left()bisect_right(),用于查找元素在有序序列中的插入點。

bisect_right()?函數

bisect_right()?是?bisect?模塊中的一個關鍵函數,它基于二分查找算法實現,用于在有序序列中快速找到目標值的插入位置,并保持列表的有序性。

函數原型

bisect.bisect_right(a, x, lo=0, hi=len(a))
  • 參數

    • a?: 已排序的列表(必須升序)

    • x?: 要插入的目標值

    • lo?和?hi?: 可選參數,指定查找范圍(左閉右開區間)

  • 返回值

    • 返回一個插入位置索引?i,使得所有?a[:i]?中的元素?<= x,所有?a[i:]?中的元素?> x

基本邏輯

假設有一個有序列表?[10, 20, 30, 40, 50],當查找不同目標值時:

目標值?x返回值說明(插入后的列表)
50[5, 10, 20, 30, 40, 50]
252[10, 20, 25, 30, 40, 50]
303[10, 20, 30, 30, 40, 50]
605[10, 20, 30, 40, 50, 60]

與?bisect_left()?的區別

  • bisect_right():當存在重復元素時,返回最右側的插入位置。

  • bisect_left():當存在重復元素時,返回最左側的插入位置。

舉例

arr = [10, 20, 20, 30, 40]
bisect.bisect_left(arr, 20)   # 返回 1(第一個20的位置)
bisect.bisect_right(arr, 20)  # 返回 3(最后一個20之后的位置)

在網格交易中的應用

由于bisect模塊是基于二分查找算法,因此其具有極高的性能尤其適合高頻調用,如實時交易場景,且無需預處理或額外存儲結構。

在網格交易策略中,bisect_left()bisect_right()常被用來確定當前價格在預設網格中的位置。本文以bisect_right()為例來說明其應用方法。

網格定位邏輯

假設生成的網格價格為?[10.0, 12.5, 15.0, 17.5, 20.0](以線性網格為例),使用?bisect_right()?判斷當前價格所在的網格區間:

由于bisect_right()函數是返回一個插入位置索引,即如果插入的話,該位置的索引。因此,需對其返回值作減1修正處理,以正確尋找擬插入的值(當前價格)所處的正確的網格區間。

當前價格bisect_right()返回值修正后的索引 (current_index)對應網格區間
9.000低于最低價,歸為第0格
12.521屬于第1格(12.5)
14.021在12.5~15.0之間
17.543屬于第3格(17.5)
21.054高于最高價,歸為第4格

關鍵處理方法

在實際應用過程中,需將?bisect_right?的結果轉換為左閉右閉區間的網格索引;同時,需對邊界進行處理,確保價格超出網格范圍時,索引仍然有效

pos = bisect.bisect_right(grid_levels, current_price) 
current_index = pos - 1 if pos > 0 else 0 
# 防止越界
current_index = min(current_index, len(grid_levels)-1) 

具體用法

網格交易觸發條件

  • 價格上漲:當?current_index > last_grid_index?時,賣出。

  • 價格下跌:當?current_index < last_grid_index?時,買入。

示例分析

假設上次網格索引last_grid_index?為?2(對應價格15.0):

  • 當前價格17.5bisect_right?返回4 →?current_index=3?→ 觸發賣出。

  • 當前價格12.5bisect_right?返回2 →?current_index=1?→ 觸發買入。

擴展用法

動態調整網格

若網格價格需要動態變化(如跟蹤波動率),可定期重新生成?grid_levels?并重新計算索引。

多維網格

結合其他維度(如交易量、波動率),可構建更復雜的網格策略,但核心定位邏輯仍依賴?bisect_right()函數

實現倍數委托

如何實現網格交易的倍數委托,請參見《網格交易中倍數委托的實現方法》。

碼字不易,原創更不易,如您覺得本文對您有幫助,麻煩動動您富貴的小手,點贊、收藏、關注、訂閱!!!

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

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

相關文章

Excel(函數篇):IF函數、FREQUNCY函數、截取函數、文本處理函數、日期函數、常用函數詳解

目錄 IF函數等于判斷區間判斷與AND函數、OR函數一同使用IFNA函數和IFERROR函數 FREQUNCY函數、分斷統計LEFT、RIGHT、MID截取函數FIND函數、LEN函數SUBSTITUTE函數ASC函數、WIDECHAR函數實戰&#xff1a;如何獲取到表中所有工作簿名稱文本處理函數TEXT函數TEXTJOIN函數 日期函數…

生成PDF文件:從html2canvas和jsPdf渲染到Puppeteer矢量圖

剛剛實現而已&#xff1a;第一次明白&#xff0c;雙擊或file:///打開html文件&#xff0c;居然和從localhost:3000打開同一個html文件有本質的區別。 字體居然還能以Base64代碼嵌入到網頁&#xff0c;只是太大太笨。 需要安裝node.js&#xff0c;npm安裝更多依賴&#xff1a;…

Git 分支刪除操作指南(含本地與遠程)

&#x1f680; Git 分支刪除操作指南&#xff08;含本地與遠程&#xff09; 在多人協作的開發過程中&#xff0c;定期清理已合并的臨時分支&#xff08;如 feature/*、bugfix/*、hotfix/* 等&#xff09;可以保持倉庫整潔&#xff0c;避免混亂。 &#x1f4cc; 分支命名規范回…

Qt中打開windows的cmd窗口并顯示

在windows上&#xff0c;用Qt的GUI程序打開另一個程序&#xff0c;使用QProcess即可&#xff0c;并且被打開的程序通常也會顯示出來&#xff0c;但是如果想要打開dos窗口并顯示&#xff0c;并執行其中的命令或者批處理&#xff0c;則需要使用QProcess提供的windows特有的函數QP…

Modbus TCP到RTU:輕松轉換指南!

Modbus TCP 到 RTU&#xff1a;輕松轉換指南&#xff01; 在現代工業自動化領域&#xff0c;Modbus TCP和Modbus RTU兩種通信協議因其高效、穩定的特點被廣泛應用。然而&#xff0c;隨著技術的發展和設備升級的需求&#xff0c;經常會遇到需要將這兩種協議進行互相轉換的場景。…

微信小程序訂閱消息發送消息,點擊消息進入小程序頁面

1、在小程序官網訂閱消息選用或創建消息模板獲取模板ID可多個 如圖&#xff1a; 2、微信小程序前端頁面發送請求訂閱權限 請求模板id的權限可以是一個可以是多個&#xff0c;用戶同意訂閱&#xff0c;獲取code傳遞給后端——后端拿到code生成唯一的openid用于發送訂閱消息 注…

卷積神經網絡 - 卷積層

卷積神經網絡一般由卷積層、匯聚層和全連接層構成&#xff0c;本文我們來學習卷積層。 卷積層&#xff08;Convolutional Layer&#xff09;是卷積神經網絡&#xff08;CNN&#xff09;的核心組件&#xff0c;專門用于處理具有網格結構的數據&#xff08;如圖像、音頻、時間序…

Vue3全局化配置(ConfigProvider)

效果如下圖&#xff1a; 在線預覽 APIs ConfigProvider 參數說明類型默認值theme主題對象Theme{}abstractboolean是否不存在 DOM 包裹元素truetagstringConfigProvider 被渲染成的元素&#xff0c;abstract 為 true 時有效‘div’ Theme Type 名稱說明類型默認值common?全…

LabVIEW煙氣速度場實時監測

本項目針對燃煤電站煙氣流速實時監測需求&#xff0c;探討了靜電傳感器結構與速度場超分辨率重建方法&#xff0c;結合LabVIEW多板卡同步采集與實時處理技術&#xff0c;開發出一個高效的煙氣速度場實時監測系統。該系統能夠在高溫、高塵的復雜工況下穩定運行&#xff0c;提供高…

若依excel工具類導出excel模板數據帶下拉映射

導出模板代碼&#xff0c;原理是combo屬性 傳遞一個數組 里面是label下拉數組。 Overridepublic void downloadTemplate(HttpServletResponse response) {ExcelUtil<ThMachineryManageExcel> util new ExcelUtil<>(ThMachineryManageExcel.class);List<SysDist…

3.8 Spring Boot監控:Actuator+Prometheus+Grafana可視化

在Spring Boot應用中&#xff0c;通過整合Actuator、Prometheus和Grafana可以構建完整的監控體系&#xff0c;實現指標采集、存儲和可視化。以下是具體實現步驟&#xff1a; 一、Spring Boot Actuator 配置 作用&#xff1a;暴露應用健康指標、性能數據等監控端點。 1. 添加依…

啟幕數據結構算法雅航新章,穿梭C++夢幻領域的探索之旅——二叉樹序列構造探秘——堆的奧義與實現詩篇

人無完人&#xff0c;持之以恒&#xff0c;方能見真我&#xff01;&#xff01;&#xff01; 共同進步&#xff01;&#xff01; 文章目錄 一、堆的定義與結構二、堆的實現1.堆的初始化和銷毀堆的初始化堆的銷毀 2.向上調整算法和入堆向上調整算法入堆 3.向下調整算法和出堆頂數…

“Failed to Load SteamUI.dll” 錯誤詳解:全面解析與高效解決方案,助你快速修復 Steam 客戶端問題

在使用 Steam 客戶端時&#xff0c;你是否遇到過 failed to load steamui.dll 錯誤&#xff1f;這個令人頭疼的問題可能導致 Steam 無法正常啟動&#xff0c;影響游戲體驗。Failed to load steamui.dll 錯誤通常與文件損壞、系統配置或軟件沖突有關&#xff0c;但無需擔心&…

STM32 DAC詳解:從原理到實戰輸出正弦波

目錄 一、DAC基礎原理1.1 DAC的作用與特性1.2 DAC功能框圖解析 二、DAC配置步驟2.1 硬件配置2.2 初始化結構體詳解 三、DAC數據輸出與波形生成3.1 數據格式與電壓計算3.2 正弦波生成實戰3.2.1 生成正弦波數組3.2.2 配置DMA傳輸3.2.3 定時器觸發配置 四、常見問題與優化建議4.1 …

CNN 稠密任務經典結構

FCN UNet FPN FCNUNETFPNpadding無&#xff08;逐漸變小&#xff09; 有&#xff08;左右對稱&#xff09;上采樣 雙線性雙線性 最近鄰跳躍鏈接 相加 Cropcat 1x1卷積相加 三個網絡差不多&#xff0c;UNet名字最直觀&#xff0c;后續流傳…

AI學習第二天--監督學習 半監督學習 無監督學習

目錄 1. 監督學習&#xff08;Supervised Learning&#xff09; 比喻&#xff1a; 技術細節&#xff1a; 形象例子&#xff1a; 2. 無監督學習&#xff08;Unsupervised Learning&#xff09; 比喻&#xff1a; 技術細節&#xff1a; 形象例子&#xff1a; 3. 半監督學…

Elasticsearch:為推理端點配置分塊設置

推理端點對一次可處理的文本量有限&#xff0c;具體取決于模型的輸入容量。分塊&#xff08;Chunking&#xff09; 是指將輸入文本拆分成符合這些限制的小塊的過程&#xff0c;在將文檔攝取到 semantic_text 字段時會進行分塊。分塊不僅有助于保持輸入文本在可處理范圍內&#…

Unity打包Android平臺調用sherpa-onnx

https://github.com/xue-fei/sherpa-onnx-unity 最初測試了PC的Win和Linux平臺&#xff0c;直接從nuget緩存包中拷貝相關文件&#xff0c;按示例寫了語音轉文字和文字轉語音的測試代碼&#xff0c;功能都正常。 然后是Android端&#xff0c;看了示例發現有編譯好的jni.so之類的…

傳統會議室接入神旗視訊-2 Android會議室大屏設備 (Maxhub, Newline, TCL等)

隨著企業對視頻會議安全性、穩定性和統一管理的需求日益增長&#xff0c;私有化視頻會議系統憑借其全平臺兼容性、高安全性部署和智能化會控能力&#xff0c;成為政企客戶的核心選擇。Android會議室大屏設備&#xff08;Maxhub, Newline, TCL等&#xff09;作為國內主流智能會議…

個人blog系統 前后端分離 前端js后端go

系統設計&#xff1a; 1.使用語言&#xff1a;前端使用vue&#xff0c;并使用axios向后端發送數據。后端使用的是go的gin框架&#xff0c;并使用grom連接數據庫實現數據存儲讀取。 2.設計結構&#xff1a; 最終展示&#xff1a;僅展示添加模塊&#xff0c;其他模塊基本相似 前…