自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Python編程借助現(xiàn)有量化平臺編寫股票交易策略和回測分析

開發(fā) 后端
本文基于Python,借助現(xiàn)有量化平臺編寫策略和回測分析,希望對大家的學(xué)習(xí)有所幫助。

[[404053]]

一、簡介

大家好,我是Snowball。今天給大家分享的內(nèi)容是基于Python編程,實現(xiàn)股票交易相關(guān)功能開發(fā),如果讀者對股票或金融衍生物交易不太了解,又比較感興趣的話可自行查詢相關(guān)資料。

接下來筆者會給大家介紹股票交易中的常見幾種交易策略實現(xiàn)思路和源碼編寫過程,如果大家聽說過量化交易這個詞語的話,對其中的交易策略或許了解過,大概意思就是在股票、加密貨幣或者金融衍生物在價格的波動過程中根據(jù)其交易策略進(jìn)行不斷的買入和賣出,不斷的套利,降低持倉陳本,來達(dá)到收益最大化。

常見的交易策略有很多種,例如趨勢型,網(wǎng)格型,剝頭皮,概率法則,高頻交易等,今天主要給大家介紹2種低頻的交易策略,高拋低吸網(wǎng)格交易策略、日內(nèi)做T策略。其他的交易策略較復(fù)雜,讀者可自行百度了解,筆者這里推薦一個量化交易網(wǎng)站,僅供參考,米筐量化:

https://www.ricequant.com/doc/quant/

二、需求分析&實現(xiàn)思路

每個交易日的股票都會上漲或者下跌,在這個過程中筆者們偶爾會想針對部分股票進(jìn)行股價的漲跌幅進(jìn)行監(jiān)控,或者自動進(jìn)行交易,在這個需求前提下,現(xiàn)有券商、股票分析軟件都會帶有機器人自動交易策略功能,大部分都需要收費或者部分策略不能滿足自己的需求,筆者這邊提供2種實現(xiàn)思路:

1、借助現(xiàn)有量化平臺編寫策略和回測分析,然后在券商軟件層面進(jìn)行策略執(zhí)行。

2、自己編寫功能代碼來監(jiān)控估價,對股價波動進(jìn)行特殊處理滿足特殊需求。

第一種實現(xiàn)成本較低,但功能受限于平臺;第二種實現(xiàn)成本毋庸置疑相對較高,但是邏輯可以自己控制。

三、借助現(xiàn)有量化平臺編寫策略和回測分析

這里利用米筐量化實現(xiàn)和分析自己的交易策略,需要先注冊個賬號,然后進(jìn)入到平臺-筆者的策略中進(jìn)行策略編寫,平臺的功能使用可以參考平臺文檔。

筆者這里貼出筆者自己寫的2種策略代碼,這個平臺只支持使用Python腳本編寫。

1)價差交易策略

平臺截圖:

部分代碼如下,詳細(xì)代碼可以自己手?jǐn)]實現(xiàn),也可以在文末進(jìn)行獲?。?/p>

  1. # 你選擇的證券的數(shù)據(jù)更新將會觸發(fā)此段邏輯,例如日或分鐘歷史數(shù)據(jù)切片或者是實時數(shù)據(jù)切片更新 
  2. def handle_bar(context, bar_dict): 
  3. ... 
  4.     if newPrice >= context.nextSellPrice: 
  5.         logger.info("執(zhí)行高拋交易,對應(yīng)價格:{}".format(newPrice)) 
  6.         amount = context.portfolio.positions[context.s1].quantity 
  7.         if amount >= context.tradeNumber: 
  8.             logger.info("執(zhí)行高拋交易,對應(yīng)數(shù)量:{}".format(context.tradeNumber)) 
  9.             order_shares(context.s1, -context.tradeNumber) 
  10.             plot("S", newPrice) 
  11.         elif amount >= 100: 
  12.             logger.info("執(zhí)行高拋交易,對應(yīng)數(shù)量:{}".format(amount)) 
  13.             order_shares(context.s1, -amount) 
  14.             plot("S", newPrice)  
  15.          
  16.         calc_next_trade_price(context,newPrice) 
  17.         obj = { 
  18.             "nextSellPrice":context.nextSellPrice, 
  19.             "nextBuyPrice":context.nextBuyPrice, 
  20.             "curTradePrice":context.curTradePrice 
  21.         } 
  22.         context.buyTradeList.append(obj) 
  23.  
  24.     if newPrice <= context.nextBuyPrice: 
  25.         logger.info("執(zhí)行低吸交易,對應(yīng)價格:{}".format(newPrice)) 
  26.         amount = int(context.portfolio.cash / newPrice / 100.0)  * 100 
  27.         if amount >= context.tradeNumber: 
  28.             logger.info("執(zhí)行低吸交易,對應(yīng)數(shù)量:{}".format(context.tradeNumber)) 
  29.             order_shares(context.s1, context.tradeNumber) 
  30.             plot("B", newPrice) 
  31.  
  32.         calc_next_trade_price(context,newPrice) 
  33.         
  34.         obj = { 
  35.             "nextSellPrice":context.nextSellPrice, 
  36.             "nextBuyPrice":context.nextBuyPrice, 
  37.             "curTradePrice":context.curTradePrice 
  38.         } 
  39.         context.sellTradeList.append(obj)  

選擇回測時間段,點擊右側(cè)平臺右側(cè)按鈕運行回測,結(jié)果頁面如下

從結(jié)果中可以看到,對招商銀行[600036]這只股票進(jìn)行價差網(wǎng)格交易,其參數(shù)設(shè)置在上漲8%的時候賣出,下跌8%的時候買入,最大連續(xù)下跌買入次數(shù)為3次。

回測收益:13.628%

回測年化收益:17.096%

比基準(zhǔn)年化收益-6%高出非常之大,這是在股價波動的過程中可以進(jìn)行執(zhí)行該策略來不斷的降低持倉成本。從交易詳情面板來看,這個策略可以通過參數(shù)調(diào)節(jié)交易頻率,在上漲下跌比率較大的情況下,其交易次數(shù)是能控制的相對較少,結(jié)果圖如下:

2)日內(nèi)做T策略

同樣的,只貼部分代碼

  1. # 你選擇的證券的數(shù)據(jù)更新將會觸發(fā)此段邏輯,例如日或分鐘歷史數(shù)據(jù)切片或者是實時數(shù)據(jù)切片更新 
  2. def handle_bar(context, bar_dict): 
  3. ... 
  4.     newPrice = bar_dict[context.s1].last 
  5.     if newPrice >= context.nextSellPrice: 
  6.         context.lastTradeType = 1 
  7.         logger.info("執(zhí)行高拋交易,對應(yīng)價格:{}".format(newPrice)) 
  8.         amount = context.portfolio.positions[context.s1].quantity 
  9.         #if amount - context.tradeNumber >= context.lockStockNumber: 
  10.         if amount - context.tradeNumber >= 0: 
  11.             logger.info("執(zhí)行高拋交易,對應(yīng)數(shù)量:{}".format(context.tradeNumber)) 
  12.             order_shares(context.s1, -context.tradeNumber) 
  13.             plot("S", newPrice) 
  14.         else
  15.             logger.info("股票數(shù)量不足,無法執(zhí)行高拋交易,對應(yīng)數(shù)量:{}".format(amount)) 
  16.             return     
  17.          
  18.         calc_next_trade_price(context,newPrice) 
  19.  
  20.         obj = { 
  21.             "nextSellPrice":context.nextSellPrice, 
  22.             "nextBuyPrice":context.nextBuyPrice, 
  23.             "curTradePrice":context.curTradePrice 
  24.         } 
  25.         context.buyTradeList.append(obj) 
  26.  
  27.     if newPrice <= context.nextBuyPrice: 
  28.         context.lastTradeType = 0 
  29.         logger.info("執(zhí)行低吸交易,對應(yīng)價格:{}".format(newPrice)) 
  30.         amount = int(context.portfolio.cash / newPrice / 100.0)  * 100 
  31.         if amount >= context.tradeNumber: 
  32.             logger.info("執(zhí)行低吸交易,對應(yīng)數(shù)量:{}".format(context.tradeNumber)) 
  33.             order_shares(context.s1, context.tradeNumber) 
  34.             plot("B", newPrice) 
  35.         else
  36.             logger.info("現(xiàn)金不足,無法執(zhí)行低吸交易,對應(yīng)數(shù)量:{}".format(amount)) 
  37.             return     
  38.  
  39.         calc_next_trade_price(context,newPrice) 
  40.         
  41.         obj = { 
  42.             "nextSellPrice":context.nextSellPrice, 
  43.             "nextBuyPrice":context.nextBuyPrice, 
  44.             "curTradePrice":context.curTradePrice 
  45.         } 
  46.         context.sellTradeList.append(obj) 

總體來說,代碼邏輯還是比較簡單,就是對價格的漲跌進(jìn)行處理,其參數(shù)設(shè)置在日內(nèi)上漲2%的時候賣出,下跌2%的時候買入,初始買入資金比例7成,鎖定最低倉位5成。然后運行回測,其結(jié)果如下

回測收益:5.501%

回測年化收益:6.839%

基準(zhǔn)收益:19.26%

可以看到日內(nèi)做T這種高頻交易,在長期來看收益可能并不高,適合在短期價格內(nèi)運行。

四、總結(jié)

我是Snowball。這個量化平臺在筆者的熟悉情況下,它可以很方便的回測你的交易策略,但是在股價盯盤上,或者自定義邏輯上支持的不是很完善,很多功能也是需要收費才能使用。本文基于Python,借助現(xiàn)有量化平臺編寫策略和回測分析,希望對大家的學(xué)習(xí)有所幫助。

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2024-12-23 07:20:00

2021-09-14 10:20:48

Python股票布林帶

2009-07-07 09:24:07

2022-09-19 11:41:39

數(shù)據(jù)分析Python數(shù)學(xué)模型

2021-08-26 10:20:32

Python均線交叉代碼

2023-10-30 10:54:01

2022-11-28 16:04:16

2023-06-29 13:43:30

2022-05-20 18:44:26

戴爾

2017-08-31 11:09:48

機器學(xué)習(xí)比特幣

2021-08-09 10:52:21

CCXT加密貨幣區(qū)塊鏈

2021-06-10 09:00:32

Java項目實戰(zhàn)Java編程

2019-08-01 12:46:19

2013-07-26 17:07:33

Foglight容量

2021-04-27 08:16:48

勒索軟件攻擊贖金

2009-02-19 09:49:21

AMD分拆制造業(yè)務(wù)

2016-11-28 15:03:06

Python數(shù)據(jù)可視化網(wǎng)絡(luò)分析

2025-03-31 08:15:00

馬斯克AI模型

2011-01-17 23:41:13

2020-01-11 17:00:07

DjangoPythonWeb API
點贊
收藏

51CTO技術(shù)棧公眾號