贴子已被锁定
用以图表显示的交易系统和后台程式化交易的交易指令函数,参数有明显的不同,用户不能简单的将BUY函数加个T就可以直接后台交易,使用前应该将鼠标放在TBUY函数上认真看看函数说明。
=====================================================
有关公式函数参数默认值的使用说明
拿后台程式化交易开多指令比如:tbuy(zd,1,mkt,'003028',hy); 初学者容易犯这样一个错误,以为只要使用了mkt指令后,价格就不需要填写了,这是错误的方法,几乎所有的编程语言函数缺省值都是中间不能空缺的,只能从后面空缺。
tbuy(zd,1,mkt)这样是没问题的,后面的参数金字塔将自行按默认处理。
tbuy(zd,1,lmt,c,0) 也是没问题的,后面的帐号和品种均按默认处理。
tbuy(zd,1,mkt,'003028',hy) 但是这样就不行,因为中间的两个委托价格没有填写,金字塔会吧'003028',hy当做价格来处理,势必造成委托结果与你希望的不符。
tbuy(zd,1,mkt,0,0,'003028',hy) ; 这样经过改写,就没问题了。
=====================================================
有关后台程式化交易使用的注意事项
后台程式化交易由于用户无法直接在图表上看到信号的整个出现过程,故对用户的公式编写水平有一定的要求,用户需要对金字塔的后台交易系统工作机理有比较深的了解,并且要对自己的公式系统有清晰的认识,这样一旦遇到问题也能及时找到问题的原因。强烈建议用户,只有具有比较熟练的使用图表公式编写基础之后再来使用后台程式化交易!后台程式化交易的调试工作非常重要,请参考下面有关的专门介绍。
如果你对金字塔的后台 程式化交易还不了解,那么建议用户仔细阅读
http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=370 金字塔公式编写与程式化交易设计指南
http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=124 金字塔程式化交易简要教程
=====================================================
金字塔公式编写调试
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1
=====================================================
有关平仓反手的模型
input:man(26,2,200);
ma1:=ma(close,man);
ccm:=cross(close,ma1);
cmc:=cross(ma1,close);
资产:ASSET,LINETHICK0;
可用现金:CASH(0),LINETHICK0;
持仓:HOLDING,LINETHICK0;
//顺序必须主要需要根据仓位先平后开的原则
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
如果是传统的ENTERLONG交易信号,同样需要先平后开的原则
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;
==================================================
由于金字塔不鼓励使用未来函数,所以
文华的:
NN1:=BARSLAST(DATE<>REFX(DATE,1));
NN:=MAX(NN1,1);
在金字塔中用这一条指令替换
NN:=barslast(DATE<>REF(DATE,1))+1;
=======================================
关于函数不能在控制语句之内被引用的问题
答:请参阅专贴介绍 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130
==================================================
TIME 和 CURRENTTIME 的区别
很多用户需要在一个精确的时间内做某些下单动作,比如开盘后5分钟下单,收盘前1分钟平仓,这种时候不能使用TIME函数做时间点判断,因为TIME是取的周期时间,金字塔在生成每根K线时为了规范化时间,都将时间做了一定程度的修整,所以已经不是严格的成交时间。如果用户需要精确的时间做某些事情,那么必须使用CURRENTTIME,取用户本地计算机时间来完成。为了保证时间准确可靠,用户应该定期的校正您的本地时间,方法可在工具->选项->升级和时间 。
===================================================
对于最后一个周期才起作用的函数,如果使用了全局变量进行控制,千万记得加上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);
上述公式将无法正常工作,因为variable声明的变量是在整个计算周期内的全局变量,对于tbuy和debugout函数,他们都是在公式的最后的一个周期才执行的函数,所以将导致最后一个周期到来时a实际已经等于6而不会去正确执行开仓语句。
解决办法是 if a=10 and islastbar then begin 这样加上最后周期判断,或者去掉 variable 变量声明,让a变为一个周期之内的变量
===============================================
对于公式中经常引用到的市场代码,比如上海证券市场是'SH',具体每个市场的代码在工具菜单->市场与板块中,查看市场的代号,设置和进行管理.
=================================================
金字塔公式测试系统,没有测试结果的问题解决
1、确认所测试品种的测试时间段的历史数据齐全,若不起请在工具菜单-》补充数据上补齐。2、在第二步的测试时间段确保时间正确。3、确保在第一步所选测试周期选择正确,公式系统该周期未被禁用。4、确保第四步交易费率设置合理,资金至少要能够进行必要的开仓条件。该资金设置同样在图表做交易系统测试显示时同样应该注意。
=========================================
文华模型转金字塔模型
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=210