量化交易策略基本框架

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

一、策略python

  • 先看一個很是簡單的交易策略:編程

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

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

 

二、什麼是「初始化+週期循環」框架?編程語言

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

  • 初始化即指策略最開始運行前要作的事。好比,準備好要交易的股票。網站

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

  • 能幫助你理解這一框架的是,其實人自己平常作交易就是符合「初始化+週期循環」框架的,初始化就是已存在人腦的交易思想與知識,週期循環就是天天或每分鐘地查看行情、判斷、下單等行爲。調試

 

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

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

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

 

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

「初始化+週期循環」框架代碼的兩種寫法:

1.寫法一

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

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

 

2.寫法二

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

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

 

五、代碼應該往哪裏寫

聚寬網址

1.來到聚寬網站後,經過導航欄-個人策略-策略列表,點擊新建策略

 

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

 

六、兩種寫法用哪一個好?

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

 

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

一、編寫代碼

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)

 

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

 好比初始資金100000元,起止時間20160601-20161231),頻率設置整天。點擊編譯運行,運行結束後就能夠看到結果

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

 

三、接下來,點擊運行回測,運行結束後就能夠看到更爲詳細的結果,包括下單記錄、持倉記錄等。

 

四、回測、編譯運行、運行回測都是什麼意思?

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

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

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

相關文章
相關標籤/搜索