金字塔各类问题解答大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

金字塔各类问题解答大全
目录
金字塔各类问题解答大全 (1)
一、公式问题汇总 (4)
1.1 DYNAINFO动态行情等常数函数的特别说明 (4)
1.2 跨周期调用3小时前的数据如何处理 (4)
1.3 公式测试,没有测试结果的问题原因及解决方法 (5)
1.4 如何使用全局变量variable和extgbdata (5)
1.5 如何手工设置EXTGBDATA全局变量初始化值 (7)
1.6 如何让指标中的关键字竖排 (7)
1.7 图表交易系统与后台交易系统的代码转换注意 (7)
1.8 关于未来函数的使用 (7)
1.9 函数不能在IF控制语句中被引用的原理和解决方案 (8)
1.10 有关公式函数参数默认值的使用说明 (9)
1.11 金字塔公式系统的编写调试DEBUGOUT 和DEBUGFILE (9)
1.12 有关平仓反手的模型的介绍 (10)
1.13 TIME 和CURRENTTIME 的区别 (11)
1.14 为什么我的交易系统有信号但没有委托或成交 (12)
1.15 有关后台自动交易THOLDING的使用 (12)
二、软件设置问题 (13)
2.1 如何可以看到多日分时线? (14)
2.2 如何在买卖盘报价界面处切换五档报价和一档报价? (14)
2.3 如何取消指标K线图中三角形买卖点提示? (14)
2.4 预警的铃铛变红色、绿色或者灰色是什么意思? (14)
2.5 如何开启或者关闭交易状态提示窗口 (15)
2.6 交易评测结果导出为txt或者excle格式 (16)
2.7 为什么使用金字塔会越来越慢 (16)
2.8 为什么金字塔的行情刷新有停顿 (16)
2.9 1分钟,5分钟,日线, 5分钟数据补齐后,15分钟,60分钟不需要继续补充 (17)
2.10 如何自定义指数 (17)
2.11 金字塔的手工补数据教程 (17)
2.12 金字塔如何下条件单 (20)
2.13 金字塔数据存储都有哪些限制 (20)
2.14 金字塔24小时全天不关机使用数据须知 (21)
2.15 有关使用综合平台做模拟交易测试的说明 (21)
2.16 自己设计的公式、框架、VBS代码等的存储位置?重装后如何配置 (21)
2.17 金字塔安装目录程序文件说明 (22)
2.18 怎么K线图变成了这些圆点,还有相应的成交量也是 (23)
2.19 安装金字塔后运行IE浏览网页时有时会出现“运行时错误,是否调试”提示!. 24 2.20 选项中的盘中延迟刷新1000毫秒有什么作用? (24)
2.21 为什么自动补的数据一分钟图上都是一条横线 (24)
2.22 本应是两位小数的品种只显示一位小数(舍去一位)? (24)
2.23 为什么有行情进来的情况下金字塔不显示数据 (24)
2.24 为何外汇还有美原油等品种的图表时间既不是本地时间又不是交易所时间 (25)
2.25 如何在金字塔下制作自己的看盘面板 (25)
2.26 图形上的灰色方块是做什么用的,如何关闭? (32)
2.27 叠加主图的交易系统公式会有白色的箭头,如何关闭 (32)
2.28 “插入”菜单中的“公式”和“叠加公式”有什么区别 (32)
2.29 测试以及优化结果的TTR,TTO文件如何打开 (32)
2.30 如何改变金字塔的图形背景颜色以及图形字体大小 (32)
2.31 如何在一台计算机上运行多个金字塔客户端 (32)
2.32 金字塔期货数据指数都代表什么,为什么不是实际的价格 (33)
2.33 软件启动显示更新系统注册表记录失败,请试用regedit (33)
2.34 为什么金字塔的外汇数据比MT4等其他软件有差异 (33)
2.35 等量K线为何不确定,一直在变化 (33)
2.36 如何设置等价K线的变动单位或者幅度 (34)
2.37 等价蜡烛线或者等量蜡烛线设置及“价格拆分比” (34)
2.38 系统恢复后金字塔无法使用如何解决 (34)
2.39 金字塔右下角的时间是取本地时间还是服务器时间 (35)
2.40 如何查看公式中经常引用到的市场代码 (35)
2.41 关于历史Tick数据和盘口数据的导入导出 (35)
三、高级编程问题 (35)
四、交易模型问题 (35)
五、金字塔系统术语解释 (36)
6.1 交易系统术语 (36)
按键CTRL+F 查找关键字搜索相关问题
此文档将不定期进行更新
一、公式问题汇总
1.1DYNAINFO动态行情等常数函数的特别说明
很多初学者搞不清楚常数与序列数值的区别,这里给大家介绍一下,常数函数不同于序列数值的函数,序列数值的函数,会在调用后返回一串连续的数据,而常数只会返回一个数字,对于DYNAINFO则会返回动态显示牌上的行情报价,即永远都是最新的报价,用户只要在公式系统做个简单的测试公式就能明显看出区别:
AA:CLOSE; //显示序列数值的收盘
BB:DYNAINFO(7);//返回常数的最新价
由图上就看到了序列数值是在图形上有个连续的曲线,而常数只是一个横线,他永远都是最新价;
因为常数函数尤其是DYNAINFO的特殊性,初学用户往往会在图表上的交易系统上使用他获取最新报价,这是不行的,因为图表上的交易系统需要有连续的交易信号往往才能正确工作,而使用DYNAINFO 函数就会破坏历史的信号生成,造成图表上的交易系统无法计算出正确的结果。

DYNAINFO往往都是在后台自动交易中使用的,因为后台自动交易通常只关心最后一个周期的信号,所以DYNAINFO不会对历史的计算结果产生过多的影响,但并不表明绝对没有影响,如果后台自动交易系统中使用DYNAINFO来计算比如MA等均价,也是无法正常工作的,所以用户必须要搞清楚常数和序列数值的区别,才能更好运用金字塔进行程式化公式的编写。

1.2跨周期调用3小时前的数据如何处理
这里有两种设置方法:
方法一:
需要做以下两步设置:
1、Ctrl+O弹出选项对话框,常规选项卡-》多小时线填3;
2、在所写公式中使用函数STKINDI:
例如:
STKINDI('','KDJ.K(9,3,3)',0,13);
方法二:
完全使用STKINDI函数来实现
例如:
STKINDI('','KDJ.K(9,3,3)',0,13,3);
以上两种方法都是代表“按照交易日坐标调用当前品种三小时前的KDJ中K值”,在图表的划线显示上其实就是把3小时前的K值划线到本周期位置,同理4小时前的K值划线到上一周期位置,依次类推。

1.3公式测试,没有测试结果的问题原因及解决方法
(1)、确认所测试品种的测试时间段的历史数据齐全,若不起请在工具菜单-》补充数据上补齐。

(2)、在第二步的测试时间段确保时间正确。

(3)、确保在第一步所选测试周期选择正确,公式系统该周期未被禁用。

(4)、确保第四步交易费率设置合理,资金至少要能够进行必要的开仓条件。

该资金设置同样在图表做交易系统测试显示时同样应该注意。

(5)、如果不能双向交易,问题是:只有“交易系统”属性得公式支持双向交易测试,其他类型得公式只能单向测试,测试模型在第5步有选项。

另外开打公式系统检查公式是否支持双向交易语句。

1.4如何使用全局变量variable和extgbdata
在公式中声明的变量不论是否在循环语句中,当每次执行一次循环检测时,都会被初始化一次,如果需要变量只初始化一次,那么需要使用全局变量数据库保存变量状态,请参考:“EXTGBDATA”,“EXTGBDATASET”两个函数的使用。

关于全局变量,全局变量有两种:
(1)一种是在公式里的,每次执行都被初始化一次的,这里的每次执行指的是每次金字塔执行公式系统的运行,即从1周期到BARCOUNT的过程。

比如一个变量这样声明:
variable:maxprofit=0;
它只会在第一个周期被初始化赋值为0,其他周期均不会对此变量进行赋值,比如:
variable:maxprofit=0;
IF BARPOS = 2 THEN
MAXPROFIT := 10;
IF BARPOS = 10 THEN
MAXPROFIT := 30;
AA:MAXPROFIT;
通过AA的显示曲线,用户应该会明白全局变量的用法和赋值规律。

另外请注意:
对于最后一个周期(图表上看就是最新的那个周期)才起作用的函数,如果使用了全局变量进行控制,千万记得加上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);
上面这个例子将无法得到下单买入的目的,因为当程序运行后,在第一周期TBUY并不执行,因为不是最新的周期,而此时a即被赋值为6,那么当程序一遍遍扫描运行到最新周期后,IF语句检测到a=6就不执行买操作了,所以您永远都不会有下单触发。

上述公式将无法正常工作,是因为variable声明的变量是在整个计算周期内的全局变量,对于tbuy和debugout函数,他们都是在公式的最后的一个周期(最新周期的数据才能用于下单或者输入调试结果)才执行的函数,所以将导致最后一个周期到来时a实际已经等于6而不会去正确执行开仓语句。

解决办法是:if a=10 and islastbar then begin 这样加上最后周期判断,以避免a被过早赋新值,或者去掉variable变量声明,让a变为一个周期之内的变量即可。

(2)金字塔的另一种全局变量,可以保存数据到全局变量数据库中,具体参考“EXTGBDATASET”和“ EXTGBDATA ”函数的调用,例如:
IF ISLASTBAR THEN
BEGIN
IF CURRENTTIME=090100 THEN
BEGIN
DATE1:=EXTGBDATA('THISOPEN');
IF DATE1 <> DATE THEN
BEGIN
SENDMAIL(1,'ABC@;XYZ@','警报','开盘了');
EXTGBDATASET('THISOPEN',DATE);
END
END
IF CURRENTTIME=145000 THEN
BEGIN
DATE2:=EXTGBDATA('THISCLOSE');
IF DATE2 <> DATE THEN
BEGIN
SENDMAIL(1,'ABC@;XYZ@','警报','收盘了');
EXTGBDATASET('THISCLOSE',DATE);
END
END END
本代码加全局变量数据库控制,出现警报后置今日的标志位,然后判断标志位控制当天在开盘和收盘时只发一次邮件预警。

1.5如何手工设置EXTGBDATA全局变量初始化值
工具-》数据-》全局变量,然后手工设置数字初始值,另外,第一次使用的全局变量,系统会自动默认为0。

1.6如何让指标中的关键字竖排
如图:
只需在每个字之后加上\n即可,比如上图的实现代码为:
DRAWTEXT(CLOSE/OPEN>1.01,LOW,'你\n们\n好\n');
1.7图表交易系统与后台交易系统的代码转换注意
用以图表显示的交易系统和后台程式化交易的交易指令函数,参数有明显的不同,用户不能简单的将BUY函数加个T就可以直接后台交易,使用前应该将鼠标放在TBUY函数上认真看看函数说明。

1.8关于未来函数的使用
由于金字塔不鼓励使用未来函数,所以
文华的:
NN1:=BARSLAST(DATE<>REFX(DATE,1));
NN:=MAX(NN1,1);
在金字塔中用这一条指令替换:
NN:=barslast(DATE<>REF(DATE,1))+1;
1.9函数不能在IF控制语句中被引用的原理和解决方案
简单说来就是具有统计性质的函数不可以在IF语句中后面的begin…end中不可以使用,可以在IF的判断过程中使用,但不可以在IF的执行过程中使用。

金字塔的公式系统由于支持IF语句的变量运行,所以像例如REF,MA等带有统计性质的函数无法直接使用在IF语句之中,因为带变量判断的IF语句会在某些周期无法调用这些统计函数而导致计算结果出现错误。

解决办法是将这些函数放到IF语句之外去执行。

目前有下列函数受此限制:
"RET","LOD","HOD","VALUEWHEN","MD","LAST","ANY","SETVAL","FILTERX","BARSCOUNT"," BARSLAST","BARSSINCE","COUNT","HHV","HHVBARS","LLV","LLVBARS", "MA","DMA","EMA","FILTER","REF","WMA","TMA","SMA","SUM","SUMBARS","CROSS","LONGCROS S","AVEDEV","DEVSQ","FORCAST","SLOPE","STD","STDP","VAR","VARP","SAR","BETA","COVAR"," ALL", "BACKSET","REFX","PARTLINE","SFILTER","RELATE","ALIKE","FILLRGN","NEWHBARS","NEWLBA RS"
例如:
input:atrn1(1,1,10),atrn2(5,2,20);
if atrn1<atrn2 and vol>20000 then
begin
TR1:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATRn_1:= MA(TR1,atrn1);
ATRn_2:= MA(TR1,atrn2);
end;
上述公式语句由于将REF和MA函数放在了IF语句之中,所以该公式无法正常编译。

解决办法是将他们放到IF语句之外去执行:
input:atrn1(1,1,10),atrn2(5,2,20);
A1:=REF(CLOSE,1);
MA1:=MA(TR1,atrn1);
MA2:=MA(TR1,atrn2);
if atrn1<atrn2 and vol>20000 then
begin
TR1:= MAX(MAX((HIGH-LOW),ABS(A1-HIGH)),ABS(A1-LOW));
ATRn_1:= MA1;
ATRn_2:= MA2;
end;
这样经过修正的公式就可以正常编译了,此外公式还将两次REF语句引用合并到一个语句中,这样做还可以提高公式系统的运行效率,因为REF统计语句只执行了一次。

1.10有关公式函数参数默认值的使用说明
拿后台程式化交易开多指令比如: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) ; 这样经过改写,就没问题了。

1.11金字塔公式系统的编写调试DEBUGOUT 和DEBUGFILE
(1)基于图表公式的调试
用户在编辑指标过程当中,避免不了进行中间调试,这涉及到遇到中间的变量在某个周期的数值等于多少。

比较简单的处理方法是在公式中加以例如:
A:B+C;
这种方式输出A变量的值在图表显示加以查看,但是有时刻意的将中间变量A输出到图表上显示会破坏图表显示格式,处理方法是在语句后加,LINETHICK0 控制符例如:
A:B+C,LINETHICK0;
强制只做变量在图表输出,但不做画线显示,然后用户在主图双击鼠标打开十字光标,查看A变量在指定周期的数值,进行调试。

(2)基于后台预警和程式化交易的调试
后台程式化交易由于用户无法直接在图表上看到信号的整个出现过程,故对用户的公式编写水平有一定的要求,用户需要对金字塔的后台交易系统工作机理有比较深的了解,并且要对自己的公式系统有清晰的认识,这样一旦遇到问题也能及时找到问题的原因。

如果你对金字塔的后台程式化交易还不了解,那么建议用户仔细阅读
/bbs/dispbbs.asp?boardid=2&Id=370 金字塔公式编写与程式化交易设计指南/bbs/dispbbs.asp?boardid=2&Id=124 金字塔程式化交易简要教程供后台调试金字塔提供了两个函数DEBUGOUT 和DEBUGFILE,其中DEBUGOUT是只针对程式化交易使用,在Ctrl+A预警设置窗口点击“监控”按钮后的程式化交易监控窗口,将显示出当前每个品种的监控过程以及下单动作,DEBUGOUT函数的描述如下:
DEBUGOUT(STR,NUM),STR为用户指定输出的一个行文字,NUM为用户指定的一个监控数字.
例如:DEBUGOUT('当前资产为%.2f', TASSET),将在程式化交易的监控部分打印出来"当前资产为1234.00",(假设当前的资产为1234)
"%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数.
用户最常见的问题就是,从图表上看明明应该某个时间段应该是开平仓了,但是结果确没有反应,后台并没有按预计发出交易指令,这种情况用户一般需要基于下面原因考虑:
1、用于交易的品种历史数据是否补齐,因为金字塔的历史数据是基于点播模式补充的,处于后台交易的品种如果缺失数据将会导致交易信号出现不可预料的情况。

2、用户所选择的交易系统周期是否合理,预警监控间隔时间是否合理,甚至用户是否选中了“允许程式化交易”复选框。

3、用户的TBUY等交易指令在多帐户交易时,市价委托是否指定了交易价格,常见错误是用户认为指定MKT指令后就不用填写价格了,应该填0补充。

比如:
MA3:MA(C,3);
MA5:MA(C,5);
BK:= CROSS(MA3,MA5);
BP:= CROSS(MA5,MA3);
TBUY(BK,1,LMT,C); //按照最新价限价开多
TSELL(BP,0,LMT,C);//按照最新价限价平多,0表示平掉全部持仓
这样一个简单的公式,是否出现交易信号,完全取觉于BK和BP这两个变量的计算结果,只要这样MA3:MA(C,3);
MA5:MA(C,5);
BK:= CROSS(MA3,MA5);
BP:= CROSS(MA5,MA3);
DEBUGOUT(‘BK=%.0f’,BK);
DEBUGOUT(‘BP=%.0f’,BP);
TBUY(BK,1,LMT,C); //按照最新价限价开多
TSELL(BP,0,LMT,C);//按照最新价限价平多,0表示平掉全部持仓
这样用户就可以一直在程式化交易监控窗口看到整个变量在不断循环中的值变化了,给用户带来了调试的机会。

但是上述的只表达BK,BP这两个信号可能并不能让用户最终找到问题原因,要找到,用户可能还得将MA3,MA5的变量值变化也打印输出,只要一直这样往上逐个筛选每个结果数据,就能最终找到问题的原因。

金字塔的另一个函数DEBUGFILE,可以将调试日志记录文件中,方便用户查询更长的历史记录,如果用户不习惯使用DEBUGOUT的窗口输出模式,可以使用DEBUGFILE做输出,使用其他文本工具打开。

另外,DEBUGFILE与DEBUGOUT不同之处在于他不限于一定运行在后台程式化交易环境中,DEBUGFILE描述如下:
用法:DEBUGFILE(PATH,STR,NUM),PATH为用户的本地计算机路径,STR为用户指定输出的一个行文字,NUM为用户指定的一个监控数字.
例如:DEBUGFILE('D:\TEST.TXT','当前资产为%.2f',1234),将在程式化交易的监控部分输出到
D:\TEST.TXT文件, "当前资产为1234.00","%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数。

1.12有关平仓反手的模型的介绍
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;
EXITSHORT: CROSS(AO,A2) OR B2>0,ORDERQUEUE;
ENTERLONG: cross(AO,A2) AND B1=1,ORDERQUEUE;
ENTERSHORT: CROSS(A2,AO) AND B1=1,ORDERQUEUE;
ORDERQUEUE指令适合所有交易指令,包括BUY,TBUY等
1.13TIME 和CURRENTTIME 的区别
很多用户需要在一个精确的时间内做某些下单动作,比如开盘后5分钟下单,收盘前1分钟平仓,这种时候不能使用TIME函数做时间点判断,因为TIME是取的周期时间,金字塔在生成每根K线时为了规范化时间,都将时间做了一定程度的修整,所以已经不是严格的成交时间。

如果用户需要精确的时间做某些事情,那么必须使用CURRENTTIME,取用户本地计算机时间来完成。

为了保证时间准确可靠,用户应该定期的校正您的本地时间,方法可在工具->选项->升级和时间。

1.14为什么我的交易系统有信号但没有委托或成交
为什么我的交易系统有信号了但是没有委托或者成交,我们以图表交易为重点介绍,对于初学用户,总结原因一般有如下几点:
1、用户需确认在出现交易信号之后金字塔是否有发出委托指令,用户可以在交易记录中查询到,如果有委托但未成交主要有两点,对于模拟交易,如果使用综合交易平台系统,由于目前并不完善,会经常造成即便市价下单也无法及时成交的情况。

对于实盘交易,用户需要在报单策略上多仔细考虑尽量的发出对价单来保证其成交。

2、如果有信号没有委托发出,请确认是否是下列几点造成
1)金字塔会在打开一个品种的图表后自动补充历史数据,确认是否是因为自动补数据造成的在交易时没有信号出现,但是补数据后历史上出现交易信号,但是用户通过查询历史成交记录觉得对不上了。

2)如果用户使用模拟交易,目前模拟交易得稳定性没有实盘交易好,所以如果盘中中断,那么会导致出现后错过时机。

3)对于无法发出平仓指令的情况,一般情况是因为开仓指令的委托单,没有及时成交,由于平仓信号发出时没有仓位,金字塔无法仓可平,等信号错过后,开仓单才成交,造成了看起来漏掉了一个平仓信号。

4)因为平仓反手不对称造成,最常见的是发出平仓信号后没有及时成交,但是反手单却提前成交了,造成了锁仓,导致金字塔判断仓位方向不确定会导致平仓单信号漏掉,对于反手情况,初学用户请尽量使用市价委托,并使用ORDERQUEUE指定顺序成交,否则就建议初学者尽量使用对价报单,尽量避免不成交的几率出现,否则初学用户就应该初期只使用单向交易,等日后能够熟练应用金字塔的追单功能后再使用挂单性质的反手交易手法。

5)如果使用固定时间间隔,间隔时间设置过大,造成信号在周期的末尾时出现,但正好在扫描的时间间隔之内,造成了出现信号金字塔没有及时的得知,对于此情况建议用户将间隔时间设为1秒6)如果用秒线或者分笔周期,请务必选择“高频”选项,避免行情快速变化时由于固定轮循最小1秒间隔带来的信号漏单。

7) 如果使用了ORDERQUEUE顺序下单指令,那么应该尽量的让其一次性成交,必要时请使用市价委托,因为一旦队列下单不成交撤单后,再次委托会将委托追单排到最后,导致后面的比如反手指令无法正确得到执行,造成信号漏单。

8)后台自动交易不要将THOLDING写在交易语句里比如TBUY(bk and THOLDING=0,1,MKT)。

9)使用固定轮循模式执行指标交易,由于最后一个K线没有最终形成,信号出现后下单,但是信号又消失,造成历史信号与持仓不吻合,这时建议大家使用K线走完模式,保证信号稳定。

1.15有关后台自动交易THOLDING的使用
初学者在使用后台自动交易时,通常认为将函数前简单加T就可以,但实际不行的,比如:
tSELL(bp and THOLDING>0,0,LMT,C);
tSELLSHORT(sp and THOLDING<0,0,LMT,C);
tBUY(bk and THOLDING=0,1,LMT,C);
tBUYSHORT(sk and THOLDING=0, 1,LMT,C);
在图表交易系统上这样改过来的代码
THOLDING与图表HOLDING最大的不同在于,THOLDING是与你真实持仓一致的函数,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,BUY执行过后立即变化。

由于我们前面的代码在执行了平仓操作后,THOLDING不会马上变成0,故会导致TBUY的THOLDING=0条件不被成立,导致没有反手信号。

正确的反手写法
if bp > 0 and THOLDING>0 then
begin
tSELL(1,0,MKT),ORDERQUEUE;
tBUYSHORT(1, 1,MKT),ORDERQUEUE;
end
if sp > 0 and THOLDING<0 then
begin
tSELLSHORT(1,0,MKT),ORDERQUEUE;
tBUY(1,1,MKT),ORDERQUEUE;
end
清注意上述代码使用了市价委托,如在CTP接口上模拟交易,请注意一定要在上期所品种下进行
二、软件设置问题
1.16如何可以看到多日分时线?
金字塔默认情况下关闭多日分时,这是基于效率方面的考虑,同时打开多日分时在盘中会因计算过大而导致反映迟钝图形刷新变慢等等情况。

工具->选项里,将分时图仅用当日数据勾去掉即可,金字塔的历史分时图走势是由历史1分钟数据生成,所以需要在选项-》维护里的1分钟保存设置调大,并且补充或者导入历史数据,但是注意分时数据如果超过3天将导致速度变慢。

1.17如何在买卖盘报价界面处切换五档报价和一档报价?
如图所示:
显示买卖盘方框的最右上角有两个按钮,一个是闪电手按钮,还有一个是切换简洁、复杂买卖盘的,点击按钮,画面会在一档、五档、10档画面循环切换。

1.18如何取消指标K线图中三角形买卖点提示?
比如当我们把海龟系统指标在加载后,在K线图中显示很多白色的小箭头,和很多小三角点,这样看起来很杂,怎样才能去除这白色的小箭头和小三角点,而保存开仓和平仓箭头呢?
Ctrl+O 选项-》视图-》显示未成交标志,打勾去掉即可。

1.19预警的铃铛变红色、绿色或者灰色是什么意思?
如图:
绿色:本地预警正常运行中;
红色:本地预警有新预警信息,请查看;
灰色:本地预警未启用。

1.20如何开启或者关闭交易状态提示窗口
在菜单栏“交易》下单设置”,勾选或不勾选“禁止自动显示交易状态窗口”,可以关闭或者开启自动显示功能,如下图所示:
菜单栏“交易”》交易状态,可以调出“交易状态”或者关闭“交易状态”。

1.21交易评测结果导出为txt或者excle格式
评测结果只可以导出为TXT格式,此格式可以使用excle正常打开!
1.22为什么使用金字塔会越来越慢
那是因为用户使用的数据月来越多的原因,金字塔默认1分钟数据是保存3天的,但是有的用户为了做交易测试等通常需要很长的历史1分钟或者5分钟数据,这样多的数据平时在图形上显示或者做预警以及程式化交易时会给CPU带来相当大的运算量。

解决办法是用户要把数据量控制在一定的数量之内,如果用户非要保存相当长的数据,那就就必须在选项里做数据的限制处理,在选项中的维护选项卡里将“内存使用”和“图形使用”设置到1000周期以下控制参与CPU的运算的数量以提高软件使用效率。

1.23为什么金字塔的行情刷新有停顿
在排除网络因素造成后,用户可以检查金字塔的主程序WINSTOCK.EXE的CPU占用百分比,如果持续超过20,那么就会因图表过多占用CPU资源而导致接收过来的行情数据处理能力下降。

这是初学者容易范的一个错误,屏幕开一堆指标,不管有用没用,开着没用的预警,等等都会造成金字塔的处理数据能力下降。

解决办法是:1减少图形参与的数据数量,2避免使用多框架窗口显示刷新,3优化公式系统,尽量避免使用带有未来函数性质的公式参与公式运算,4关闭或者减少后台预警交易的策略数量和监控品种数量,5关闭自定义数据自动刷新或者删除动态牌指标排序列。

相关文档
最新文档