十行代碼量化框架

對于大部分人來說笨忌,量化交易是非常陌生與神秘的。本篇文章將帶你入門量化交易俱病,全文閱讀約10分鐘官疲。

本篇文章內(nèi)容摘要:

1.理解量化策略的基本框架

2.十行代碼完成雙均線策略編寫亮隙。

3.開啟策略模擬交易途凫,實(shí)時(shí)接收交易信號(hào)

1.理解量化策略的基本框架

通常情況下溢吻,完整的量化交易策略至少需要確定兩件事:

A.交易標(biāo)的维费,即買什么

B.確定交易時(shí)機(jī)促王,即怎么買賣犀盟。

讓我們來設(shè)計(jì)一個(gè)簡單完整的雙均線量化交易策略:

策略交易標(biāo)的:通策醫(yī)療;

策略交易時(shí)機(jī):5日均線與20日均線金叉時(shí)蝇狼,買入阅畴;5日均線與20日均線死叉時(shí),賣出迅耘。

2.十行代碼完成雙均線策略

第一步:登錄MindGo量化交易平臺(tái)贱枣,導(dǎo)航欄上點(diǎn)擊“我的策略”—“策略研究”,點(diǎn)擊右上角藍(lán)色按鈕“+新建策略”颤专,再點(diǎn)擊已創(chuàng)建的策略進(jìn)入策略編譯器頁面纽哥,如下:


第二步:理解量化交易策略框架對應(yīng)的代碼框架。

def init(context):

? ? #初始化函數(shù):確定交易標(biāo)的

def handle_bar(context, bar_dict):

? ? #定時(shí)運(yùn)行函數(shù):確定交易時(shí)機(jī)

框架理解

1.def init(context)與def handle_bar(context, bar_dict)是兩個(gè)函數(shù)栖秕,函數(shù)格式固定為:def 函數(shù)名(參數(shù))春塌,其中def后面帶空格鍵,函數(shù)末尾必須帶冒號(hào)簇捍。

2.def init(context)函數(shù)是初始化函數(shù)只壳,只運(yùn)行一次,確定初始化條件垦写;def handle_bar(context, bar_dict)函數(shù)是定時(shí)運(yùn)行函數(shù)吕世,平臺(tái)默認(rèn)該函數(shù)定時(shí)運(yùn)行彰触。日級(jí)策略梯投,每日9:30;分鐘級(jí)策略,交易期間內(nèi)的每分鐘分蓖。

3.“#”后面為注釋內(nèi)容尔艇,用于注釋代碼,便于編寫和閱讀么鹤。

第三步:確定交易標(biāo)的:g.stock = '600763.SH'

溫馨提示

1.g是全局對象终娃,該對象用于存放自定義參數(shù)。這里我們需要確定交易標(biāo)的蒸甜,即:g.stock = '600763.SH'

def init(context):

? ? g.stock = '600763.SH'

def handle_bar(context, bar_dict):

? ? #定時(shí)運(yùn)行函數(shù):確定交易時(shí)機(jī)

第四步:確定交易時(shí)機(jī)棠耕,即為:5日均線與20日均線金叉時(shí),買入柠新;5日均線與20日均線死叉時(shí)窍荧,賣出。   從交易時(shí)機(jī)出發(fā)恨憎,我們需要計(jì)算交易標(biāo)的5日和20日均線蕊退,那么5、20日均線需要用歷史行情數(shù)據(jù)的收盤價(jià)來計(jì)算憔恳。

整個(gè)流程即:獲取歷史行情20日的收盤價(jià)數(shù)據(jù)———計(jì)算5瓤荔、20日均線———判斷5、20日均線钥组,進(jìn)行買賣交易输硝。

A.獲取歷史行情20日的收盤價(jià)數(shù)據(jù)

1.找到函數(shù)歷史數(shù)據(jù)函數(shù):history()

2.填寫函數(shù)參數(shù),獲取到數(shù)據(jù)

i.交易標(biāo)的程梦,即:獲取那個(gè)股票的數(shù)據(jù)腔丧。

ii.數(shù)據(jù)字段:['close']收盤價(jià),即:獲取那個(gè)數(shù)據(jù)作烟。

iii.輸入歷史長度愉粤,即:獲取多長時(shí)間的數(shù)據(jù)。

iv.獲取數(shù)據(jù)的時(shí)間步長拿撩,即:獲取日線級(jí)步長數(shù)據(jù)衣厘。

v.最終結(jié)果即為:history(g.stock, ['close'] , 20, '1d')

3.將獲取到的數(shù)據(jù)儲(chǔ)存,便于計(jì)算压恒,即:price = history(g.stock, ['close'] , 20, '1d')

#獲取證券過去20日的收盤價(jià)數(shù)據(jù)? ?

price = history(g.stock, ['close'] , 20, '1d')

B.計(jì)算5影暴、20日均線

1.獲取數(shù)據(jù)值,即:price.values探赫。values可以直接獲取儲(chǔ)存中的數(shù)據(jù)值型宙,格式為price.values。溫馨提示:price是我們剛才獲取的數(shù)據(jù)伦吠,但是數(shù)據(jù)有股票妆兑、時(shí)間魂拦、數(shù)值,我們直接用values獲取值用于計(jì)算即可搁嗓。

2.選取數(shù)據(jù)長度芯勘,即:price.values[-5:]。[]用于取值腺逛,我們之前獲取20個(gè)數(shù)據(jù)荷愕,但5日均線只需要過去5日的收盤價(jià),因此[-5:]即為獲取倒數(shù)第五個(gè)到最后一個(gè)數(shù)據(jù)棍矛。溫馨提示:

i.[:]是獲取所有數(shù)據(jù)安疗。

ii.[:x]是從第一個(gè)獲取到第x個(gè),不包括第x個(gè)够委。

iii.[x:y]是從第x個(gè)到第y個(gè)茂契,包括x,但不包括y慨绳。

iv.[-x:]獲取倒數(shù)第x個(gè)到最后一個(gè)數(shù)據(jù)掉冶。

3.計(jì)算均值,即price.values[-5:].mean()脐雪,賦值給MA5厌小。同理MA20=price.values.mean(),即對所有值取平均战秋,相當(dāng)于MA20=close.values[:].mean()璧亚。

#計(jì)算5日均線和20日均線

MA20 = price.values.mean()

MA5 = price.values[-5:].mean()

C.判斷5、20日均線脂信,進(jìn)行買賣交易

1.if判斷條件癣蟋,即為 if MA5 > MA20:。溫馨提示if判斷函數(shù)的格式為if +添加判斷+:,其中if后面必須帶一個(gè)空格鍵狰闪,其次末尾必須帶冒號(hào)疯搅。

2.當(dāng)MA5大于MA20時(shí),下單買入交易

i.當(dāng)觸發(fā)MA5大于MA20時(shí)埋泵,我們需要買入股票幔欧,這時(shí)候我們可以使用order_target_percent下單函數(shù),該函數(shù)以目標(biāo)市值百分比下單丽声。

ii.輸入下單函數(shù)的參數(shù)礁蔗,order_target_percent函數(shù)需要輸入兩個(gè)參數(shù):

1.下單的股票,即為g.stock雁社,我們之前將交易標(biāo)的傳入進(jìn)去浴井,可以直接用。

2.目標(biāo)市值百分比霉撵,滿倉即為1

#如果5日大于20日均線磺浙,則滿倉買入

if MA5 > MA20:

? ? order_target_percent(g.stock,1)

3.當(dāng)MA5小于MA20時(shí)洪囤,下單賣出交易

i.當(dāng)觸發(fā)MA5小于MA20時(shí),我們需要賣出股票屠缭,這時(shí)候我們可以使用order_target下單函數(shù)箍鼓,該函數(shù)以目標(biāo)股數(shù)下單崭参。

ii.輸入下單函數(shù)的參數(shù)呵曹,order_target函數(shù)需要輸入兩個(gè)參數(shù):

1.下單的股票,即為g.stock何暮,我們之前將交易標(biāo)的傳入進(jìn)去奄喂,可以直接用。

2.下單的目標(biāo)股數(shù)海洼,即0跨新,因?yàn)槲覀冃枰獙⒊謧}股票賣出,賣到0股為止坏逢。

#如果5日小于20日均線域帐,則清倉賣出

if MA20 > MA5:

? ? order_target(g.stock,0)

最終結(jié)果

# 初始化函數(shù)

def init(context):

? ? #設(shè)置需要交易的股票

? ? g.stock = '600763.SH'

#每日運(yùn)行函數(shù)

def handle_bar(context, bar_dict):

? ? #獲取證券過去20日的收盤價(jià)數(shù)據(jù)? ?

? ? price = history(g.stock, ['close'] , 20, '1d')

? ? #計(jì)算5日均線和20日均線

? ? MA20 = price.values.mean()

? ? MA5 = price.values[-5:].mean()

? ? #如果5日大于20日均線,則滿倉買入

? ? if MA5 > MA20:

? ? ? ? order_target_percent(g.stock,1)

? ? #如果5日小于20日均線是整,則清倉賣出

? ? if MA20 > MA5:

? ? ? ? order_target(g.stock,0)

第五步 回測量化交易策略   通過以上4步肖揣,我們已經(jīng)完成了量化交易策略編寫,那么接下來我們需要進(jìn)行量化交易策略回測浮入。

A.首先龙优,我們嘗試去跑通整個(gè)歷史行情,排查代碼錯(cuò)誤事秀。

右上角設(shè)置回測歷史長度彤断,設(shè)置資金,設(shè)置交易頻率易迹。點(diǎn)擊左上角“編譯運(yùn)行”按鈕宰衙,右邊出現(xiàn)量化交易策略在歷史行情中的表現(xiàn)情況


B.當(dāng)量化交易策略能跑通整個(gè)歷史行情后,我們可以確定該代碼正確無誤睹欲,隨后點(diǎn)擊右上角藍(lán)色按鈕“進(jìn)行回測”菩浙。頁面跳轉(zhuǎn)至回測頁面,如下:


3.開啟策略模擬交易句伶,實(shí)時(shí)接收交易信號(hào)

完成策略回測后劲蜻,可在右上角點(diǎn)擊“開啟仿真交易”,即可綁定模擬交易.


在模擬交易頁面右側(cè)考余,可開關(guān)信號(hào)推送先嬉,開啟狀態(tài)下,策略交易信號(hào)通過同花順APP實(shí)時(shí)推送楚堤。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疫蔓,一起剝皮案震驚了整個(gè)濱河市含懊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衅胀,老刑警劉巖岔乔,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滚躯,居然都是意外死亡雏门,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門掸掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茁影,“玉大人,你說我怎么就攤上這事丧凤∧枷校” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵愿待,是天一觀的道長浩螺。 經(jīng)常有香客問我,道長仍侥,這世上最難降的妖魔是什么要出? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮访圃,結(jié)果婚禮上厨幻,老公的妹妹穿的比我還像新娘。我一直安慰自己腿时,他們只是感情好况脆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著批糟,像睡著了一般格了。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徽鼎,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天盛末,我揣著相機(jī)與錄音,去河邊找鬼否淤。 笑死悄但,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的石抡。 我是一名探鬼主播檐嚣,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啰扛!你這毒婦竟也來了嚎京?” 一聲冷哼從身側(cè)響起嗡贺,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鞍帝,沒想到半個(gè)月后诫睬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帕涌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年摄凡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宵膨。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡架谎,死狀恐怖炸宵,靈堂內(nèi)的尸體忽然破棺而出辟躏,到底是詐尸還是另有隱情,我是刑警寧澤土全,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布捎琐,位于F島的核電站,受9級(jí)特大地震影響裹匙,放射性物質(zhì)發(fā)生泄漏瑞凑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一概页、第九天 我趴在偏房一處隱蔽的房頂上張望籽御。 院中可真熱鬧,春花似錦惰匙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耻陕。三九已至,卻和暖如春绘盟,著一層夾襖步出監(jiān)牢的瞬間鸠真,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工龄毡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吠卷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓沦零,卻偏偏與公主長得像祭隔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蠢终,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容