金字塔決策交易系統(tǒng)——初級教程(2016新版)
《金字塔決策交易系統(tǒng)——初級教程(2016新版)》由會員分享,可在線閱讀,更多相關(guān)《金字塔決策交易系統(tǒng)——初級教程(2016新版)(127頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
2016 上海金之塔信息技術(shù)有限公司 www.weistock.com 策略編寫初級教程 金字塔決策交易系統(tǒng) 1 金字塔決策交易系統(tǒng)教程 目錄 第一章 金字塔語言概要 3 第二章 數(shù)據(jù) 4 2.1 合約信息 4 2.2 全推數(shù)據(jù) 4 2.3 基礎(chǔ)數(shù)據(jù)格式 5 2.4 數(shù)據(jù)存儲 5 2.4 實(shí)時(shí)行情接收 7 2.5 歷史數(shù)據(jù)下載 8 2.6 數(shù)據(jù)導(dǎo)入 12 2.7 數(shù)據(jù)刪除 17 2.8 數(shù)據(jù)常見問題 18 第三章 公式系統(tǒng) 20 3.1 公式類型 20 3.2 新建公式 21 3.3 保存公式 22 3.4 公式編輯器 23 3.5 序列模式和逐K線模式 23 3.6 了解變量 25 3.7 了解函數(shù) 27 3.8 公式編寫格式和法則 29 3.9 代碼注釋 33 3.10 跨周期和跨指標(biāo)引用 34 3.11 模塊化編程 37 3.12 指標(biāo)編寫范例 40 第四章 流程控制 44 4.1 條件語句 44 4.2 數(shù)組 48 4.3 循環(huán)語句 55 4.4 全局變量 58 第五章 圖表交易系統(tǒng) 60 5.1 圖表程序化機(jī)理 60 5.2 下單模型語句 62 5.3 下單指令詳解 63 5.4 趨勢類交易模型范例 65 5.5 振蕩類交易模型范例 71 5.6 日內(nèi)交易模型范例 73 5.7 程式化交易測試和優(yōu)化 77 5.6 程式化交易的建議 85 第六章 圖表自動(dòng)交易下單設(shè)置 87 6.1 啟動(dòng)圖表交易 87 6.2 固定時(shí)間間隔與走完K線模式 88 6.3 自動(dòng)持倉同步 90 6.4 程序化交易相關(guān)設(shè)置 90 6.5 多品種多策略交易 92 第七章 圖表程序化的調(diào)試 107 7.1 圖表程序化的調(diào)試 107 7.2 公式調(diào)試器的使用 109 7.3 日志記錄功能 111 7.4 實(shí)時(shí)數(shù)據(jù)的運(yùn)算 116 第八章 提高軟件運(yùn)行效率的建議 117 10.1 通過軟件設(shè)置提高效率 117 10.2 通過代碼編寫優(yōu)化提高效率 120 后記 123 第一章 金字塔語言概要 感謝您閱讀金字塔決策交易系統(tǒng)學(xué)習(xí)課程,該教程的學(xué)習(xí)目標(biāo)是熟練掌握金字塔決策交易系統(tǒng)革命性的交易語言——PEL。讓您可以將交易想法轉(zhuǎn)換為PEL編寫的分析技術(shù)與交易策略,也能夠閱讀、理解并學(xué)習(xí)其它人編寫的交易策略。實(shí)盤策略示例包含對策略思想的分析、點(diǎn)評,源碼公開,可直接導(dǎo)入軟件使用。 一般而言,PEL全部的示例對期貨、股票、期權(quán)以及外匯都是適用的,與本書展示無關(guān)。您可以自由開發(fā)并在您熟悉的領(lǐng)域進(jìn)行策略編寫與圖形分析,這將會增加熟悉PEL的價(jià)值,給您新的想法提交機(jī)會。 我們只為您提供設(shè)計(jì)策略、觀察策略歷史表現(xiàn)的工具,不推薦或提供任何交易策略與交易品種。系統(tǒng)自帶與本書所述僅限與舉例,而不是推薦。我們在此提醒您注意,一個(gè)交易策略的歷史仿真交易并不能保證它的未來交易成功。 金字塔公式平臺的編輯語言是 Pyramid Easy Language,簡稱“PEL 語言”。該語言在沿用國內(nèi)常用股軟語言體系的基礎(chǔ)上,針對程序化交易做了大量功能開發(fā)與優(yōu)化。即使計(jì)算機(jī)編程零基礎(chǔ)的用戶也能快速上手。 本手冊內(nèi)容是PEL 公式的初級使用教程,詳細(xì)介紹了PEL的結(jié)構(gòu)、語法、特點(diǎn)、使用方法及功能等等。 通過閱讀本教程,您能夠了解 PEL語言的基本語法、操作符、表達(dá)式及控制語句等,通過手冊提供的各種示例程序,掌握 PEL語言的編寫要領(lǐng),最終能夠熟練地將自己的思想轉(zhuǎn)化為 PEL語言,并在金字塔決策交易系統(tǒng)中應(yīng)用。 第二章 數(shù)據(jù) 程序化交易相較手工交易,它的優(yōu)勢在于不用盯盤、排除感情因素的干擾。但它帶來這些好處的同時(shí),需要用戶對數(shù)據(jù)有一定的處理能力。因?yàn)槌绦蚧灰椎幕A(chǔ)是建立在數(shù)據(jù)之上。本章將詳述金字塔軟件中相關(guān)數(shù)據(jù)的操作。 注意:數(shù)據(jù)操作對程序化交易非常重要,屬于不得不講的內(nèi)容,可內(nèi)容相對枯燥。所以,若讀者沒有編程基礎(chǔ)(或同類軟件使用經(jīng)驗(yàn)),又急著上手,建議先閱讀“公式系統(tǒng)”及其他部分,待熟悉代碼編寫,了解策略開發(fā)過程后再看本章,熟悉日常數(shù)據(jù)操作中的細(xì)節(jié)。 2.1 合約信息 金字塔目前提供國內(nèi)期貨、股票、期權(quán)、外匯實(shí)時(shí)行情數(shù)據(jù)。 具體品種包含月份合約,連續(xù)、指數(shù)合約。 連續(xù)合約規(guī)則 用不同月份當(dāng)前最活躍的品種(主力合約)合約數(shù)據(jù)拼接而成,其代碼為AA00,AA該品種合約代碼。例如股指代碼為IF,則其連續(xù)合約代碼為IF00。若碰到雙年份合約則連續(xù)代碼為AAX00,例如白糖(SR)為雙年份合約,其連續(xù)代碼為SRX00。 換月規(guī)則為,下月品種(次主力合約)的成交量存在一個(gè)交易日大于當(dāng)前品種,那么第二天系統(tǒng)自動(dòng)換月,默認(rèn)原下月品種(次主力合約)為主力合約。 注:因連續(xù)合約在換月過程中存在換月跳空,在分析或?qū)嶋H交易過程中這種換月跳空會造成假性的盈虧。金字塔特推出國內(nèi)期貨連續(xù)合約的換月除權(quán)數(shù)據(jù),通過等比除權(quán)的方式消除跳空缺口。 指數(shù)合約規(guī)則 用某品種當(dāng)前所有可交易合約按持倉量加權(quán)平均計(jì)算,其代碼為 AA13,AA表示該品種合約代碼。例如股指代碼為IF,則其連續(xù)合約代碼為IF13。若碰到雙年份合約則連續(xù)代碼為AAX13,例如白糖(SR)為雙年份合約,其連續(xù)代碼為SRX13。 2.2 全推數(shù)據(jù) 金字塔的所有內(nèi)置行情數(shù)據(jù)服務(wù)器均為全推數(shù)據(jù),歷史數(shù)據(jù)補(bǔ)充采取點(diǎn)播模式,既實(shí)時(shí)動(dòng)態(tài)行情采用全推模式。服務(wù)器分為期貨,股票,期權(quán)、外匯。用戶連接對應(yīng)行情服務(wù)器后,行情中心會推送該分類中所有品種的實(shí)時(shí)行情數(shù)據(jù)至本地。股票、期權(quán)默認(rèn)全推1檔買賣盤數(shù)據(jù),使用5檔買賣盤的用戶請用”工具-數(shù)據(jù)補(bǔ)充-行情訂閱”功能。 2.3 基礎(chǔ)數(shù)據(jù)格式 金字塔有5種基礎(chǔ)周期數(shù)據(jù),其他數(shù)據(jù)皆由基礎(chǔ)數(shù)據(jù)合成,具體規(guī)則如下: (1)分筆數(shù)據(jù) 當(dāng)天的所有周期數(shù)據(jù)(除日線外)都是由分筆數(shù)據(jù)(Tick數(shù)據(jù))生成。歷史分筆數(shù)據(jù)可用于生成多筆線、多秒線。 注意:到了第二天,即使本地有昨天的分筆數(shù)據(jù),昨日的分筆數(shù)據(jù)不再生成歷史的各周期的K線,此時(shí)歷史的各周期K線由相應(yīng)的1分鐘、5分鐘、日線歷史數(shù)據(jù)生成,與分筆無關(guān)。相應(yīng)周期的數(shù)據(jù)需要用戶自己補(bǔ)充,24小時(shí)不關(guān)機(jī)的用戶,請執(zhí)行下文中“收盤”操作。 (2)5秒K線 生成5的整數(shù)倍秒周期數(shù)據(jù)。如:10秒K線、15秒K線、20秒K線。 (3)1分鐘數(shù)據(jù) 生成非5整數(shù)倍的分鐘數(shù)據(jù),如:3分鐘K線、7分鐘K線。 (4)5分鐘數(shù)據(jù) 生成5的整數(shù)倍的分鐘、小時(shí)數(shù)據(jù)。如:10分鐘K線,1小時(shí)K線,3小時(shí)K線。 (5)日線數(shù)據(jù) 生成日線及日線以上周期數(shù)據(jù)。如:2日線、3日線、月線。 2.4 數(shù)據(jù)存儲 數(shù)據(jù)存儲范圍 在‘’工具-選項(xiàng)-維護(hù)‘’我們可以對應(yīng)設(shè)置相應(yīng)周期的數(shù)據(jù)存儲長度。 為了保證效率,金子塔默認(rèn)的存儲周期很短,用戶可自己調(diào)整。但盲目設(shè)置過大的存儲周期會導(dǎo)致金字塔運(yùn)行緩慢。 數(shù)據(jù)存儲路徑 金字塔的數(shù)據(jù)存放在軟件安裝根目錄Weistock Soft下的Data目錄中(如下圖) 收盤操作 若您進(jìn)行24小時(shí)全自動(dòng)交易(連續(xù)多日不關(guān)閉金字塔),那么需要進(jìn)行收盤操作,收盤的目的是將當(dāng)日的分筆數(shù)據(jù),轉(zhuǎn)化為各周期的歷史數(shù)據(jù),若不明白,請看上文個(gè)周期數(shù)據(jù)中分筆周期的說明。 手工收盤 打開“工具-數(shù)據(jù)管理-數(shù)據(jù)管理器”,選擇要執(zhí)行收盤的市場,保存的基礎(chǔ)數(shù)據(jù)類型后,點(diǎn)擊執(zhí)行收盤即可。收盤完成后當(dāng)日基礎(chǔ)周期數(shù)據(jù)會保存在用戶本地。 注:用戶手工收盤前請保證當(dāng)日分筆數(shù)據(jù)的完整性,盤中未出現(xiàn)行情中斷。若盤中打開軟件用戶需使用歷史數(shù)據(jù)下載功能補(bǔ)充當(dāng)日分筆成交數(shù)據(jù)后執(zhí)行收盤 自動(dòng)收盤 菜單欄“工具-選項(xiàng)-維護(hù)”可以設(shè)置自動(dòng)收盤時(shí)間。 自動(dòng)收盤的意義:將當(dāng)日的分筆數(shù)據(jù)生成當(dāng)天各標(biāo)準(zhǔn)周期的歷史數(shù)據(jù),即為自動(dòng)手動(dòng)收盤操作。 小技巧 對于24小時(shí)全自動(dòng)交易的用戶,我們就可以通過自動(dòng)收盤操作保證當(dāng)天各品種和周期數(shù)據(jù)的完整性。不用擔(dān)心第二天的數(shù)據(jù)缺失。 2.4 實(shí)時(shí)行情接收 在”工具-啟動(dòng)接收 ”用戶可打開行情連接界面如下: 對應(yīng)服務(wù)器分為期貨,股票,外盤外匯。用戶可根據(jù)自己本地的網(wǎng)絡(luò),要交易和分析的品種連接相應(yīng)行情服務(wù)器。如交易期貨只需連接期貨行情服務(wù)器,連接完成后即可接受所有國內(nèi)期貨品種實(shí)時(shí)行情數(shù)據(jù)。 注:根據(jù)用戶的實(shí)際需求,目前期貨服務(wù)器推送24個(gè)常用的股票指數(shù)數(shù)據(jù),具體請連接期貨服務(wù)器后,在中金所板塊下查看。 2.5 歷史數(shù)據(jù)下載 通常情況下,打開交易品種的K線圖,軟件會自動(dòng)補(bǔ)充該品種當(dāng)前周期3天左右的數(shù)據(jù)。例如看IF00 五分鐘周期,軟件會自動(dòng)把昨日的歷史5分鐘數(shù)據(jù)補(bǔ)齊。但不同周期、品種的數(shù)據(jù),需通過“工具—數(shù)據(jù)補(bǔ)充”進(jìn)行歷史數(shù)據(jù)補(bǔ)充。(當(dāng)日的各周期數(shù)據(jù)每日19:00提供下載。) 這里特別申明“數(shù)據(jù)選項(xiàng)”處選擇補(bǔ)充分筆成交數(shù)據(jù)只能補(bǔ)充當(dāng)日的,歷史分筆數(shù)據(jù)需用到對應(yīng)的歷史分筆數(shù)據(jù)下載項(xiàng)。 歷史數(shù)據(jù)補(bǔ)充步驟 <1>菜單欄“工具-數(shù)據(jù)補(bǔ)充”打開數(shù)據(jù)補(bǔ)充窗口 <2>數(shù)據(jù)補(bǔ)充窗口——批量補(bǔ)數(shù)據(jù) 界面 該界面用戶可以直接補(bǔ)充相應(yīng)市場的歷史各個(gè)周期數(shù)據(jù) 補(bǔ)充步驟 i、選擇周期 ii、選擇補(bǔ)充市場 iii、選擇補(bǔ)充時(shí)間段 iv、點(diǎn)擊【開始補(bǔ)充】按鈕 注:用戶補(bǔ)充數(shù)據(jù)之前需先連接對應(yīng)的行情服務(wù)器(如補(bǔ)期貨數(shù)據(jù),連接期貨服務(wù)器). 下載的數(shù)據(jù)會保存在用戶本地,下載后下次無須重復(fù)下載。 <3>若用戶交易和分析的品種有限,那么每次補(bǔ)充選擇過程過于繁瑣,或者補(bǔ)充幾個(gè)品種的數(shù)據(jù)。這時(shí),您可以選擇自定義補(bǔ)數(shù)據(jù)功能,您可以新建日常方案,選擇此方案后添加日常需要補(bǔ)充數(shù)據(jù)的品種和周期,選擇時(shí)間后直接點(diǎn)擊開始補(bǔ)充。參考下圖(此法比較快捷但缺少靈活性) 數(shù)據(jù)補(bǔ)充窗口——自定義補(bǔ)數(shù)據(jù) 界面 該界面用戶可以補(bǔ)充單個(gè)品種或者不同市場多個(gè)品種的各周期數(shù)據(jù) 補(bǔ)充步驟 i、添加品種 ii、選擇品種與相應(yīng)周期 iii、選擇補(bǔ)充時(shí)間段 iv、點(diǎn)擊【開始補(bǔ)充】按鈕 小技巧 有的用戶擔(dān)心自己下的歷史數(shù)據(jù)沒到位或者不放心想驗(yàn)證下具體周期數(shù)據(jù)本地是否已經(jīng)補(bǔ)充齊全,這種情況下用戶可在品種界面鼠標(biāo)右擊,查看本地對應(yīng)的周期數(shù)據(jù)長度(如下圖,查看本地的數(shù)據(jù),看是否齊全) 2.6 數(shù)據(jù)導(dǎo)入 目前金字塔僅支持TXT文本格式和系統(tǒng)格式數(shù)據(jù)的導(dǎo)入。 系統(tǒng)格式(.DAD)數(shù)據(jù)導(dǎo)入步驟 步驟1:打開"工具-數(shù)據(jù)管理-數(shù)據(jù)管理器" 步驟2:打開后,切換至"導(dǎo)入數(shù)據(jù)"界面,選擇導(dǎo)入數(shù)據(jù)的格式、市場、數(shù)據(jù)類型、本地?cái)?shù)據(jù)文件件路徑。 步驟3:設(shè)置完成后,點(diǎn)擊"執(zhí)行安裝"按鈕,系統(tǒng)就會自動(dòng)導(dǎo)入數(shù)據(jù)至軟件。 TXT格式數(shù)據(jù)導(dǎo)入步驟 TXT數(shù)據(jù)導(dǎo)入分為已有品種代碼的數(shù)據(jù)導(dǎo)入和其它品種的數(shù)據(jù)導(dǎo)入2部分: 已有代碼TXT數(shù)據(jù)導(dǎo)入流程 步驟1:在TXT、CSV中輸入數(shù)據(jù) 注意:導(dǎo)入金字塔的數(shù)據(jù) 必須至少有 開 高 低 收 成交量 這5個(gè)數(shù)據(jù)(csv同理) 步驟2:編輯TXT(CSV)文件名 導(dǎo)入的數(shù)據(jù)屬于哪一個(gè)品種,在金字塔中是由TXT的文件名決定的。 TXT的命名方式為 市場代碼+品種代碼 市場代碼和品種代碼可通過工具—>數(shù)據(jù)—>數(shù)據(jù)管理器—>代碼對照獲取。 以上圖為例,若導(dǎo)入中金所股指連續(xù)的數(shù)據(jù)。TXT的文件名就應(yīng)為ZJIF00.TXT (ZJIF00.CSV)。若導(dǎo)入紐約商品交易所美原油連續(xù)的數(shù)據(jù),TXT的文件名就為NMCL00.TXT (NMCL00.CSV)。 步驟3:導(dǎo)入設(shè)置 導(dǎo)入的菜單在 工具——數(shù)據(jù)——數(shù)據(jù)管理 1、數(shù)據(jù)格式選擇:以文本格式 2、點(diǎn)開文本格式設(shè)置 如下圖: 這里要注意: (1)設(shè)置TXT文件中數(shù)據(jù)對應(yīng)的項(xiàng)。 (2)TXT數(shù)據(jù)若是從EXCEL里復(fù)制過來,請選擇 制表符 為分隔符。 (3)CSV數(shù)據(jù),需將某人的文件后綴改為CSV,并選擇 逗號 為分隔符。 3、輸入路徑: 金字塔支持多個(gè)文本文件同時(shí)導(dǎo)入,所以此處的路徑為文件所在上一級的文件夾,而不是文件路徑。 例:我要同時(shí)導(dǎo)入上文中ZJIF00,NMCL00的5min數(shù)據(jù) ,則將此文件放入同一個(gè)文件夾,通過路徑指向即可默認(rèn)為C:\TXTMIN5。 4、安裝方式: 清楚原先數(shù)據(jù)——?jiǎng)h除品種原來所有的數(shù)據(jù),僅保留導(dǎo)入的數(shù)據(jù) 例:本地原來有1年的數(shù)據(jù),我新導(dǎo)入1個(gè)月了數(shù)據(jù),最終只有導(dǎo)入的這1個(gè)月數(shù)據(jù)。 補(bǔ)充方式—保留品種原來的數(shù)據(jù),再此基礎(chǔ)上,加入導(dǎo)入的補(bǔ)充數(shù)據(jù)。(查缺補(bǔ)漏) 例:本地原來有2011年的數(shù)據(jù),但是不全,我導(dǎo)入新的這2011年數(shù)據(jù),新的數(shù)據(jù)起查漏補(bǔ)缺的作用。老數(shù)據(jù)缺失的,由新數(shù)據(jù)補(bǔ)充;原數(shù)據(jù)不做替換。 追加方式——不論本地有沒有數(shù)據(jù),統(tǒng)一替換為新數(shù)據(jù)。 例:本地原來有2010-2012年的數(shù)據(jù),我導(dǎo)入新的這2011年數(shù)據(jù),則原有的2011的數(shù)據(jù)全部替換為新導(dǎo)入的數(shù)據(jù)。 5、選擇相應(yīng)的周期。 6、選擇對應(yīng)的市場 步驟3:執(zhí)行安裝 到這一步,注意別點(diǎn)確認(rèn),點(diǎn)確認(rèn)并沒有執(zhí)行導(dǎo)入,而應(yīng)該點(diǎn)擊 執(zhí)行安裝 按鈕。 出現(xiàn)上圖畫面,說明數(shù)據(jù)導(dǎo)入成功。 其它品種TXT數(shù)據(jù)導(dǎo)入 除了金字塔本身提供的數(shù)據(jù)以外,用戶還有很多其他的數(shù)據(jù)要求,比如基本面的數(shù)據(jù)、GDP的數(shù)據(jù)等等。對于有計(jì)算機(jī)基礎(chǔ)的人而言,通過SQL、VBA等實(shí)現(xiàn)這些非常的容易,但是對絕大多人而言就比較難了。 以股指倉差報(bào)告為例:很多金字塔的用戶做股指時(shí),喜歡看股指前20持倉報(bào)告(后稱倉差報(bào)告),更有甚者用倉差報(bào)告開發(fā)策略。從數(shù)據(jù)本身看,倉差報(bào)告有別于商品期貨,集合了整個(gè)IF市場70%-80&的持倉,非常有價(jià)值。我們利用 “其他數(shù)據(jù)導(dǎo)入”和“引用跨周期函數(shù)”的功能,可以曲線實(shí)現(xiàn)在金字塔中顯示倉差報(bào)告指標(biāo)。 具體操作如下: 第一步:工具——停止接受;調(diào)成如下界面 第二步:工具—>數(shù)據(jù)—>數(shù)據(jù)管理器—>代碼對照—>中國金融期貨市場—>新增—品種代碼IFCC 品種名稱 股指倉差。 第三步:工具——市場與板塊——中國金融期交易所——編輯 然后設(shè)成如下畫面——重啟軟件。 注意:此處IFCC是寫死的,若某品種有多個(gè)合約,用戶可根據(jù)自己的需求設(shè)置: 例如:IFCC ——IFZZ; 1A0001——1A9999等等. 第四步:重啟后——按IFCC 第五步:之后的操作,參照上文的金字塔已有代碼數(shù)據(jù)導(dǎo)入。與其相同,不再贅述。 2.7 數(shù)據(jù)刪除 刪除具體品種具體市場的周期數(shù)據(jù) 打開“工具-數(shù)據(jù)管理-數(shù)據(jù)管理器”選擇整理數(shù)據(jù),要執(zhí)行刪除的市場或,基礎(chǔ)數(shù)據(jù)類型,勾選刪除數(shù)據(jù)后點(diǎn)擊執(zhí)行清理即可。若要?jiǎng)h除單個(gè)品種或者幾個(gè)品種的數(shù)據(jù),點(diǎn)擊加入個(gè)股處可選擇具體刪除品種。 批量刪除大容量歷史數(shù)據(jù) 前面我們說了金字塔的數(shù)據(jù)存儲路徑,安放在本地安裝目錄Weistock Soft下的Data目錄中。我們可以關(guān)閉軟件,然后直接刪除DATA目錄下指定的市場文件, 例如刪除Weisoft Stock\DATA\ZJ文件夾,則對應(yīng)軟件里面中金(ZJ)市場的所有周期數(shù)據(jù)都被我們清除掉。 小技巧 非法關(guān)機(jī),異常崩潰等情況使金字塔異常關(guān)閉可能會導(dǎo)致data目錄下的數(shù)據(jù)文件損壞, 從而影響正常行情的接收或使歷史K線數(shù)據(jù)紊亂。碰到這種情況下我們的處理方法為: 方法一:我們首先打開‘’工具-數(shù)據(jù)-數(shù)據(jù)管理器‘’,清除今日行情數(shù)據(jù),重啟軟件后查開行情是否正常。 方法二:若方法一無法解決問題,我們先關(guān)閉軟件,打開軟件安裝目錄下的Data,找到對應(yīng)行情紊亂市場刪除其市場配置文件report2例如D:\Weisoft Stock\DATA\ZJ文件夾下的report2文件 (若用戶無重要數(shù)據(jù)可直接刪除data或DATA里對應(yīng)市場文件夾,此法較快捷)重啟后行情恢復(fù)正常。 注:以上方法針對行情接收異常,歷史數(shù)據(jù)紊亂或明細(xì)錯(cuò)誤現(xiàn)象可直接取方法二或使用數(shù)據(jù)刪除操作。 2.8 數(shù)據(jù)常見問題 Q:明明補(bǔ)充了數(shù)據(jù),但對應(yīng)周期的K線圖只顯示當(dāng)日或者一段時(shí)間的數(shù)據(jù)? A:步驟1:先通過右鍵-數(shù)據(jù) 查看對應(yīng)的周期數(shù)據(jù)本地是否已經(jīng)齊全,若不齊全則對應(yīng)周期數(shù)據(jù)補(bǔ)充不完整,需重新補(bǔ)充。 步驟2:本地?cái)?shù)據(jù)長度足夠,K線圖顯示時(shí)間過短。影響K線圖數(shù)據(jù)顯示的設(shè)置分別如下,用戶可自行檢查下是不是啟用了對應(yīng)的限制數(shù)據(jù)量功能。 (1) 勾選了對應(yīng)顯示限制 (2) 設(shè)定了顯示時(shí)段 (3) 限制了顯示的K線數(shù)量 第三章 公式系統(tǒng) 在金字塔軟件中,無論是技術(shù)分析、歷史回測、程序化交易的實(shí)現(xiàn),所有的計(jì)算都基于公式的運(yùn)算。所以,我們要學(xué)會如何建立自己的公式,編寫自己的代碼,本章將講述相關(guān)具體步驟。 3.1 公式類型 首先,在寫正式代碼之前,我們需要確定公式的類型: 通過菜單“交易”——“公式編輯器”(或快捷鍵Shift+W)我們可以在軟件最左側(cè)調(diào)出“管理面板”界面: 公式類型好比做菜的菜系,不同的菜系滿足不同的口味,不同的要求。 (1)技術(shù)指標(biāo) 實(shí)現(xiàn)對技術(shù)圖表分析中各類技術(shù)指標(biāo)和自我定義的技術(shù)分析指標(biāo)的編寫,并且通過金字塔決策交易系統(tǒng)的分析界面形成圖表、曲線。 (2)交易系統(tǒng) 交易系統(tǒng)不僅能實(shí)現(xiàn)技術(shù)指標(biāo)的功能,還能實(shí)現(xiàn)資金管理、風(fēng)險(xiǎn)管理的作用。包括買入、賣出、止損止盈等等,非常直觀的幫助投資者根據(jù)自己的想法建立一套屬于自己的買賣規(guī)則和理論。 (3)條件選股 通常意義上的智能選股??梢酝ㄟ^對該平臺的熟練使用,借助計(jì)算機(jī)的高速和準(zhǔn)確的檢索功能尋找滿足您的理解的股票形態(tài)和技術(shù)特征。 (4)五彩K線 準(zhǔn)確講,該編輯器的功能是附屬于條件選股功能之上的,我們可以通過該功能將滿足條件的連續(xù)K線形態(tài)賦予顏色,區(qū)別了其它的K線。 注意事項(xiàng): 1、程序化交易主要使用技術(shù)指標(biāo)和交易系統(tǒng)。教程也將主要針對這兩類進(jìn)行詳細(xì)介紹。 2、公式類型決定了公式的使用范圍,除“交易系統(tǒng)”外,其他類型均無法實(shí)現(xiàn)程序化自動(dòng)交易。 3.2 新建公式 1) 當(dāng)我們確認(rèn)需要編輯的公式類型后,在相應(yīng)的類型下鼠標(biāo)右擊——新建公式,得到上圖公式編輯器界面。 2) 點(diǎn)擊“新建公式”如下圖 編輯已存在的公式 如果需要編輯、修改已存在的公式,選擇需要修改的公式——鼠標(biāo)右擊——編輯公式 3.3 保存公式 當(dāng)我們的代碼編寫完成后,都需要點(diǎn)擊“編譯公式”。以確認(rèn)編寫的代碼沒有問題。若編譯無問題,則軟件會顯示“測試正?!弊謽?。若有問題,則會指向編譯出錯(cuò)的地點(diǎn)。 正常情況 出錯(cuò)示例 注意:只保存而未通過編譯的公式是不能夠被調(diào)用的。如下圖,此公式不能正常使用。 3.4 公式編輯器 公式編輯器各功能按鍵介紹 名稱:公式的名稱,命名規(guī)則如下 (1)不區(qū)分大小寫; (2)不能超過 32 個(gè)英文字符,16個(gè)漢字; (3)每一類公式不能出現(xiàn)相同的名稱。例如:在技術(shù)指標(biāo)分類下已經(jīng)有一個(gè)公式叫做MACD,那么在該分類下無法再起另一個(gè)叫MACD的公式。但是,在交易系統(tǒng)分類下可以。 快捷鍵:給這個(gè)公式設(shè)置一個(gè)快捷鍵,可以在按鍵精靈中方便調(diào)出。 說明:給公式寫個(gè)簡單的說明性文字(可不填)。 禁用周期:設(shè)置公式在哪些周期上不允許運(yùn)行。 公式測評:進(jìn)入公式測評界面。 買賣規(guī)則:這個(gè)選項(xiàng)只存在技術(shù)指標(biāo)中,可定義簡單買賣規(guī)則,方便測試。 副圖、主圖、主圖疊加:決定公式在那個(gè)界面輸入。 交易系統(tǒng)此項(xiàng)會不可選,只能在主圖疊加 費(fèi)率設(shè)置:此項(xiàng)僅存在交易系統(tǒng)中,該選項(xiàng)可設(shè)置公式的虛擬資金、虛擬費(fèi)率等。詳情將在交易系統(tǒng)編寫詳述。 <<: 這個(gè)選項(xiàng)可以打開公式編輯器中默認(rèn)隱藏的函數(shù)列表。 編譯公式:當(dāng)你的代碼完成后,需要點(diǎn)擊“編譯公式“后方可執(zhí)行。 只要代碼發(fā)生變化,都需要重新編譯。 3.5 序列模式和逐K線模式 金字塔公式系統(tǒng)工作兩種模式,即序列和逐K線。 序列模式下公式按照序列或者常數(shù)計(jì)算返回結(jié)果,整個(gè)執(zhí)行過程只解析一遍公式系統(tǒng)。這種模式的特點(diǎn)是能很快的計(jì)算出結(jié)果,但缺點(diǎn)也明顯,無法處理例如加減倉等精細(xì)化控制,目前已極少用到。 逐K線模式:運(yùn)行是,策略從第1個(gè)K線直到最后一個(gè)K線逐個(gè)解析公式系統(tǒng),每根K線都會解析整個(gè)公式系統(tǒng)一遍,返回值也只有數(shù)值類型這一種,故這種模式運(yùn)行時(shí)效率要比序列模式低,但在此運(yùn)行模式下的公式,可以使用各種更加靈活的控制語法。 僅刷最后一根K線:這種模式是對逐K模式的優(yōu)化,因?yàn)閷?shí)時(shí)交易時(shí),我們僅關(guān)心最后一根K線相關(guān)的數(shù)據(jù)是否正確,之前的計(jì)算結(jié)果一般情況下,無需再重復(fù)計(jì)算。一般會默認(rèn)勾選此項(xiàng)。 從發(fā)展的眼光看,圖表程序化中的序列模式誕生于程序化交易的初期,滿足了當(dāng)時(shí)處理一些簡單情況的要求,可無法滿足加減倉等資金管理的要求。目前,90%以上的公式策略運(yùn)行在逐K模式下。 小提示:建議大家不要糾結(jié)與運(yùn)行模式,早期直接選擇逐K【僅刷最后一根K線】即可,后續(xù)涉及效率以及后臺程序化策略編寫我們可以再了解序列運(yùn)行模式。 控制語句不同模式下的運(yùn)行特點(diǎn) 逐K線計(jì)算時(shí),控制語句比如IF THEN ,F(xiàn)OR 等語句工作機(jī)制是每周期都去執(zhí)行一次,因此在逐K線模式下,可以利用這種靈活的模式來設(shè)計(jì)我們的策略,比如加倉、減倉、資金管理策略等等。 為了更能說明金字塔兩種模式下的公式運(yùn)行特點(diǎn),讓我們來看下例: MSGOUT(1,測試); 代碼就上面這樣一行。代碼中的1代表邏輯TRUE,即100%成立(恒成立)。我們將此代碼在序列模式下運(yùn)行,會發(fā)現(xiàn)消息窗口就輸出了1條。即代表公式運(yùn)行了一次。而將代碼在逐k線模式后會發(fā)現(xiàn),消息窗口輸出了非常多條,數(shù)量應(yīng)等于你本地該品種的數(shù)據(jù)量。這代表公式在每根K線上都運(yùn)行了一遍。這就是兩者的區(qū)別。 逐K線模式下數(shù)組轉(zhuǎn)定義數(shù)組變量(初級用戶可以先濾過) 逐K線模式下數(shù)組之間的轉(zhuǎn)換與序列模式有所不同,序列模式因?yàn)槭侵粓?zhí)行一次解析返回的是序列變量,因此可以完成直接的數(shù)組拷貝,而逐K線則每根K線都回去執(zhí)行一遍公式的解析,因此在數(shù)組之間的轉(zhuǎn)換上也有不同,在執(zhí)行相互之間轉(zhuǎn)換時(shí),金字塔采用的是只處理數(shù)組最后數(shù)據(jù)的方法,即在逐K線解析時(shí),自動(dòng)擴(kuò)充累加數(shù)組元素,我們舉例如下: 要求:分別計(jì)算陽線和陰線收盤價(jià)10個(gè)數(shù)字的平均價(jià),該需求需要我們分別定義2個(gè)數(shù)組來保存各自不同的價(jià)格,逐K線模式下的這種運(yùn)行機(jī)制便正好可以滿足我們的這個(gè)需要 RUNMODE:0; VARIABLE:DOWN[]=0;//定義一個(gè)空的數(shù)組,計(jì)算下跌的陽線收盤價(jià),注意這里一定要置空數(shù)組用來保存數(shù)據(jù) VARIABLE:UP[]=0;//定義一個(gè)空的數(shù)組,計(jì)算上漲陽線收盤價(jià),注意這里一定要置空數(shù)組用來保存數(shù)據(jù) IF CLOSE > OPEN THEN UP:=CLOSE;//將上漲K線收盤價(jià)插入數(shù)組UP中 ELSE DOWN:=CLOSE;//將下跌K線收盤價(jià)插入DOWN數(shù)組中 A:MA(UP,10); B:MA(DOWN,10); //下面2行調(diào)試代碼 DD:UBOUND(UP),NODRAW; //顯示輸出UP數(shù)組數(shù)據(jù)個(gè)數(shù) SS:UBOUND(DOWN),NODRAW; //顯示輸出DOWN數(shù)組數(shù)據(jù)個(gè)數(shù) 注意: 通過上述的代碼我們需要注意的是,UP和DOWN數(shù)組前面我們一定要置一個(gè)空的數(shù)組,這個(gè)空數(shù)組金字塔會在逐K線執(zhí)行的時(shí)候去自動(dòng)的填充我們的數(shù)據(jù). 在逐K線模式下對數(shù)組的轉(zhuǎn)換操作,應(yīng)該避免在循環(huán)語句中使用,因?yàn)榭赡軙?dǎo)致循環(huán)對數(shù)組數(shù)據(jù)積累而導(dǎo)致計(jì)算出錯(cuò) 3.6 了解變量 如果想用公式(程序)來控制你的交易,首先要了解一個(gè)很重要的概念——變量,它的基本功能是存儲、讀取數(shù)據(jù)。 在我們的生活中有各種容器。比如,有放衣服的衣柜,有放食品的冰箱。變量有相似的作用。我們在公式的運(yùn)用中,需要有一個(gè)容器去存儲數(shù)據(jù),這個(gè)容器在編程中叫做變量,容器的名字叫做變量名,容器中保存的數(shù)據(jù)成為變量值。 如:收盤價(jià):close; 我們建立了一個(gè)叫收盤價(jià)的容器,要求里面保存收盤價(jià)這個(gè)數(shù)據(jù)。上面公式中收盤價(jià)就是變量名,具體的數(shù)據(jù)close是它的變量值。(close代表收盤價(jià),后面會詳述,此處讀者只要理解即可)一般而言,在軟件中,我們的變量是隨著時(shí)間而改變(時(shí)間序列),比如close,在不同的時(shí)間,不同周期上,Close的值是不同的。如下圖所示 1月1日 1500 1月2日 1578 1月3日 1543 …… 收盤價(jià) 這個(gè)容器中按時(shí)間順序存儲了一系列值。 語法規(guī)則: l 在軟件中變量的命名需遵守以下規(guī)則: l 所有的標(biāo)點(diǎn)符號必須在英文狀態(tài)下 l 變量名可以使用中英文,英文不區(qū)分大小寫 l 變量名不能超過 32 個(gè)英文字符,16個(gè)漢字 l 每一個(gè)公式內(nèi)部不能重復(fù)命名 n 每個(gè)容器都必須有一個(gè)獨(dú)一無二的名字,否則電腦無法知曉到底需要的是哪個(gè)容器。 如上圖,第一行已經(jīng)命名了一個(gè)變量叫close1,之后代碼中的變量就不能再起變量名叫close1。但是我們可以給close1重新賦值,例如close1:=close; l 變量名不能和系統(tǒng)保留字、系統(tǒng)函數(shù)等重名; n 軟件里已經(jīng)內(nèi)定Close代表收盤價(jià),那么就不能再起一個(gè)相同的名字命名這個(gè)容器(容器名)。一般系統(tǒng)保留名會以藍(lán)色顯示,若發(fā)現(xiàn)變量名是藍(lán)色就應(yīng)該換一個(gè)名字。 如上圖,第一行代碼變量名close呈現(xiàn)藍(lán)色,說明這是一個(gè)軟件保留字,不能作為變量名。第二行的變量名是個(gè)黑色,說明close1可以作為變量名。 l 變量名與之后的算法以“:”分隔,每個(gè)語句以“;”結(jié)尾。 這個(gè)規(guī)則如同1+1=2。為什么要用+和=號呢?沒有為什么就是這么規(guī)定的。 所以一個(gè)標(biāo)準(zhǔn)的變量賦值語句為 變量名:含義; “:”“;”不可缺少。 l 常值變量 常量變量是一種特?cái)?shù)據(jù)的變量,它一個(gè)永遠(yuǎn)不變的數(shù)值。 比如我們計(jì)算圓周,那么需要一個(gè)P=3.14,那么我們在編輯器中輸入如下語句 p:3.14; 定義常值變量后,在之后的代碼編寫過程中,我們需要用到這個(gè)值,直接使用P,而不再需要每次輸入3.14。 使用常值變量的好處是,當(dāng)我的計(jì)算要求發(fā)生改變,比如p需要取3.14159時(shí),我只需修改P:3.14159;而不用動(dòng)其他的代碼。如直接使用3.14去處理,則我需要從上到下,全部去修改。 3.7 了解函數(shù) MA5:ma(close,5); 以上是一個(gè)5日均線的表達(dá)式。這里我們用到MA()這個(gè)函數(shù)。 這里有一個(gè)全新的概念,什么是函數(shù)? 首先,我們來理解函數(shù)的概念。函數(shù)就像我們生活中的家電,方便我們完成特定的簡單或復(fù)雜的重復(fù)動(dòng)作。比如在生活中,我們用微波爐來加熱。使用微波爐的好處是,用戶享受到快速加熱便利的同時(shí),我們無需知道微波爐的工作原理,我們只需明白如何使用。這里就揭示了函數(shù)的最大特點(diǎn)——提供便利(將復(fù)雜的過程變的簡單)。 比如MA這個(gè)函數(shù)的作用是負(fù)責(zé)統(tǒng)計(jì)N周期的均價(jià)。如果沒有函數(shù),我們需要自己手工去計(jì)算,或者自己想辦法來實(shí)現(xiàn)算法,但是當(dāng)這個(gè)求N周期均價(jià)的需求轉(zhuǎn)變成軟件內(nèi)置函數(shù)后,我們不必再糾結(jié)怎么去實(shí)現(xiàn)這個(gè)算法,而只需關(guān)清楚這個(gè)函數(shù)實(shí)現(xiàn)的目標(biāo)是什么?清楚如何使用。以上面表達(dá)式為例,我們可以把Ma()看成微波爐,微波爐至少有2個(gè)旋鈕,一個(gè)控制模式,一個(gè)控制加入時(shí)間。函數(shù)()里面的部分功能類似微波爐的旋鈕,我們稱之為參數(shù)(Ma有個(gè)2參數(shù))。參數(shù)之間以逗號分隔。 我們來看下MA的函數(shù)說明 用法: MA(X,N),求X的N日移動(dòng)平均值。算法:(X1+X2+X3+...+XN)/N 所以,我們可根據(jù)實(shí)際使用情況,選擇合適的參數(shù)。此處,我們命名了一個(gè)變量名為MA5的變量(容器),它記錄的是一系列5周期收盤價(jià)的平均值。 其他的函數(shù)使用方式是一致的,但是參數(shù)的個(gè)數(shù)會不同,具體使用時(shí)請參考函數(shù)的使用說明。 (這里大家有個(gè)概念,通過之后的教程,相信讀者會逐步理解函數(shù)的作用。) 小技巧: 對于金字塔近900余函數(shù),如何查找各個(gè)函數(shù)的意義、使用方法、找到我需要的函數(shù)呢? 我們可以通過以下幾個(gè)方式獲?。? 1、當(dāng)有代碼(比如系統(tǒng)自帶的策略),對于我們不熟悉的函數(shù),我們可以把鼠標(biāo)位置停放在該函數(shù)上,稍等1-2秒,就可看到該函數(shù)說明。(如下圖) 2、當(dāng)我們需要查找我們需要的函數(shù)時(shí) 點(diǎn)開公式編輯器中”<<”按鈕。 然后,公式編輯器的左邊將顯示“函數(shù)列表”。用戶可通過檢索的方式,獲取函數(shù)說明。 小提示:函數(shù)在公式編輯界面顯示為藍(lán)色,變量為黑色。大家注意處分,如果函數(shù)顯示為非藍(lán)色,說明函數(shù)輸入或符號存在問題。 3.8 公式編寫格式和法則 所有的公式系統(tǒng)都是遵守統(tǒng)一的運(yùn)算法則,統(tǒng)一的格式進(jìn)行函數(shù)之間的計(jì)算,所以我們掌握了技術(shù)指標(biāo)公式的基本原理,其他的公式也不會出脫其外。例如我們在指標(biāo)公式系統(tǒng)內(nèi)寫下公式: A. 賦值語句 參考本章“了解變量“章節(jié)。賦值語句的格式為:變量名:賦值(變量值); B. 中間語句 我們來看這樣一個(gè)例子;我們建立一個(gè)指標(biāo),名稱為“我的第一個(gè)指標(biāo)” A1:close; B1:A1+5; 當(dāng)我們在編輯器中編寫完成,并成功編譯后,點(diǎn)擊應(yīng)用于圖。 此時(shí),我們在K線圖的左上角,得到如下類似的畫面。 我們在K線圖,雙擊鼠標(biāo)左鍵,調(diào)出十字光標(biāo)后,上面的指標(biāo)值A(chǔ)1、B1、C1會隨著十字光標(biāo)在不同的K線而變化。界面上有2條指標(biāo)線,分別代表A1、B1的值。 在實(shí)際交易中,我們一個(gè)公式中可能有幾十個(gè)變量,如果每個(gè)變量都顯示出來,界面上會有幾十條線,非常凌亂。用戶其實(shí)只想看到想關(guān)注的變量值。比如上面的例子,我只想知道B1的值。碰到此類一個(gè)語句不需要顯示,而其他的變量又需要用到它,我們可以將它定義為中間語句。 中間語句用“:=”替代“:”,其他的規(guī)則與一般語句完全一樣,使用中間語句可以有效降低公式的書寫難度,還可以將需要重復(fù)使用的語句定義成中間語句以減少計(jì)算量。 例如在上例當(dāng)中的第一句“A1 :close;”,我們將其改成”A1:=close;”這樣該語句就不會被系統(tǒng)辨認(rèn)為是指標(biāo)線了。 C. 公式計(jì)算符 我們在計(jì)算的時(shí)候總免不了使用各種計(jì)算符號進(jìn)行連接。在金字塔中計(jì)算符分為算術(shù)計(jì)算符和邏輯計(jì)算符。 算術(shù)計(jì)算符: 包括+、-、*、/它們依次分別代表加減乘除加減乘除計(jì)算,這同一般意義上的算術(shù)計(jì)算沒有差異。 &為字符串相加運(yùn)算。(字符串是什么,之后會詳述,此處可略過) 邏輯計(jì)算苻 包括>、<、<>、>=、<=、=、AND、OR八種,分別表示大于、小于、不等于、大于等于、小于等于、等于、邏輯與、邏輯或運(yùn)算。 在金字塔中沒有布爾值。在金字塔中如果條件成立則返回值為1,否則等于0。“邏輯與”表示兩個(gè)條件都成立時(shí)結(jié)果才成立;“邏輯或”表示兩個(gè)條件中只要有一個(gè)成立結(jié)果成立。例如: A1:1>3; B1:1<3; 編譯后,應(yīng)用于圖。此時(shí)你會K線圖左上角發(fā)現(xiàn)A的值是0,B1的值是1。 我們再改變下上面的例子 A1:=1>3; B1:=1<3; C1:A1 and B1; D1:A1 or B1; 編譯后,應(yīng)用與圖。此時(shí)C1的值為0,D1的值為1。 C1中的and表示邏輯與,只有當(dāng)A1、B1都滿足條件后,才返回1,否則返回0. D1中的or表示邏輯或,A1、B1中只要有一個(gè)滿足條件,就返回1,否則返回0. 小技巧: 當(dāng)我們使用上面的代碼時(shí),會發(fā)現(xiàn)原本正常的K線被壓縮了。 這是由于,輸出的指標(biāo)線與K線公用一個(gè)坐標(biāo)系,由于C1、D1的數(shù)值非常小,與 K線同時(shí)顯示時(shí),不可避免的被壓縮了。 針對這種情況,有以下2種解決方式: 1、代碼法 代碼法需要用到一個(gè)函數(shù),noaxis。當(dāng)帶有此代碼的指標(biāo)線不與K線圖公用一個(gè)坐標(biāo)系統(tǒng),從而達(dá)到效果。(Noaxis屬線形描述符的范疇,具體格式書寫方法見之后線性描述符章節(jié)。) 例: A1:=1>3; B1:=1<3; C1:A1 and B1,noaxis; D1:A1 or B1,noaxis; 編譯、應(yīng)用于圖,K線顯示正常。 2、功能法 功能發(fā)即使用系統(tǒng)自帶的功能。具體操作如下 在K線圖Y坐標(biāo)系鼠標(biāo)右擊,勾選僅隨K線變動(dòng)選項(xiàng)。 也能達(dá)到類似的效果。 D. 線形描述符 對于技術(shù)指標(biāo)公式可以在語句加上線形描述符,用來表示如何畫該語句描述的指標(biāo)線。 線形描述符號包括以下7種。描述符寫在語句后分號前,用逗號將它們與語句分隔開,例如在A1:close,COLORRED;該語句在被執(zhí)行時(shí),該指標(biāo)線會顯示為紅色。 具體的相關(guān)函數(shù),可在函數(shù)列表——線性描述中獲取。 小技巧: 在日常的編寫中,還存在這樣一種情況。 代碼中有一個(gè)變量,我希望實(shí)時(shí)能觀測到它的值,但是此時(shí)已經(jīng)輸出了很多其他指標(biāo)線,又不想再增加指標(biāo)線。如果變成中間變量,那么這個(gè)值又不顯示。 此時(shí),我們可以通過使用LINETHICK函數(shù)來解決。 LINETHICK可以允許對線型的粗細(xì)進(jìn)行自定義的描述,格式“LINETHICK+(0/7)”:參數(shù)的取值范圍在0-7之間,“LINETHICK0”表示最細(xì)的線,細(xì)到在圖中不顯示;而“LINETHICK7”表示最粗的線。 面對上面的困境,我們使用LINETHICK0即可。 在圖表公式調(diào)試的時(shí)候,這個(gè)函數(shù)會有很重要的作用。 特別是用戶在編輯指標(biāo)過程當(dāng)中,免不了進(jìn)行中間調(diào)試,這涉及到遇到中間的變量在某個(gè)周期的數(shù)值等于多少,又不想輸出指標(biāo)線。 例如:A:close/10,lintthick0; 將以上代碼編譯、應(yīng)用于圖后會發(fā)現(xiàn),沒有指標(biāo)線。但左上角的指標(biāo)值清晰可見。 3.9 代碼注釋 注釋的添加雖然會增加編程的時(shí)間和工作量,但卻不會影響程序的執(zhí)行效率,因?yàn)槌绦蜻\(yùn)行時(shí),注釋的內(nèi)容會被忽略掉。而且好的注釋可以調(diào)高公式的可讀性和可維護(hù)性。因此,添加注釋是非常必要、好的習(xí)慣。 在金字塔中,代碼注釋分為2種 1、單行注釋 A1:close;//A1表示收盤價(jià) //B1:close/10; C1:high 上面的例子,第一行后半部分是注釋說明,起到解釋說明作用。 第二行注釋,一般在編輯過程中使用,不確定之后還是否需要用到這部分代碼。暫時(shí)可以通過注釋的方法去掉。 第三行正常工作,說明//只多單行起注釋作用。 2、多行注釋 多行注釋通過{}符號注釋。在{}的部分為需要注釋的部分。 {A1:close;//A1表示收盤價(jià) //B1:close/10; C1:high} 3.10 跨周期和跨指標(biāo)引用 跨周期引用,是策略開發(fā)中常見的需求,但從計(jì)算機(jī)處理的角度來說,對硬件資源的消耗較高,這也是很多同類軟件在這方面做出種種限制的原因。 金字塔在跨周期引用這方面非常給力,理論上只要有足夠的硬件資源,可以引用無限個(gè)跨周期、跨指標(biāo)數(shù)據(jù)。 A、指標(biāo)數(shù)據(jù)引用(兼容模式,不推薦) 經(jīng)常地編制公式的過程當(dāng)中,需要使用另外一個(gè)指標(biāo)的值,如果按照通常的做法,重新編寫過這個(gè)指標(biāo)顯得很麻煩,因此有必要學(xué)習(xí)使用如何調(diào)用別的指標(biāo)公式。 基本格式為:“指標(biāo).指標(biāo)線”(參數(shù)) a、指標(biāo)和指標(biāo)線之間用 .號分開,一個(gè)指標(biāo)不一定只有一條指標(biāo)線,所以有必要在指標(biāo)后標(biāo)注指標(biāo)線的名稱,缺失表示引用最后一條指標(biāo)線。 b、參數(shù)在表達(dá)式的末尾,必須用括號括起來,參數(shù)之間用逗號分開,通過參數(shù)設(shè)置可以選擇設(shè)定該指標(biāo)的參數(shù),如果參數(shù)缺失則表示使用該指標(biāo)的默認(rèn)參數(shù)設(shè)置。 c、整個(gè)表達(dá)式用引號引在其中,除參數(shù)以外。 例如: “MACD.DEA”(26,12,9)表示引用MACD指標(biāo)的DEA指標(biāo)線,計(jì)算參數(shù)為26、12、9; “MACD”(26,12,9)表示該指標(biāo)的最后一條指標(biāo)線,計(jì)算參數(shù)是26、12、9; “MACD”表示該指標(biāo)的最后一條指標(biāo)線并且使用公式的默認(rèn)參數(shù)。 B、跨周期引用指標(biāo)數(shù)據(jù)(兼容老模式,不推薦) 在金字塔決策交易系統(tǒng)當(dāng)中允許使用不同分析周期上的指標(biāo)數(shù)據(jù),并且支持與自身長短不同的任意周期引用。 基本格式為: “指標(biāo).指標(biāo)線#周期(參數(shù))” 格式上只是比上面指標(biāo)引用多了一個(gè)周期設(shè)定其他內(nèi)容和方法一樣,在周期調(diào)用上存在以下對應(yīng)關(guān)系: MIN1:1分鐘 MIN5:5分鐘.....DAY:日線 WEEK:周線 MONTH:月線 YEAR:年線 如上圖所示,MIN1表示的分析周期為1分鐘,那么只能是在當(dāng)前周期為分筆成交圖時(shí)才可以實(shí)現(xiàn)對該周期指標(biāo)線數(shù)據(jù)的引用。例如:當(dāng)前周期為日線,那么在公式中使用“MACD.DEA#WEEK”(26,12,9)表示使用了當(dāng)天所在的本周的MACD指標(biāo)中的數(shù)據(jù)。 以上格式的擴(kuò)展格式為: “指標(biāo).指標(biāo)線##周期”(參數(shù)) 該格式比基本格式采用了不同的對齊方式,簡而言之,就是說“#”的格式調(diào)用的本周期所在的指標(biāo)數(shù)據(jù),那么“##”的格式則表示調(diào)用了前一種格式的前一周期的指標(biāo)數(shù)據(jù),舉上例而言,“MACD.DEF##WEEK”(26,12,9)表示的是從當(dāng)天看來的上一周的數(shù)據(jù),而基本格式就是當(dāng)天看來的本周的數(shù)據(jù)。 關(guān)于如何使用“#”來引用其他指標(biāo)周期問題的示例 1分鐘K線周期,您希望調(diào)用5分鐘周期K線中的收盤價(jià)(close),那么請按照下面步驟操作。 第一步:新建一個(gè)指標(biāo),命名為Y,在Y中寫入下面這句代碼:CC:CLOSE; 第二步:新建第二個(gè)指標(biāo),命名為T,在T中寫入下面代碼:AA:”Y.CC#MIN5”; 第三步:將指標(biāo)“T”運(yùn)行應(yīng)用于盤面,您將看到軟件在1分鐘K線圖中劃出一根5分鐘周期收盤價(jià)的線。 C、其他數(shù)據(jù)引用(功能有限,不推薦) 使用以下的格式可以在當(dāng)前的分析界面下引用大盤的數(shù)據(jù)或者其他個(gè)股的數(shù)據(jù)實(shí)現(xiàn)橫向上的對比, a、引用大盤數(shù)據(jù)引用大盤數(shù)據(jù)時(shí)使用下列函數(shù):INDEXC/INDEXV,等等! b、引用個(gè)股數(shù)據(jù)引用個(gè)股數(shù)據(jù)時(shí)使用下列格式:“品種代碼$數(shù)據(jù)”,在以上格式當(dāng)中調(diào)用CLOSE,VOL,AMOUNT等等!例如“000002$VOL”表示000002該股本周期的成交量,“SH000001$CLOSE”同樣也可以表示為上海大盤本周期的收盤價(jià),此時(shí)的大盤被視為一只個(gè)股。 D、Stkindi函數(shù)(推薦) 經(jīng)常編寫指標(biāo)的過程中,可能會需要使用另外一個(gè)指標(biāo)的特定的某些值,尤其是好幾個(gè)策略或指標(biāo)都要用到這些值時(shí),如果按照一般寫法,需要每個(gè)策略或指標(biāo)都重新編寫這個(gè)指標(biāo)。為了節(jié)省空間,減少這個(gè)重復(fù)工作,金字塔提供了模塊化編程,可將使用頻率比較高的某些特定的值集中在一個(gè)公用的模塊里,通過STKINDI函數(shù)來調(diào)用這些值。 下面先介紹一下STKINDI函數(shù),再通過一個(gè)簡單的示例來說明如何使用該函數(shù)來調(diào)用公共模塊里的值。 STKINDI函數(shù):引用任意品種任意周期的任意指標(biāo)輸出 函數(shù)格式:STKINDI(STKLABEL,INDINAME,CO,PERIOD[,N]) 各參數(shù)含義: STKLABEL指定品種代碼,如為空表示當(dāng)前品種 INDINAME為指標(biāo)公式調(diào)用 CO為坐標(biāo)軸類型 0交易日坐標(biāo) 1自然日 2交易交易時(shí)間 PERIOD為周期類型,有效值范圍為(0-19),如為-1表示當(dāng)前周期,0-19則依次表示: (0:分筆成交、1:1分鐘、2:5分鐘、3:15分鐘、4:30分鐘、5:60分鐘、 6:日、7:周、8:月、9:年、10:多日、11:多分鐘、12:多秒、 13:多小時(shí)、14:季度線、15:半年線、16:節(jié)氣線、17:3分鐘、18:10分鐘、19:多筆線) N為左右偏移周期個(gè)數(shù)(可選),0表示引用當(dāng)前數(shù)據(jù),小于0為引用之前數(shù)據(jù),大于0為引用之后數(shù)據(jù) 例如: STKINDI(,RSI.RSI1,0,-1); //----計(jì)算當(dāng)前品種當(dāng)前周期RSI指標(biāo)的RST1指標(biāo)線的值 //其中第1個(gè)參數(shù)為空表示當(dāng)前品種 //第4個(gè)參數(shù)為-1表示當(dāng)前周期 STKINDI(SH600000,RSI,0,6,-1); //----引用昨日SH市場600000品種日線的上一周期RSI指標(biāo)的最后—條指標(biāo)線,計(jì)算參數(shù)使用公式的默認(rèn)參數(shù) 若參數(shù)為數(shù)字變量,想要改變原指標(biāo)的參數(shù),那么需要有個(gè)字符串轉(zhuǎn)換的過程。 示例如下: s:=5; m:=NUMTOSTR(s,0);//NUMTOSTR函數(shù)將數(shù)字轉(zhuǎn)換到字符串,再帶入變量中 vola:stkindi(if10,ATR.ATR(&m&),0,6,-1); //-----計(jì)算if10日線的上一周期ATR指標(biāo)ATR指標(biāo)線數(shù)據(jù),計(jì)算參數(shù)為5。 示例1: 在橡膠RU05的1分鐘的圖里,看銅CU11的5分鐘的K線圖里,最近20個(gè)周期內(nèi)的MACD指標(biāo)中的DIFF的最高值 第一步:新建一個(gè)指標(biāo),命名為YMACD,在該指標(biāo)中寫入下面代碼(注意這里公共的值是指標(biāo)線(只使用冒號),如果使用冒號加等號,指標(biāo)線就會變成賦值): DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA), COLORSTICK; diff_max:hhv(DIFF,20);// 使用的公共值:近20個(gè)周期內(nèi)的MACD指標(biāo)中的DIFF的最高值--切記:此處為指標(biāo)線。 第二步:新建第二個(gè)指標(biāo)或策略,命名為TEST1,在TEST1中寫入下面代碼: DIFF20:stkindi(SQCU11,YMACD.diff_max,0,2,-1); //取CU115分鐘K線上一周期的前20個(gè)周期內(nèi)的DIFF的最高值 //其中SQCU11可省去市場SQ,略寫為CU11 其中SQ(上海期貨交易所)為市場代碼,各個(gè)市場對應(yīng)的內(nèi)部代碼可在“工具—市場與板塊”—市場里查看到,合約所在市場可以省略不寫,如SQCU11—省略市場即為CU11。 特別注意: i. 金字塔的在用戶翻看一個(gè)品種時(shí)是可以自動(dòng)補(bǔ)數(shù)據(jù)的,但是無法自動(dòng)補(bǔ)被引用品種的或者該品種不同周期的數(shù)據(jù),在首次使用金字塔或者在不確定被引用數(shù)據(jù)是否齊全時(shí),請手工進(jìn)行數(shù)據(jù)補(bǔ)充工作,手工補(bǔ)充數(shù)據(jù)方法:http://www.weistock.com/download/receivedata.jpg。您也可以先瀏覽一下該品種的對應(yīng)周期K線數(shù)據(jù)是否完整。 如果是開盤后才連上服務(wù)器,軟件一打開,就先翻看所需合約要引用的K線數(shù)據(jù)—如5分鐘K線數(shù)據(jù).以保證對應(yīng)合約所在周期數(shù)據(jù)的完整性;盤中,只要服務(wù)器是一直連接良好的,對應(yīng)周期數(shù)據(jù)就是齊全的. ii. 小周期調(diào)用大周期會存在未來數(shù)據(jù)問題,導(dǎo)致信號不固定。 例如:被調(diào)用指標(biāo)MA均線 ma1:=ma(c,5); ma2:=ma(c,10); ma3:=ma(c,15); 在股指1分鐘周期上調(diào)用5分鐘的MA均線 調(diào)用公式 M5:STKINDI(‘’,‘MA.MA1’,0,2) 因?yàn)?個(gè)1分鐘走完才是1個(gè)5分鐘周期,close盤中是最新價(jià),5分鐘走完即為5分鐘的收盤價(jià),這是時(shí)候在1分鐘周期上M5的值其實(shí)是不固定的,導(dǎo)致當(dāng)時(shí)和走完后的MA1的值存在明顯差異,從而導(dǎo)致信號漂移,及我們經(jīng)常提到的未來問題。 提示 當(dāng)存在小引大的時(shí)候建議用戶調(diào)用上一周期, 例如M5:STKINDI(‘’,‘MA.MA1’,0,2,-1); 或者不要引用close的平今,而選擇固定性的HIGH,LOW這種價(jià)格,總之來說要做下變通。 3.11 模塊化編程 在策略開發(fā)過程中,我們經(jīng)常在不同的策略或指標(biāo)中要使用相同的某部分代碼。每次碰到這種情況,我們只能重復(fù)抒寫或復(fù)制、黏貼。 那么模塊化編程就能徹底的處理您的困擾 比如我們編寫了一個(gè)指標(biāo)命名為MOKUAI01 MOKUAI01指標(biāo)代碼為: A1:MA(C,5); B1:A1/C; 那么如果再編寫新的策略中要用到MOKUAI01中相同的運(yùn)行過程。我們只需寫#MOKUAI01.B1#就可替代上述2行代碼 當(dāng)我們在引用的模塊中存在參數(shù),那么參數(shù)是怎么傳遞的呢! 比如MOKUAI01指標(biāo)代碼為: INPUT:P(5,1,10,1); A1:MA(C,P); B1:A1/C; 我們只需寫#MOKUAI01,B1(7)# 就可代替上述2行代碼,并且定義參數(shù)P的值為7。 示例1 我們編寫一個(gè)MACD指標(biāo),指標(biāo)命名為MACD MACD指標(biāo)源碼為: INPUT:S(12,5,30,3),P(26,20,40,2),M(9,2,20,2); DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD1 :=2*(DIFF-DEA); 我們再編寫另外一個(gè)策略Test Test的指標(biāo)源碼為: INPUT:S(15,5,30,3),P(30,20,40,2),M(10,2,20,2); DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD1 :=2*(DIFF-DEA); 金叉:CROSS(MACD1,0); 死叉:CROSS(0,MACD1); DRAWTEXT(金叉,HIGH,‘要漲啦,開多’); DRAWTEXT(死叉,LOW,‘要跌啦,平多’); 使用模塊化編程,策略Test源碼如下 KK:#MACD.MACD1(15,30,10)#; 金叉:CROSS(KK,0); 死叉:CROSS(0,KK); DRAWTEXT(金叉,HIGH,‘要漲啦,開多’); DRAWTEXT(死叉,LOW,‘要跌啦,平多’); 小提示 簡單的說,模塊化編程,就是用戶通過上面的引用方式,軟件自動(dòng)幫你去粘貼需要引用的代碼,也就是所謂的模塊化。其目的是讓用戶的代碼更簡潔,更易維護(hù) 優(yōu)點(diǎn):比下面將要說明的跨周期指標(biāo)引用更加節(jié)省內(nèi)存,效率高。且易于統(tǒng)一管理 缺點(diǎn):只能模塊化替代運(yùn)算過程,無法支持一些跨周期的引用 3.12 指標(biāo)編寫范例 本章節(jié),我們將練習(xí)上述知識點(diǎn),實(shí)際編寫幾個(gè)常見指標(biāo)。 A、同圖繪制多條指標(biāo)線 例一:同圖繪制5日、10日、20日、和60日均線 指標(biāo)原理:移動(dòng)平均線(MA)是將一段時(shí)間的股票價(jià)格用數(shù)理統(tǒng)計(jì)的方法加以平均,再將這些平均價(jià)標(biāo)于圖上并用線連接起來即可。它可以用來觀察股價(jià)的趨勢。其中,一段時(shí)間常使用的有3日、6日、10日、12日、24日、30日等。移動(dòng)平均線可以用來確定這段時(shí)間持股的平均成本并使股民能據(jù)此判斷行情。 計(jì)算方法 N日移動(dòng)平均線=N日收市價(jià)之和/N 編寫要點(diǎn): 均線指標(biāo)是求股票收市價(jià)的移動(dòng)平均線,從金字塔決策交易系統(tǒng)函數(shù)集合到,函數(shù)CLOSE的功能是求當(dāng)日收市價(jià),函數(shù)MA(X,N)的功能是求X的N日移動(dòng)平均線,所以10日均線指標(biāo)的公式這樣寫:MA(CLOSE,10) 上面兩個(gè)例子都是在一個(gè)圖上只繪一條指標(biāo)線如果您想在同一個(gè)圖上繪多條指標(biāo)線,請看下圖,做起來非常簡單,您只需用分號將各指標(biāo)公式隔開就行了,公式這樣寫: MA(CLOSE,5); MA(CLOSE,10); MA(CLOSE,20); MA(CLOSE,60); 這個(gè)公式內(nèi)部包含四個(gè)小公式,小公式間以分號隔開,我們稱這種公式為組合公式,可同圖繪制多達(dá)16條指標(biāo)線,我們可以為每一條指標(biāo)線取一個(gè)名字,這樣就可以在圖上區(qū)分它們。具體方法是在指標(biāo)公式前寫上名稱并加一個(gè)冒號. B、函數(shù)的加減- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 金字塔 決策 交易系統(tǒng) 初級教程 2016 新版
鏈接地址:http://www.820124.com/p-10759572.html