量化交易策略基本框架


一、搭建一個簡單的交易策略

1、策略

  • 先看一個非常簡單的交易策略:

      每天買100股的平安銀行。
    
  • 為了讓這個策略能讓計算機執行,首先,要使策略符合“初始化+周期循環”框架,像這樣:

      初始化:選定要交易的股票為平安銀行
      每天循環:買100股的平安銀行

 

2、什么是“初始化+周期循環”框架?

  • 為了將投資靈感高效地轉化成計算機可執行的量化策略,必須基於一種模式來寫,框架就是指這種模式。而此框架包含兩個部分即初始化與周期循環:

  • 初始化即指策略最開始運行前要做的事。比如,准備好要交易的股票。

  • 周期循環即指策略開始后,隨着時間一周期一周期地流逝時,每個周期要做的事。如例中,周期為天,周期循環的則是每天買100股的平安銀行。

  • 能幫助你理解這一框架的是,其實人本身日常做交易就是符合“初始化+周期循環”框架的,初始化就是已存在人腦的交易思想與知識,周期循環就是每天或每分鍾地查看行情、判斷、下單等行為。

 

3、如何把策略變成計算機可執行的程序?

  • 通過編程將策略寫成計算機可識別的代碼,具體說,我們這里是用python這門編程語言。

  • 另外可以用聚寬的向導式策略生成器,這種方法是不需編程的,但靈活性上難免是遠不如寫代碼的。

 

4、如何將策略寫成代碼?

“初始化+周期循環”框架代碼的兩種寫法:

1.寫法一

def initialize(context):
    這里是用來寫初始化代碼的地方,例子中就是選定要交易的股票為平安銀行

def handle_data(context,data):
    這里是用來寫周期循環代碼的地方,例子中就是買100股的平安銀行

 

2.寫法二

def initialize(context):
    run_daily(period,time='every_bar')
    這里是用來寫初始化代碼的地方,例子中就是選定要交易的股票為平安銀行

def period(context):
    這里是用來寫周期循環代碼的地方,例子中就是買100股的平安銀行

 

5、代碼應該往哪里寫

聚寬網址

1.來到聚寬網站后,通過導航欄-我的策略-策略列表,點擊新建策略

 

2.進入策略編輯頁,左側就是策略代碼編輯區域,初始會默認給你提供代碼模板,全刪除后寫入我們的代碼就好了。

 

6、兩種寫法用哪個好?

  • 寫法一是從前的老寫法,將逐步棄用,寫法二是聚寬系統改進后的新寫法,推薦使用寫法二

 

二、利用框架編寫完整的策略

1、編寫代碼

1.選定要交易的股票為平安銀行

g.security = '000001.XSHE'

 

2.買100股的平安銀行(市價單寫法):

order(g.security, 100)

 

3.以寫法二為例把剩下的代碼補上后,完整代碼為

# 導入函數庫
from jqdata import *

# 初始化函數,設定基准等等
def initialize(context):
    run_daily(period,time='every_bar')
    # 選定要交易的股票為平安銀行
    g.security = '000001.XSHE'

def period(context):
    # 買100股的平安銀行(市價單寫法)
    order(g.security, 100)

 

 2、設置好初始資金與起止時間

 比如初始資金100000元,起止時間20160601-20161231),頻率設置成天。點擊編譯運行,運行結束后就可以看到結果

可以看到,若你20160601有初始資金100000元,每個交易日嘗試買100股的平安銀行,到20161231,你的收益曲線將如圖中藍線般增長。圖中紅線是基准收益(默認是滬深300指數,代表整個市場增長水平)

 

3、接下來,點擊運行回測,運行結束后就可以看到更為詳細的結果,包括下單記錄、持倉記錄等。

 

4、回測、編譯運行、運行回測都是什么意思?

  • 像剛剛那樣,用一段時間內的歷史的真實行情數據,來驗證一個確定的交易策略在這段時間表現如何,這個過程叫回測

  • 運行回測就是是字面意思,讓計算機運行這次回測,運行后會告訴你策略在這段時間表現情況,比如收益率、年化收益率、最大回撤、夏普比率等指標,而且一般也會包括下單記錄、持倉記錄等。

  • 編譯運行其實也是讓計算機運行這次回測,不過相比於點擊運行回測,編譯運行的結果比運行回測要簡單,只有收益率等指標,因此也速度更快。所以,當還不必要得到詳細的結果時,或只是想調試下策略的代碼,看是否無誤可運行時,編譯運行就比運行回測更方便。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM