利用遺傳演算法庫DEAP優化交易策略
首先,要感謝VNPY.com論壇 keke分享 海龜策略深入研究-策略回測系列-17 基於遺傳演算法的訊號優化 一文
經過一段時間學習和使用,深感這個是用於交易策略引數優化的優秀方法。這個說一些理解。
-
優化的物件就是這樣一個list陣列 [16, 8, 24, 1, 13, 8, 1] ,其實就是交易策略的引數,比如cciWindows,BollDev。類似於DNA。
-
首先要生成這樣一個陣列,這裡keke做了一個方法,具體就是隨機生成一個陣列,同時確保每個數在一個範圍內。
這裡我加了一個陣列,針對K線的時間,這樣就不會出現7分鐘k線這個比較奇怪的情況。
-
timerange = [2,3,5,10,15,20] bartime = random.choice(timerange
-
就是設定進化選擇,這裡就是呼叫vnpy回測方法,用回測的指標,比如年化收益,sharpe ratio,收益虧損比等。這裡建議加入一個清理的,避免多執行緒問題。我是使用按此統計,而不是按日統計;感覺比較準確 engine.clearBacktestingResult()
-
然後就是對於這一大堆不同策略陣列群體進行遺傳進化,包括按照概率任意兩個list陣列交叉包含的數,生成新的list,類似於繁殖。同時也有一定概率
一個list數字改變;還有就是有一個名人堂(HallofFame)機制,選擇幾個最好的陣列,一直保持在群體裡面,其實這些名人堂存在價值變成了後面的參照組。
這裡原文是用DEAP原生方法mutUniformInt,在(6,40)直接隨機生成一個數字替代原來的。但是考慮之前建立時候,每個是有個範圍,可能適合抵押給數字的範圍並不適合最後一個,比如k線時間。這裡我做了個自己突變方法替代原來的。
-
tools.mutUniformInt,low = 4,up = 40,indpb=0.6)
-
def mutArrayGroup(individual,parameterlist, indpb): size = len(individual) parameterlist = parameterlist() for i in xrange(size): if random.random() < indpb: individual[i] = parameterlist[i] return individual, toolbox.register("mutate", mutArrayGroup, parameterlist = parameter_generate, indpb=0.6
這樣跑下來就差不多了,如果想要多執行緒請在toolbox初始化後加入下面程式碼
import multiprocessing pool = multiprocessing.Pool(processes=(multiprocessing.cpu_count()-2)) toolbox.register("map", pool.map)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2640136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遺傳演算法庫DEAP的示例程式碼的學習和分析演算法
- 【智慧優化演算法】遺傳演算法的精英選擇策略、期望選擇策略優化演算法
- 優化演算法庫DEAP的粒子群優化演算法(PSO)示例程式碼分析優化演算法
- 寫了一個類GeneticOptimizeStrategy,針對VNPY策略遺傳演算法優化演算法優化
- 【多目標優化演算法】非支配的精英策略遺傳演算法:NSGA-II優化演算法
- Unity中利用遺傳演算法訓練MLPUnity演算法
- 利用粒子群優化演算法(PSO)來優化vnpy的量化策略引數優化演算法
- 利用遺傳學演算法求解工作分配問題演算法
- 智慧優化演算法——python實現免疫遺傳演算法的影像擬合優化演算法Python
- 遺傳演算法演算法
- 從遺傳演算法到OpenAI新方向:進化策略工作機制全解演算法OpenAI
- 利用策略模式結合alibaba/alpha框架優化你的圖片上傳功能模式框架優化
- 如何利用策略模式優化表單驗證模式優化
- 利用策略模式優化過多 if else 程式碼模式優化
- 使用MPI並行化遺傳演算法框架GAFT並行演算法框架
- 遺傳演算法(一):Basic GA演算法
- 遺傳演算法的基本框架演算法框架
- python遺傳演算法(詳解)Python演算法
- 遺傳演算法解決函式最佳化問題演算法函式
- MATLAB實戰系列(十一)-多種群遺傳演算法的函式優化演算法(附MATLAB程式碼)Matlab演算法函式優化
- 在matlab中利用遺傳演算法(GA)求取函式全域性最大值Matlab演算法函式
- Python遺傳演算法工具箱的使用(一)求解帶約束的單目標優化Python演算法優化
- 如何學習python遺傳演算法?Python演算法
- 人工智慧 (13) 遺傳演算法人工智慧演算法
- 10分鐘搞懂遺傳演算法演算法
- 元啟發式演算法庫 MEALPY 初體驗-遺傳演算法為例演算法
- 透過MATLAB分別對比二進位制編碼遺傳最佳化演算法和實數編碼遺傳最佳化演算法Matlab演算法
- 遺傳演算法詳解與實驗演算法
- 遺傳演算法解決TSP問題演算法
- 遺傳演算法組卷使用心得演算法
- 粒子群演算法和遺傳演算法的比較演算法
- 遺傳演算法求解TSP問題(python版)演算法Python
- 用遺傳演算法進行特徵選擇演算法特徵
- 多目標遺傳演算法NSGA-Ⅱ與其Python實現多目標投資組合優化問題演算法Python優化
- 遺傳演算法解決旅行商問題(TSP)演算法
- vue載入優化策略Vue優化
- Python遺傳演算法框架使用例項(二)多目標優化問題Geatpy for Python與Matlab的對比學習Python演算法框架優化Matlab
- btc交易策略