一、策略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.進入策略編輯頁,左側就是策略代碼編輯區域,初始會默認給你提供代碼模板,全刪除後寫入咱們的代碼就行了。
六、兩種寫法用哪一個好?
寫法一是從前的老寫法,將逐步棄用,寫法二是聚寬系統改進後的新寫法,推薦使用寫法二。
一、編寫代碼
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指數,表明整個市場增加水平)
三、接下來,點擊運行回測,運行結束後就能夠看到更爲詳細的結果,包括下單記錄、持倉記錄等。
四、回測、編譯運行、運行回測都是什麼意思?
像剛剛那樣,用一段時間內的歷史的真實行情數據,來驗證一個肯定的交易策略在這段時間表現如何,這個過程叫回測。
運行回測就是是字面意思,讓計算機運行此次回測,運行後會告訴你策略在這段時間表現狀況,好比收益率、年化收益率、最大回撤、夏普比率等指標,並且通常也會包括下單記錄、持倉記錄等。
編譯運行其實也是讓計算機運行此次回測,不過相比於點擊運行回測,編譯運行的結果比運行回測要簡單,只有收益率等指標,所以也速度更快。因此,當還沒必要要獲得詳細的結果時,或只是想調試下策略的代碼,看是否無誤可運行時,編譯運行就比運行回測更方便。