用以圖表顯示的交易系統(tǒng)和后臺(tái)程式化交易的交易指令函數(shù),參數(shù)有明顯的不同,用戶不能簡(jiǎn)單的將BUY函數(shù)加個(gè)T就可以直接后臺(tái)交易,使用前應(yīng)該將鼠標(biāo)放在TBUY函數(shù)上認(rèn)真看看函數(shù)說明。
=====================================================
有關(guān)公式函數(shù)參數(shù)默認(rèn)值的使用說明
拿后臺(tái)程式化交易開多指令比如:tbuy(zd,1,mkt,'003028',hy); 初學(xué)者容易犯這樣一個(gè)錯(cuò)誤,以為只要使用了mkt指令后,價(jià)格就不需要填寫了,這是錯(cuò)誤的方法,幾乎所有的編程語言函數(shù)缺省值都是中間不能空缺的,只能從后面空缺。
tbuy(zd,1,mkt)這樣是沒問題的,后面的參數(shù)金字塔將自行按默認(rèn)處理。
tbuy(zd,1,lmt,c,0) 也是沒問題的,后面的賬號(hào)和品種均按默認(rèn)處理。
tbuy(zd,1,mkt,'003028',hy) 但是這樣就不行,因?yàn)橹虚g的兩個(gè)委托價(jià)格沒有填寫,金字塔會(huì)吧'003028',hy當(dāng)做價(jià)格來處理,勢(shì)必造成委托結(jié)果與你希望的不符。
tbuy(zd,1,mkt,0,0,'003028',hy) ; 這樣經(jīng)過改寫,就沒問題了。
=====================================================
有關(guān)后臺(tái)程式化交易使用的注意事項(xiàng)
后臺(tái)程式化交易由于用戶無法直接在圖表上看到信號(hào)的整個(gè)出現(xiàn)過程,故對(duì)用戶的公式編寫水平有一定的要求,用戶需要對(duì)金字塔的后臺(tái)交易系統(tǒng)工作機(jī)理有比較深的了解,并且要對(duì)自己的公式系統(tǒng)有清晰的認(rèn)識(shí),這樣一旦遇到問題也能及時(shí)找到問題的原因。強(qiáng)烈建議用戶,只有具有比較熟練的使用圖表公式編寫基礎(chǔ)之后再來使用后臺(tái)程式化交易!后臺(tái)程式化交易的調(diào)試工作非常重要,請(qǐng)參考下面有關(guān)的專門介紹。
如果你對(duì)金字塔的后臺(tái) 程式化交易還不了解,那么建議用戶仔細(xì)閱讀
http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=370 金字塔公式編寫與程式化交易設(shè)計(jì)指南
http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=124 金字塔程式化交易簡(jiǎn)要教程
=====================================================
金字塔公式編寫調(diào)試
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1
=====================================================
有關(guān)平倉(cāng)反手的模型
input:man(26,2,200);
ma1:=ma(close,man);
ccm:=cross(close,ma1);
cmc:=cross(ma1,close);
資產(chǎn):ASSET,LINETHICK0;
可用現(xiàn)金:CASH(0),LINETHICK0;
持倉(cāng):HOLDING,LINETHICK0;
//順序必須主要需要根據(jù)倉(cāng)位先平后開的原則
if ccm then
begin
//平空開多
sellshort(holding<0 and ccm,0);
buy(holding<=0,1);
end
if cmc then
begin
//平多開空
sell(holding>0 and cmc,0);
buyshort(holding>=0,1);
end
如果是傳統(tǒng)的ENTERLONG交易信號(hào),同樣需要先平后開的原則
EXITLONG: cross(A2,AO) OR B2>0;
EXITSHORT: CROSS(AO,A2) OR B2>0;
ENTERLONG: cross(AO,A2) AND B1=1;
ENTERSHORT: CROSS(A2,AO) AND B1=1;
如果用戶帳戶資金不足或者希望順序成交,可以使用ORDERQUEUE指令
EXITLONG: cross(A2,AO) OR B2>0, ORDERQUEUE;
==================================================
由于金字塔不鼓勵(lì)使用未來函數(shù),所以
文華的:
NN1:=BARSLAST(DATE<>REFX(DATE,1));
NN:=MAX(NN1,1);
在金字塔中用這一條指令替換
NN:=barslast(DATE<>REF(DATE,1))+1;
=======================================
關(guān)于函數(shù)不能在控制語句之內(nèi)被引用的問題
答:請(qǐng)參閱專貼介紹 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130
==================================================
TIME 和 CURRENTTIME 的區(qū)別
很多用戶需要在一個(gè)精確的時(shí)間內(nèi)做某些下單動(dòng)作,比如開盤后5分鐘下單,收盤前1分鐘平倉(cāng),這種時(shí)候不能使用TIME函數(shù)做時(shí)間點(diǎn)判斷,因?yàn)?/span>TIME是取的周期時(shí)間,金字塔在生成每根K線時(shí)為了規(guī)范化時(shí)間,都將時(shí)間做了一定程度的修整,所以已經(jīng)不是嚴(yán)格的成交時(shí)間。如果用戶需要精確的時(shí)間做某些事情,那么必須使用CURRENTTIME,取用戶本地計(jì)算機(jī)時(shí)間來完成。為了保證時(shí)間準(zhǔn)確可靠,用戶應(yīng)該定期的校正您的本地時(shí)間,方法可在工具->選項(xiàng)->升級(jí)和時(shí)間 。
===================================================
對(duì)于最后一個(gè)周期才起作用的函數(shù),如果使用了全局變量進(jìn)行控制,千萬記得加上islastbar控制條件
variable:a=10;
debugout('a1=%.0f',a);
if a=10 then begin
debugout('a2=%.0f',a);
tbuy(1,1,mkt);
a:=6;
debugout('a3=%.0f',a);
end;
debugout('a4=%.0f',a);
上述公式將無法正常工作,因?yàn)?/span>variable聲明的變量是在整個(gè)計(jì)算周期內(nèi)的全局變量,對(duì)于tbuy和debugout函數(shù),他們都是在公式的最后的一個(gè)周期才執(zhí)行的函數(shù),所以將導(dǎo)致最后一個(gè)周期到來時(shí)a實(shí)際已經(jīng)等于6而不會(huì)去正確執(zhí)行開倉(cāng)語句。
解決辦法是 if a=10 and islastbar then begin 這樣加上最后周期判斷,或者去掉 variable 變量聲明,讓a變?yōu)橐粋€(gè)周期之內(nèi)的變量
===============================================
對(duì)于公式中經(jīng)常引用到的市場(chǎng)代碼,比如上海證券市場(chǎng)是'SH',具體每個(gè)市場(chǎng)的代碼在工具菜單->市場(chǎng)與板塊中,查看市場(chǎng)的代號(hào),設(shè)置和進(jìn)行管理.
=================================================
金字塔公式測(cè)試系統(tǒng),沒有測(cè)試結(jié)果的問題解決
1、確認(rèn)所測(cè)試品種的測(cè)試時(shí)間段的歷史數(shù)據(jù)齊全,若不起請(qǐng)?jiān)诠ぞ卟藛危费a(bǔ)充數(shù)據(jù)上補(bǔ)齊。2、在第二步的測(cè)試時(shí)間段確保時(shí)間正確。3、確保在第一步所選測(cè)試周期選擇正確,公式系統(tǒng)該周期未被禁用。4、確保第四步交易費(fèi)率設(shè)置合理,資金至少要能夠進(jìn)行必要的開倉(cāng)條件。該資金設(shè)置同樣在圖表做交易系統(tǒng)測(cè)試顯示時(shí)同樣應(yīng)該注意。
聯(lián)系客服