金字塔各类问题解答大全

按键  CTRL+F  查找关键字搜索相关问题

此文档将不定期进行更新

目录

金字塔各类问题解答大全... 1

一、                  公式问题汇总... 6

1.1                     DYNAINFO动态行情等常数函数的特别说明... 6

1.2                     跨周期调用3小时前的数据如何处理... 6

1.3                     公式测试,没有测试结果的问题原因及解决方法... 7

1.4                     如何使用全局变量variableextgbdata. 7

1.5                     如何手工设置EXTGBDATA全局变量初始化值... 9

1.6                     如何让指标中的关键字竖排... 9

1.7                     图表交易系统与后台交易系统的代码转换注意... 9

1.8                     关于未来函数的使用... 9

1.9                     函数不能在IF控制语句中被引用的原理和解决方案... 10

1.10                   有关公式函数参数默认值的使用说明... 11

1.11                   金字塔公式系统的编写调试DEBUGOUT DEBUGFILE. 11

1.12                   有关平仓反手的模型的介绍... 12

1.13                   TIME CURRENTTIME 的区别... 13

1.14                   为什么我的交易系统有信号但没有委托或成交... 13

1.15                   有关后台自动交易THOLDING的使用... 14

1.16                   如何取得上次开仓时的周期及当时的最高价和最低价... 15

1.17                   关于如何使用“#”来引用其他指标周期问题的详细解释... 15

1.18                   在图表交易中使用tholding获得实际持仓的注意事项... 15

1.19                   在后台交易中使用tholding获得实际持仓的注意事项... 16

1.20                   关于tavgenterpriceavgenterprice区别的解释... 17

二、                  软件设置问题... 20

2.1                     如何可以看到多日分时线?... 20

2.2                     如何在买卖盘报价界面处切换五档报价和一档报价?... 20

2.3                     如何取消指标K线图中三角形买卖点提示?... 21

2.4                     预警的铃铛变红色、绿色或者灰色是什么意思?... 21

2.5                     如何开启或者关闭交易状态提示窗口... 21

2.6                     交易评测结果导出为txt或者excle格式... 22

2.7                     为什么使用金字塔会越来越慢... 22

2.8                     为什么金字塔的行情刷新有停顿... 23

2.9                     1分钟,5分钟,日线, 5分钟数据补齐后,15分钟,60分钟不需要继续补充... 23

2.10                   如何自定义指数... 23

2.11                   金字塔的手工补数据教程... 23

2.12                   金字塔如何下条件单... 26

2.13                   金字塔数据存储都有哪些限制... 26

2.14                   金字塔24小时全天不关机使用数据须知... 27

2.15                   有关使用综合平台做模拟交易测试的说明... 27

2.16                   自己设计的公式、框架、VBS代码等的存储位置?重装后如何配置... 27

2.17                   金字塔安装目录程序文件说明... 28

2.18                   怎么K线图变成了这些圆点,还有相应的成交量也是... 29

2.19                   安装金字塔后运行IE浏览网页时有时会出现运行时错误,是否调试提示!... 30

2.20                   选项中的盘中延迟刷新1000毫秒有什么作用?... 30

2.21                   为什么自动补的数据一分钟图上都是一条横线... 30

2.22                   本应是两位小数的品种只显示一位小数(舍去一位)?... 30

2.23                   为什么有行情进来的情况下金字塔不显示数据... 30

2.24                   为何外汇还有美原油等品种的图表时间既不是本地时间又不是交易所时间... 31

2.25                   如何在金字塔下制作自己的看盘面板... 31

2.26                   图形上的灰色方块是做什么用的,如何关闭?... 38

2.27                   叠加主图的交易系统公式会有白色的箭头,如何关闭... 38

2.28                   插入菜单中的公式叠加公式有什么区别... 38

2.29                   测试以及优化结果的TTR,TTO文件如何打开... 38

2.30                   如何改变金字塔的图形背景颜色以及图形字体大小... 38

2.31                   如何在一台计算机上运行多个金字塔客户端... 38

2.32                   金字塔期货数据指数都代表什么,为什么不是实际的价格... 39

2.33                   软件启动显示更新系统注册表记录失败,请试用regedit 39

2.34                   为什么金字塔的外汇数据比MT4等其他软件有差异... 39

2.35                   等量K线为何不确定,一直在变化... 39

2.36                   如何设置等价K线的变动单位或者幅度... 39

2.37                   等价蜡烛线或者等量蜡烛线设置及“价格拆分比”... 40

2.38                   系统恢复后金字塔无法使用如何解决... 40

2.39                   金字塔右下角的时间是取本地时间还是服务器时间... 40

2.40                   如何查看公式中经常引用到的市场代码... 41

2.41                   关于历史Tick数据和盘口数据的导入导出... 41

2.42                   如何设置默认启动界面... 41

2.43                   金字塔用银江接收不能收到上证指数... 41

2.44                   软件中的持仓量是单边还是双边?... 41

2.45                   是否支持第三方股票数据接口转发数据... 41

2.46                   金字塔是否支持多核... 42

2.47                   金字塔下的交易都支持哪些交易指令,有什么区别?... 42

2.48                   为何我的金字塔安装后无法正常运行,或者升级后不能使用... 42

2.49                   如何在标签栏中显示多个框架... 42

2.50                   如何用文本导入相应品种的数据?... 43

2.51                   金字塔服务器上保存多少周期(天)的数据?... 43

2.52                   关于图表交易中的小三角、箭头等符号的意义。... 44

2.53                   多帐号程序化交易为何只能交易当前活动帐号?... 45

2.54                   关于“自定义数据的使用”... 45

2.55                   如何关闭或者打开“信息地雷”... 47

2.56                   关于连续品种换月规则的说明... 48

2.57                   套利合约为何只能看到当日的K线?... 48

2.58                   关于双击主图下单的设置的注意事项... 48

2.59                   如何快速调用多分钟、多秒、多小时或者多日线周期... 48

2.60                   快捷键说明... 48

2.61                   金字塔客户端常用端口汇总... 52

2.62                   登录客户端不显示用户名密码输入界面... 52

2.63                   收盘作业功能是做什么的?不收盘有何影响?... 53

2.64                   为什么日线上的最高价在1分或者5分钟图上找不到?总比日线最高价低几个价位?    53

2.65                   为何无法登录交易帐号?... 53

2.66                   程序化交易中的固定轮询模式和走完K线模式的使用建议... 53

2.67                   多框架最多可以设置多少个窗格?... 55

2.68                   “节省内存模式”是什么意思?... 55

2.69                   金钻版远程指标调用的原理... 55

2.70                   多个本地预警条件(后台交易)是否调用多个线程?... 55

2.71                   程式化交易评测中的“参数优化”是否调用多个线程?... 55

2.72                   金字塔中的全局变量是否支持名字空间(变量分组)?... 56

2.73                   远程调用指标,若服务器指标改动,客户端是否实时显示?... 56

2.74                   IB外盘下单注意事项... 56

2.75                   为何外盘无法下单?... 56

2.76                   如何设置交易连线的颜色?... 57

2.77                   动态盘后中品种名称后面的数值表示什么?... 57

2.78                   自定义指标设置的表头列无法自动刷新或者刷新很慢... 58

2.79                   手工下条件单问题及解答... 58

2.80                   红色指标是什么意思?... 59

2.81                   为何持仓为零,在图表交易中系统仍然显示白色的平仓信号?... 59

三、                  高级编程问题... 61

3.1                     数据库操作实例... 61

3.2                     用自己创建的公式替换主图的K线指标... 61

3.3                     如何使用VBA打开一个外部记事本?... 62

3.4                     QQ客户端或QQ群发送指定消息字符串... 62

四、                  交易(分析)模型问题... 63

4.1                     实现自动选择主力合约交易的代码举例(手动控制换月)... 63

4.2                     均线类趋势指标完整代码举例(一个不错的五彩K线)... 64

4.3                     回落百分比(千分比)止损代码举例... 64

4.4                     图表日内交易模型(模板)举例... 65

4.5                     止损策略代码举例演示... 67

4.6                     落影模型——波段股指模型代码举例... 68

4.7                     落影模型——移动止损模型代码举例... 69

4.8                     落影模型——布林通道+MA+diff模型代码举例... 70

4.9                     判断持仓多空方向及持仓量,根据策略调整持仓代码举例... 71

4.10                   虚拟五档行情代码举例... 72

4.11                   完整的包括止损,移动止赢交易范例代码举例... 75

4.12                   下套利单模型代码举例... 76

4.13                   套利之公式运用-套利品种构建步骤及代码举例... 76

4.14                   交易系统中移动止损代码举例... 77

4.15                   实现延迟信号确认代码举例... 78

4.16                   保本平仓范例... 80

4.17                   将交易明细输出到数据库... 80

4.18                   只显示最近5K线... 81

4.19                   当日某笔持仓时间超过N分钟自动平仓算法... 82

五、                  金字塔系统术语解释... 83

5.1                     公式测试系统术语-摘要... 83

5.2                     公式测试系统术语-报告... 85

六、                  金字塔客户端常见故障说明... 89

6.1                     指标编辑时点测试报“无法判断该表达式的意图”... 89

6.2                     客户端报“新建分钟线缓冲区时失败!系统此时不能保存分笔成交数据!”... 89

6.3                     交易下单时报“已撤单报单被拒绝当前状态禁止此项操作”... 90

七、                  金字塔常用网址... 90

 

 


按键  CTRL+F  查找关键字搜索相关问题

此文档将不定期进行更新

一、      公式问题汇总

1.1  DYNAINFO动态行情等常数函数的特别说明

很多初学者搞不清楚常数与序列数值的区别,这里给大家介绍一下,常数函数不同于序列数值的函数,序列数值的函数,会在调用后返回一串连续的数据,而常数只会返回一个数字,对于DYNAINFO则会返回动态显示牌上的行情报价,即永远都是最新的报价,用户只要在公式系统做个简单的测试公式就能明显看出区别:

 

AA:CLOSE; //显示序列数值的收盘

BB:DYNAINFO(7);//返回常数的最新价

 

 

由图上就看到了序列数值是在图形上有个连续的曲线,而常数只是一个横线,他永远都是最新价;

因为常数函数尤其是DYNAINFO的特殊性,初学用户往往会在图表上的交易系统上使用他获取最新报价,这是不行的,因为图表上的交易系统需要有连续的交易信号往往才能正确工作,而使用DYNAINFO函数就会破坏历史的信号生成,造成图表上的交易系统无法计算出正确的结果。

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

1.2  跨周期调用3小时前的数据如何处理

这里有两种设置方法:

方法一:

需要做以下两步设置:

1Ctrl+O弹出选项对话框,常规选项卡 -》多小时线填3

2、在所写公式中使用函数STKINDI

例如:

STKINDI('','KDJ.K(9,3,3)',0,13);

 

方法二:

   完全使用STKINDI函数来实现

例如:

STKINDI('','KDJ.K(9,3,3)',0,13,3);

 

    以上两种方法都是代表“按照交易日坐标调用当前品种三小时前的KDJK值”,在图表的划线显示上其实就是把3小时前的K值划线到本周期位置,同理4小时前的K值划线到上一周期位置,依次类推。

1.3  公式测试,没有测试结果的问题原因及解决方法

1)、确认所测试品种的测试时间段的历史数据齐全,若不起请在工具菜单-》补充数据上补齐。

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

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

4)、确保第四步交易费率设置合理,资金至少要能够进行必要的开仓条件。该资金设置同样在图表做交易系统测试显示时同样应该注意。

5)、如果不能双向交易,问题是:只有交易系统属性得公式支持双向交易测试,其他类型得公式只能单向测试,测试模型在第5步有选项。另外开打公式系统检查公式是否支持双向交易语句。

1.4  如何使用全局变量variableextgbdata

在公式中声明的变量不论是否在循环语句中,当每次执行一次循环检测时,都会被初始化一次,如果需要变量只初始化一次,那么需要使用全局变量数据库保存变量状态,请参考:“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声明的变量是在整个计算周期内的全局变量,对于tbuydebugout函数,他们都是在公式的最后的一个周期(最新周期的数据才能用于下单或者输入调试结果)才执行的函数,所以将导致最后一个周期到来时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@SINA.COM;XYZ@WEISTOCK.COM','
警报','开盘了');
   EXTGBDATASET('THISOPEN',DATE);
  END
 END
  
 IF CURRENTTIME=145000 THEN
 BEGIN
  DATE2:=EXTGBDATA('THISCLOSE');
  IF DATE2 <> DATE THEN
  BEGIN
   SENDMAIL(1,'ABC@SINA.COM;XYZ@WEISTOCK.COM','
警报','收盘了');
   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","LONGCROSS","AVEDEV","DEVSQ","FORCAST","SLOPE","STD","STDP","VAR","VARP","SAR","BETA","COVAR","ALL",
"BACKSET","REFX","PARTLINE","SFILTER","RELATE","ALIKE","FILLRGN","NEWHBARS","NEWLBARS"

 

例如:

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;

 

上述公式语句由于将REFMA函数放在了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)基于后台预警和程式化交易的调试

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

如果你对金字塔的后台 程式化交易还不了解,那么建议用户仔细阅读

http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=370  金字塔公式编写与程式化交易设计指南

http://www.weistock.com/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表示平掉全部持仓

这样一个简单的公式,是否出现交易信号,完全取觉于BKBP这两个变量的计算结果,只要这样

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做输出,使用其他文本工具打开。另外,DEBUGFILEDEBUGOUT不同之处在于他不限于一定运行在后台程式化交易环境中,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.13  TIME 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,故会导致TBUYTHOLDING0条件不被成立,导致没有反手信号。

正确的反手写法

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  如何取得上次开仓时的周期及当时的最高价和最低价

MA1:=MA(C,5);
MA2:=MA(C,10);
BUY(CROSS(MA1,MA2),1);
SELL(CROSS(MA2,MA1),1);

CYC:=ENTERBARS;
//
下面代码得到最高和最低价
HPRICE:IF(CYC>0 and CYC < 20000,HHV(H,CYC),0),linethick0;
LPRICE:IF(CYC>0 AND CYC < 20000,LLV(L,CYC),0),linethick0;

1.17  关于如何使用“#”来引用其他指标周期问题的详细解释

要使用这个“#”来起到引用其他周期效果,您必须新建两个指标,下面我通过一个简单的例子来说明,相信看过之后您一定就明白了。

比如,您当前所用的是1分钟K线周期,您希望调用5分钟周期K线中的收盘价(close),那么请按照下面步骤操作。

第一步:新建一个指标,命名为Y,在Y中写入下面这句代码(注意这里要不要使用冒号,否则指标线会变成赋值):

CC:CLOSE;

第二步:新建第二个指标,命名为TEST,在TEST中写入下面代码:

AA:”Y.CC#MIN5”;

第三步:将指标“TEST”运行应用于盘面,您将看到软件在1分钟K线图中划出一根5分钟周期收盘价的线。

1.18  在图表交易中使用tholding获得实际持仓的注意事项

在图表交易中使用tholding获得实际持仓时,要注意,需要将盘面正在看的品种设置成你账户里实际有持仓的品种,才能用下面代码例子在图表中打印出该品种的实际持仓。

持仓:tholding;

1.19  在后台交易中使用tholding获得实际持仓的注意事项

在后台程序化交易中使用tholding获得实际持仓时,要注意,需要交易账户中实际含有持仓的品种添加到后台程序化交易监控的列表中才可以取得实际持仓。(其他后台的类似函数同理设置)

如下图例子所示设置才能正确输出下面代码中的持仓:

持仓:tholding;

DEBUGOUT('持仓:%.2f',持仓);

 

1.20  关于tavgenterpriceavgenterprice区别的解释

tavgenterprice是获得当前账户的实际持仓均价,注意是真实的持仓均价。

(1)     本函数可以在图中打印出来数值(注意:使用图表输出的方式,应调整实际持仓品种为当前所看品种才能显示正确持仓,详见:“在图表交易中使用tholding获得实际持仓的注意事项);

(2)     本函数也可以使用后台交易监控程序使用debugout或者debugfile等函数来输出数值(注意:使用后台输出时,应把实际持仓的品种添加如后台监控列表中,方法详见“1.19 在后台交易中使用tholding获得实际持仓的注意事项”);

avgenterprice是在图表指标中显示买入持仓均价,注意这个是模拟的持仓均价,只所以叫模拟的是因为他不是取的账户里真实的持仓,它只是根据信号和数据的多少以及费率的设置来虚拟出来的一个持仓,如下图所示:

由此带来一个问题需要大家注意:

avgenterprice由于是虚拟出来的数值,那么它有可能会因为K线数据的增多而导致临近当前真实周期的时候不再开仓了,这往往是由于上图中初始资金设置比较小而且您所使用的指标是一个亏损指标,那么模拟到后期的时候,您的虚拟资金已经亏光了,所以就不再发出信号标识了,您可以在指标中加入资金曲线,就会一目了然了。另外,由于是模拟的,那么avgenterprice可以有ref的取值。

Tavgenterprice是真实持仓均价,它是取的交易系统里的数据,所以tavgenterprice是不能够取ref运算的,因为交易系统并不记录上一次的持仓均价。如果您需要以前的交易记录,您可以使用全局变量的方式来记录并调用,这里就不再详解了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、      软件设置问题

2.1  如何可以看到多日分时线?

金字塔默认情况下关闭多日分时,这是基于效率方面的考虑,同时打开多日分时在盘中会因计算过大而导致反映迟钝图形刷新变慢等等情况。工具->选项里,将分时图仅用当日数据勾去掉即可,金字塔的历史分时图走势是由历史1分钟数据生成,所以需要在选项-》维护里的1分钟保存设置调大,并且补充或者导入历史数据,但是注意分时数据如果超过3天将导致速度变慢。

2.2  如何在买卖盘报价界面处切换五档报价和一档报价?

如图所示:

显示买卖盘方框的最右上角有两个按钮,一个是闪电手按钮,还有一个是切换简洁、复杂买卖盘的,点击按钮,画面会在一档、五档、10档画面循环切换。

2.3  如何取消指标K线图中三角形买卖点提示?

比如当我们把海龟系统指标在加载后,在K线图中显示很多白色的小箭头,和很多小三角点,这样看起来很杂,怎样才能去除这白色的小箭头和小三角点,而保存开仓和平仓箭头呢?

Ctrl+O 选项-》视图-》显示未成交标志,打勾去掉即可。

2.4  预警的铃铛变红色、绿色或者灰色是什么意思?

如图:    

 

绿色:本地预警正常运行中;

红色:本地预警有新预警信息,请查看;

灰色:本地预警未启用。

2.5  如何开启或者关闭交易状态提示窗口

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

 

菜单栏“交易”》交易状态,可以调出“交易状态”或者关闭“交易状态”。

 

2.6  交易评测结果导出为txt或者excle格式

评测结果只可以导出为TXT格式,此格式可以使用excle正常打开!

2.7  为什么使用金字塔会越来越慢

那是因为用户使用的数据月来越多的原因,金字塔默认1分钟数据是保存3天的,但是有的用户为了做交易测试等通常需要很长的历史1分钟或者5分钟数据,这样多的数据平时在图形上显示或者做预警以及程式化交易时会给CPU带来相当大的运算量。解决办法是用户要把数据量控制在一定的数量之内,如果用户非要保存相当长的数据,那就就必须在选项里做数据的限制处理,在选项中的维护选项卡里将内存使用图形使用设置到1000周期以下控制参与CPU的运算的数量以提高软件使用效率。

2.8  为什么金字塔的行情刷新有停顿

在排除网络因素造成后,用户可以检查金字塔的主程序WINSTOCK.EXECPU占用百分比,如果持续超过20,那么就会因图表过多占用CPU资源而导致接收过来的行情数据处理能力下降。这是初学者容易范的一个错误,屏幕开一堆指标,不管有用没用,开着没用的预警,等等都会造成金字塔的处理数据能力下降。解决办法是:1减少图形参与的数据数量,2避免使用多框架窗口显示刷新,3优化公式系统,尽量避免使用带有未来函数性质的公式参与公式运算,4关闭或者减少后台预警交易的策略数量和监控品种数量,5关闭自定义数据自动刷新或者删除动态牌指标排序列。

2.9  1分钟,5分钟,日线, 5分钟数据补齐后,15分钟,60分钟不需要继续补充

金字塔的历史数据补充采取点播模式,即补充当前图表打开的品种,系统会自动判断你上一次登陆数据与当前最新数据差多少,然后自动补最后这一段的,但是如果您是中间数据缺失,那么自动补数据功能就无效了,您就需要手工来补。自动补数据功能仅是补充您所图表上打开的品种,没有打开的则不会去补充,如果您需要全部的品种数据都齐全,那么只能通过手工补充数据。15分,60分的周期数据是由5分钟生成的,自定义分钟周期取决于您所使用的周期是否是5的整数倍,是的话取5分钟,否则取1分钟。

金字塔的基础数据是”分笔成交数据、1分钟、5分钟、日线数据“,其他周期类型的数据都是根据这四种数据计算得来,因此您只需要下载这四种基础数据。

2.10  如何自定义指数

可先点击【查看】---【管理面板】---【板块】---【自定义指数】--- 点击板块指数套利指数,再在板块指数套利指数处点击鼠标右键,选新建板块指数新建套利指数只要根据您的需要建立了相应的指数后,并刷新,就能显示出来

2.11  金字塔的手工补数据教程

请按照下图依次操作:

 

2.12  金字塔如何下条件单

金字塔把条件单功能直接集成到了普通下单中,您可以在订单类型中选择“停损单”即为条件单。

2.13  金字塔数据存储都有哪些限制

目前金字塔单个品种的数据存储周期规定为,日线、5分无限制,1500天。虽然5分等数据单品种没有限制,但是为了保证金字塔快速读取数据,金字塔再整个市场的数据存储大文件有2G的限制,即单个市场,单个数据存储大文件不能超过2G,否则将导致金字塔无法正常读取数据。用户可以在例如DATA\SH\查看上海证券交易所的市场数据,DAY1.DAT是日线文件,MIN1.DAT1分钟数据文件,其他类推。

2.14  金字塔24小时全天不关机使用数据须知

若使用金字塔24小时不关机交易,请注意收盘数据保存的问题,因为金字塔会在第二天自动清除前一个交易日的数据,所以需要收盘作业将数据保存止本地电脑,请在收盘后,确认当日的分笔数据完整,若不完整进行手工补齐所有品种当日分笔数据,然后Ctrl+D进行收盘做业。如果您确认网络连接可靠中间不会缺少分笔数据,可以选择自动收盘做业的功能,具体在选项->维护中,设定收市的自动收盘时间即可。这里提醒全自动交易的用户,每天收盘后进行必要的数据检查并手工收盘做业是十分必要的,这样可以保证历史数据的完整可靠,给全自动交易的可靠性提供安全保障。用户可以参考金字塔的双数据功能,最大限度的提供数据的准确性。

2.15  有关使用综合平台做模拟交易测试的说明

模拟交易时,综合交易平台将所有的品种都规类到了上海期货交易所,所以所有报单的类型都按照上海交易所走.包括开盘和收盘时间。

上海期货交易所是没有市价和止损指令的,如果你用其他两个交易所的品种做下单测试时,如果使用这两个指令将导致下单被拒绝。

模拟交易测试,请大家都尽量在上海期货交易所的品种内进行。

综合平台的模拟交易系统会比实际的交易延迟1分钟左右,所以用户至少应该在开盘1分钟后下单,由于1分钟的实际数据延迟,所以会导致一些委托价格实际上穿但未成交的现象。

偶尔出现报单不进,指令出错等常见问题,因为模拟平台只是做为一个基本的大概的交易测试环境,无法与真实的交易环境相比的。

对于做程式化交易测试的用户,用模拟交易的目的只能是做为判断交易系统的委托信号是否正确发出,不能做为判断盈利的目的!为了解决真实的交易数据与后台的系统报价不一致,用户程式化交易测试的报单都尽量的使用市价委托!

2.16  自己设计的公式、框架、VBS代码等的存储位置?重装后如何配置

用户自己设计的文档公式资料等,金字塔都统一放在Document目录中的Default(150).stk文件,用户可以很方便的将自己的个性化的设置和二次开发的代码统一的发布给其他用户使用,方便开发者和用户自己统一管理。其中金字塔的Setting目录是存放用户配置信息的地方,比如一些历史使用目录,金字塔的一些使用配置等等。如果用户需要重装金字塔,用金字塔安装程序直接在原先目录下覆盖安装即可,Document目录和Setting目录用户不需要什么改动,金字塔安装程序会自动的去识别判断用户的配置信息,您自己的文档和配置资料都不会被覆盖或者破坏。

如需备份个别配置信息参考:“2.17 金字塔安装目录程序文件说明”

 

2.17  金字塔安装目录程序文件说明

【主目录】

WinStock.exe                金字塔主程序

AddinDemo.rar              C++语言插件演示例子(基于MFC

*.adi                              金字塔插件文件

FormulaDescription.ini   公式函数描述文件

FormulaSetings.xml       公式语法函数关键字着色配置

vbs.xml                         金字塔VBA语法关键字着色配置

tws.mdb                        TWS品种配置ACCESS数据库文件

register.bat                    ACTIVEX控件注册批处理文件(用于金字塔目录位置改变后重新注册控件使用)

RGBEditor32.exe           金字塔颜色编辑器(用于公式系统公式编写时,帮助用户处理配色)

background.bmp            金字塔窗口背景颜色

*.wav                             软件盘中声音文件

FmlDevelope.zip             DLL公式示例和文档

HomeManager.exe         附赠家庭财务管理软件

db1.mdb                        财务管理软件数据库

TraderWorkstation.exe  TWS校时工具(IB用户专用)

 

Base目录】

   上市公司F10基本资料存放位置

 

Data目录】

数据存放目录

   市场\Dynamic 分笔数据存放目录

   Day1 .*                日线数据文件

   Finance1.DAT.*    财务数据文件

   MarketStat.DAT   扩展统计数据

   Min1.*                 1分钟数据

   Min5.*                 5分钟数据

   REPORT1.DAT    品种报价数据文件

  

Document目录】

   Default(150).stk  主文档文件,包含系统和用户所有公式,框架,窗体,VBS的代码

 

FmlDLL目录】

   DLL  公式的DLL文件存放位置

 

NEWS目录】

   公告新闻存放位置

 

Setting目录】

   金字塔配置信息存放位置

   Alarm2.dat                预警和后台程式化交易配置文件

   *AutoBargain.dat       框架图表程式化交易配置和历史成交记录文件

   AnlyseIndex.dat         指数分析功能配置文件

   Block.DAT                 分类板块配置信息

   ChargeCfg.dat           合约信息设置配置文件

   CustomIndex2.dat     自定义指数配置文件

   Draw1.drw                 画线配置文件

   FrequentlyCfg.dat      常用公式配置

   Frontcfg.dat               交易平台期货公司配置信息

   HqOnline.ini               行情服务器配置信息

   InternetAlarm.dat      远程预警记录信息

   market*.dat              市场信息配置

   MoreAccountCfg1.dat 多帐户配置

   MoreGroupCfg.dat    帐户组配置

   Option.ini                 金字塔主信息配置,内包含几乎全部状态信息

   OrderCfg.dat            下单设置信息

   Order*History.dat     后台程式化交易历史成交记录

   RadarCfg.Dat            预警雷达设置

   SelfData.cfg              自定义数据设置

   TicklerCfg3.dat          备忘录设置

   Trustinfo.dat             三方下单软件配置信息

   TwsStock2.dat          TWS数据接收配置信息

   UserImages.bmp        用户自定义图片

   UserInfo.dat               服务器端登陆客户配置信息(远程预警和服务器公式)

VarietyBar.dat            品种栏配置信息

2.18  怎么K线图变成了这些圆点,还有相应的成交量也是

金字塔软件支持交易日,自然日,交易时间坐标,我们平时大都使用的是交易日坐标,自然日坐标图形将显示所有日期的数据,没有交易的位置将以一个圆圈代替,交易时间坐标将是除去周末等非交易时间的坐标图形显示。

用户在图形X坐标位置右键可以在这3个模式中选择。也可以双击鼠标左键在时间坐标上双击进行交易日和自然日坐标的切换。

2.19  安装金字塔后运行IE浏览网页时有时会出现运行时错误,是否调试提示!

这个与金字塔没有原则上的关系,主要原因还是网页的设计不够过关,存在脚本错误,解决方法是关闭脚本调试。点IE上的“工具”菜单,选择“Internet 选项”,弹出的对话框选择“高级”选项卡,然后选中“禁止脚本调试”选项。

2.20  选项中的盘中延迟刷新1000毫秒有什么作用?

这个表示最多1秒刷新一次K线数据。这个功能用来控制当行情速度过快发送时,可能产生的效率问题。

2.21  为什么自动补的数据一分钟图上都是一条横线

为了节省服务器带宽,默认自动补的是分时数据,即1分钟一笔,用户可以再选项中打开自动补分笔的功能。点“工具”菜单并单击“选项”,在弹出选项对话框中选择“维护”选项卡,然后在在维护里将“强制补分笔”设置打开

2.22  本应是两位小数的品种只显示一位小数(舍去一位)?

金字塔在图形上的显示价格单位采取了智能模式,即千位只显示一位小数,万位则不显示,您可以在选中中进行关闭。工具菜单->选项->视图 然后将价格/单位自动缩位显示这个选项去掉即可。

2.23  为什么有行情进来的情况下金字塔不显示数据

这种情况应该用户用了模拟数据或者其他质量不可靠的第三方接口来为软件提供数据导致数据的接收日期出现紊乱,解决办法是进入数据管理器,然后左面勾选出问题的市场,然后左面勾选“重置时间”,然后点击“清除今日行情数据”按钮就可以解决问题。

2.24  为何外汇还有美原油等品种的图表时间既不是本地时间又不是交易所时间

这是金字塔的自动校正时间功能。因为金字塔的同一天数据不允许跨天,而外汇原油等品种是24小时交易,从开盘到收盘中间有跨天,所以金字塔对时间进行调整,将开盘时间调整到0点,这样保持图表完整性。

2.25  如何在金字塔下制作自己的看盘面板

1、新建一个框架

 

 

 

 

 

 

 

 

 

 

 

2、选定框架样式(这里以一个空框架为例)


 


3、开始设置面版 

 

 

 

4、搭建框架


5、调整适实的窗格大小

 

 

6、想好各窗口的用图 

7、对窗格中的原有功能进行调整  


 8、将系统配置的窗格公式对号入坐


 9、修改窗格属性


 10、插入分页


11、修改框架属性 

 

 

12、保存已做好的框架设计 


13、这个例子已做好的框架(看盘面版)效果图及附件


 

2.26  图形上的灰色方块是做什么用的,如何关闭?

那是缺口标记,指第二天的最高/最低价无法与前一天的K先重合的标记,可做压力与支撑点判断,对技术分析有比较重要的参考价值。鼠标右键菜单》》“显示出全/缺口标记”可以将其关闭。

2.27  叠加主图的交易系统公式会有白色的箭头,如何关闭

是未成交标志,交易系统测试时,对于价格在当日高低价之外的模拟委托价格视为无效委托而为白色箭头标记(例如海龟交易算法不断的发出止损指令),用户可以在选项->视图->将“显示未成交标志”钩选去掉。

2.28  插入菜单中的公式叠加公式有什么区别

插入公式功能主要是用来给主图插入多个“主图叠加”性质的公式而设定的 ,因为传统的操作,主图只能使用一个“主图叠加”性质的公式。[叠加公式]是用于需要主图高低与指标高低透明叠加,如铜与KDJ指标的叠加,J=102 与铜的52000在同一位置,而与实际数值无关,使用同一坐标叠加将导致无法正常分析,所以[叠加公式]一般用于主图的不同性质的指标叠加和幅图的多个公式叠加,仅是某些分析人员专用的。

2.29  测试以及优化结果的TTR,TTO文件如何打开

文件菜单->打开->文件, 然后文件类型选择相应的类型。

2.30  如何改变金字塔的图形背景颜色以及图形字体大小

画面菜单->配色方案->选择金字塔预定的配色方案即可.此外,如果用户有需要则可以自己添加或者定制已有的配色方案的内容.上述改变只能修改金字塔整个系统的颜色风格,如果用户需要只修改其中某一个窗格的字体或者背景颜色,比如5档盘口报价窗格的,那么首先鼠标点中报价窗格(就是上面点一下),然后 画面菜单->字体->常规 , 如果要自定义窗格是动态牌,那么这里选择列表。

2.31  如何在一台计算机上运行多个金字塔客户端

默认情况下,一台计算机只能运行金字塔一个实例,要运行多个,步骤如下:

1、将金字塔的整个目录拷贝到另外的地方,比如D:\Weisoft Stock拷贝到E:\Weisoft Stock

2、修改金字塔的主程序文件名,比如将 WINSTOCK.EXE 修改为 WINSTOCK2.EXE

3、用记事本打开 Setting\Option.ini, 找到

    LastDocument= ...

    BasePath=  ...

    NewsPath=  ...

    MainPath=  ...

    将上述四行标志头找到后删除即可(找不到则不用管)

2.32  金字塔期货数据指数都代表什么,为什么不是实际的价格

金字塔所有商品都带有3个指数,等权、仓指、量指,等权指数表示将该品种所有和约按照同等权重计算出来,仓指则是以持仓量为权重计算指数,量指是以成交量为权重。指数是以趋势表现为主要目的,与价格是无关性的,金字塔是以某一天的基期和基值为起点然后开始计指计算的。

2.33  软件启动显示更新系统注册表记录失败,请试用regedit

微软从VISTA系统开始启用了一种新的安全策略,默认全部用户帐户都没有管理权限,即便使用管理员帐户登陆也是如此,解决办法如下:

1、每次启动时图标上点右键,选择“以管理员身份运行。

2、关闭UAC。依次操作 控制面板-用户帐户-打开或关闭“用户帐户控制”,将“用户帐户控制(UAC)帮助保护您的计算机”选项去掉即可。

2.34  为什么金字塔的外汇数据比MT4等其他软件有差异

使用MT4的外汇经纪公司大多数是对赌公司,为了自身的利益,其行情报价与真实的ECN行情报价有出入,点差通常在2-3点。

金字塔的外汇行情报价是由十几家世界性大银行的报价优化排列而成的即时行情报价,是真正的ECN行情报价。使用该报价可以直接在IB(美国赢透)上直接下单委托交易。由于上述性质点差也是最低的,活跃时只有半个点,即欧美为0.00005,美日为0.005

2.35  等量K线为何不确定,一直在变化

等量和等价线,是采用猜测方法拆分K线,由于日内数据K线形状未定,故会有变化出现,所以只能用以一般的技术分析,不能按此操盘的。

2.36  如何设置等价K线的变动单位或者幅度

1. 首先将主图类型切到等价K线,

2.双击主图左上角,不是很容易看到,弹出设置窗口后,进行设置。图例如下,双击椭圆标识处。

(等价字体颜色可以通过 工具-选项-配色方案-图形标记一修改)

2.37  等价蜡烛线或者等量蜡烛线设置及“价格拆分比”

鼠标双击左上角暗红色 等幅这个地方,可以调出“等价蜡烛线设置”或者“等量蜡烛线设置”选项,可以进行相应设置。

其中的“价格拆分比”的意义为:金字塔等价等量线采用猜测方法拆分K线,即如果阳线则认为是先跌后涨,然后将K线拆分,这个拆分比就是需要将K线拆多少段,当然是段越小,得到拆分后得K线就越精细。

2.38  系统恢复后金字塔无法使用如何解决

在系统恢复后,只要运行金字塔根目录中register.bat,即可正常使用强大的金字塔软件,而不用重新安装。

2.39  金字塔右下角的时间是取本地时间还是服务器时间

此处的时间(包括客户端中所有与时间有关的)取的是客户端所在电脑上的系统时间,所以为了避免行情或者交易出现异常,请定期更新您的系统时间,保证时间的准确性。

2.40  如何查看公式中经常引用到的市场代码

具体每个市场的代码在工具菜单->市场与板块中,查看市场的代号,设置和进行管理。

关于补充历史数据的问题

当您补充历史数据的时候,金字塔会在后台中根据您选择的品种,逐个品种补充数据,当一个品种数据下载完毕后,数据即可显示出来。

如补充数据过程中补充数据工具异常退出,则已经下载完毕的品种数据仍然能够看到补充好的数据,剩余没有补充好的品种您还需要重新启动下载工具进行再次补充,此异常过程并不会让前面的下载全部白费力气。

2.41  关于历史Tick数据和盘口数据的导入导出

动态牌品种上右键-》数据-》分笔成交;

文件-》另存为-》导出EXCEL文件。

2.42  如何设置默认启动界面

菜单 》工具 》启动 》显示窗体,选中您要作为默认界面的选项即可。

2.43  金字塔用银江接收不能收到上证指数

银江接口有个上证1A0001选项,默认是打开的,关掉即可。

2.44  软件中的持仓量是单边还是双边?

上海、大连、郑州是双边持仓量,中金所的是单边持仓量。

 

2.45  是否支持第三方股票数据接口转发数据

可以挂接银江,舒畅,网季风的数据。

2.46  金字塔是否支持多核

多核支持不是应用程序软件所决定,而是操作系统决定的,如果你有多个CPU,那么只要应用程序开多个线程,操作系统会自动为你的程序分配多CPU执行。金字塔在工作时,会有多个线程同时运行,分别是数据接收、后台程式化交易、板块/套利指数刷新等4大线程,故如果用户是多核处理器,那么在执行后台自动交易时,操作系统会将后台的自动交易安排在另外的CPU上运行。为什么任务管理器上看到的是只有一个核?那是因为用户在执行比如公式系统优化时,由于执行优化时只能是一个线程,目前还没有那个技术能够实现一个线程的多CPU执行,金字塔为了保证工作效率,不会将一个CPU全部的资源占满,而是会预留一些给其他的软件执行。为什么我看到了再满负荷工作时金字塔似乎只占了一个CPU,而其他软件几乎都占了?前面说过了,金字塔不会占满整个CPU的资源,而其他软件会将整个CPU全部占用,导致操作系统工作时的全部其他软件,比如杀毒程序等软件只能使用另外CPU工作,导致用户看起来好像是其他软件再满负荷使用了,但实际上这样会让整个系统的效率降低,而不会是提升。

2.47  金字塔下的交易都支持哪些交易指令,有什么区别?

金字塔对于所有的可交易品种,均支持4种交易指令,即限价、市价、停损、限价停损。但是这几种交易指令是通过不同方式完成工作的,限价指令是所有平台都支持的,对于市价和停损单,下面几种交易平台如下:

CTP综合交易平台 除了上期所不支持市价外,其他3个交易所均支持市价指令,在上期所的品种下市价单金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。除了大连交易所支持停损指令外,其他交易均不支持停损指令,在不支持停损指令的交易所下停损单时金字塔是采用内部监控模式实现,最新价触及停损价位后立即按照市价发出委托单。金字塔CTP平台不支持限价停损指令,用户使用限价停损指令发出为委托单时,实际会按照停损指令发出。

IB(美国赢透)交易平台 这个平台支持所有限价、市价、停损、限价停损这个4个指令。在IB平台发出停损指令后会将指令单发送到IB的交易服务器上保存,等待触发。

2.48  为何我的金字塔安装后无法正常运行,或者升级后不能使用

主要有两个方面造成 1;金字塔不支持虚拟机运行 2;杀毒软件干扰,目前国外的几个杀毒软件由于对加壳识别算法严重落后导致对金字塔的误报率非常高,建议大家使用稳定性和安全性更好的杀毒软件,推荐NOD32,卡巴斯基等等。

2.49  如何在标签栏中显示多个框架

如图所示:

想要在框架标签栏中同时选显示多个框架,您可以到工具》》选项》》视图中选中“多框架显示模式”即可。

2.50  如何用文本导入相应品种的数据?

比如,准备了SMI 12月期货的1分钟数据,如下。我按Ctrl+D,选择“导入数据”,在“文本格式设置”中,设置好了文本格式。在DT市场前打钩,准备用“执行安装”导入数据。

问题是:怎么让金字塔知道,这些数据是要加到代码 SMI12 里去的呢?

很简单,只需要将你要导入的数据文件名修改为 DTSMI12.TXT 即可。

为何只显示当天的1分钟K线或分时数据,如何修改可以看到多日?

只要去掉勾选 工具》》选项》》常规种的“K线图仅适用当日分笔、1分数据”、“分时图仅适用当日分时数据”。

2.51  金字塔服务器上保存多少周期(天)的数据?

 1分钟线:股票保存50天,外汇、期货保存300天;

 5分钟线:股票保存12000周期,外汇、期货保存24000周期;

     线:无限制;

 分时走势图:根据1分钟数据的收盘价绘制而成;

 另外:其他周期是根据1分钟线或者5分钟线计算而来。

2.52  关于图表交易中的小三角、箭头等符号的意义。

上图中:

     红色箭头:开多;

     绿色箭头:平多;

     蓝色三角:平空;

     粉色三角:开空;

     绿色直线:交易链接线;

               (此项可在菜单:交易》显示交易信号连线 中设置);

上图中:

     横向白色(或其他颜色)小三角:系统发出的报单价格;

     白色箭头:表示多方向未成交信号;

     上下方向白色三角:表示空方向未成交信号;

     (以上标志可以同过菜单:工具》选项》视图》显示未成交标志 中设置)

2.53  多帐号程序化交易为何只能交易当前活动帐号?

如果您的多个帐号已经成功连接,但是用程序化下单的时候仍然只能对当前活动帐号进行下单操作,那么其原因多在于您的公式参数不全,请仿照下面例子对参数补全:

TBUY(1 , 1,mkt ,0,0,'88888' );

TBUY(1 , 1,mkt ,0,0,'88889' );

2.54  关于“自定义数据的使用”

自定义数据,可灵活管理、应用各类数据(如发行价、自编公式数值),可通过SELFDATA()SELFDATAN( )SELFDATAS()函数在个周期下调用,并可将数据导入导出。

数据属性说明:

单值数据:当对应每只证券只有一个固定的数值时,选用该属性(如发行价等),也可由指标计算得到,与指标最新值相关联。

单值字符串:当对应每只证券只有一个固定的字符串时,选用该属性。

证券相关序列值:当每只证券跟时间有关的数据时,选用该属性(如自编指标或系统指标数值)。

证券无关序列值:当保存跟证券无关而与时间有关的数值时,选用该属性(如某日公布的经济指数等类似的数据)。

下面举例说明如何使用自定义数据。

1、首先建立一个指标“当日均线”,指标里输入代码:

当日均价:SUM(C*VOL,0)/SUM(VOL,0);

2、点击“分析”》“自定义数据”》“新建”,如图新建一个名为“加权均价”的自定义数据;

3、点击新建自定义数据中的“指标”按钮,仿照下图设置各个属性;

4、按照下图所示,点击“刷新所选”按钮刷新数据,比如当您设置了新的范围之后,有可能需要刷新数据才能正确调用您的自定义数据;

5、再次新建一个指标“test”, 指标里输入代码:

aa:SELFDATA('加权均价');

运行指标,您会看到如下图所示的数字:

此图中显示的AA:16595就是通过指标“当日均线”计算出的数值,“TEST”指标是通过我们的自定义数据“加权均价”来取得的,您可以通过“自定义数据管理”中选中自定义数据“加权均价”,点击“修改数据”按钮,“选择品种”中选“沪铝1103”合约,则会显示出下图中所显示的数据“16595”,您可以选择修改或者导出等操作以方便您继续执行您的策略。

 

看完上面的例子,相信您对自定义数据已经有了一定认识和了解了,其他数据类型的自定义数据,操作与上面所述方法类似,我们就不做一一介绍了。

2.55  如何关闭或者打开“信息地雷”

点击此图位置中的小箭头即可切换“信息地雷”的切换!

2.56  关于连续品种换月规则的说明

   只要下月品种的成交量存在一个交易日大于当前品种,那么第二天系统自动换月,默认下月品种为主力合约。

2.57  套利合约为何只能看到当日的K线?

对于套利合约,您每天需要在收盘后做“收盘”操作才能在日后看到历史数据。

2.58  关于双击主图下单的设置的注意事项

    当您选中“双击主图按价格下单”选项后,当您在K线模式下,双击主图时,系统会根据您鼠标所点击的位置来确定一个价格继续下单操作。

注意:当您使用这项功能的时候请吧多账户下单模式改为单账户模式下单,否则设置不能生效。

2.59  如何快速调用多分钟、多秒、多小时或者多日线周期

敲击键盘输入“14min”就表示调用14分钟线;

敲击键盘输入“6hour”就表示调用6小时线;

敲击键盘输入“12sec”就表示调用12秒线;

其他周期同理输入。

2.60  快捷键说明

F1 帮助系统

F2 切换到行情报价表

F3 选择指标 (在行情报价表中,自动进入上证分时图)

F4 大盘指数切换 (在行情报价表中,自动进入深证分时图)

F5 分时线、日K线切换 (在行情报价表中,自动进入K线视图)

F6 指标排序 (在行情报价窗口中起作用,如果不是行情报价,则自动进入行情报价窗口)

F7 条件选股

F8 周期切换 (K线视图中起作用)

F9 查看接收到的交易所公告及财经报道

F10 基本资料

F11 复权处理/取消复权 (只在K线视图中起作用)

F12 启动闪电下单功能

CtrlF12 打开/关闭 帐户窗口栏

ShiftF12 打开/关闭 成交状态显示栏

 

Tab 切换窗口

Alt+F4 退出『金字塔决策交易系统』

Ctrl+A 预警系统

Ctrl+D 数据管理

Ctrl+L 对数主图坐标(只在K线视图中起作用)

Ctrl+M 启动/停止多图同列 (只在K线视图中起作用)

Ctrl+N 标准主图坐标(只在K线视图中起作用)

Ctrl+O 弹出选项对话框

Ctrl+P 百分比主图坐标(只在K线视图中起作用)

Ctrl+Q 缺省主图坐标(只在K线视图中起作用)

Ctrl+T 投资管理

Ctrl+W 区间统计 (只在K线视图起作用)

Ctrl+G 删除图形所有叠加

Ctrl+F11 打开历史选股结果

Ctrl+F4 显示当前窗格属性

Ctrl+F5 刷新报表(行情报价表中的指标排序,重算指标数据)

Ctrl+F7 公式与交易系统测试

 

Insert 加入到自选股

Delete 从板块中删除

 

Shift+C 显示/不显示标题栏

Shift+F 显示/不显示指标栏

Shift+P 切换/取消鼠标在主图上平移画面功能(只在K线视图起作用)

Shift+R 显示/不显示指标栏

Shift+S 选择证券

Shift+T 显示/不显示标准工具栏

Shift+U 全屏/窗口模式切换

Shift+V 显示/不显示品种栏

Shift+W 显示/不显示公式/板块管理面板

Shift+X 显示/不显示画线工具栏

Shift+Y 显示/不显示周期栏

Shift+F11 显示异动雷达窗口

 

Alt+1 只显示主图 (只在K线视图中起作用)

Alt+2 显示主图和一个副图 (只在K线视图中起作用)

Alt+3 显示主图和两个副图 (只在K线视图中起作用)

Alt+4 显示主图和三个副图 (只在K线视图中起作用)

Alt+5 显示主图和四个副图 (只在K线视图中起作用)

Alt+6 显示主图和五个副图 (只在K线视图中起作用)

Alt+7 显示主图和六个副图 (只在K线视图中起作用)

Alt+8 显示主图和七个副图 (只在K线视图中起作用)

Alt+9 显示主图和八个副图 (只在K线视图中起作用)

Alt+F11 显示/关闭 VBS高级管理器窗口

Shift+~ 按默认设置快速截取当前图形区

Ctrl+~ 按默认设置快速截取当前软件区

Alt+~ 按默认设置快速截取整个屏幕

 

Alt+F8 执行宏命令

Ctrl+Shift+G 打开/关闭 立即窗口(VBS调试状态有效)

Ctrl+Shift+L 打开/关闭 堆栈窗口 VBS调试状态有效)

Ctrl+R 打开/关闭 管理面板中的高级管理页面(VBS调试状态有效)

Ctrl+Shift+F7 打开框架和窗体的代码窗口

Ctrl+F7 框架和窗体代码编辑环境下查看所属对象

Ctrl+F10 开始调试脚本

Ctrl+Break 暂停脚本运行 VBS调试状态有效)

Shift+F5 执行脚本(非调试状态)

Ctrl+F8 VBS跳过单步跟踪调试命令

Ctrl+Alt+F8 VBS逐语句单步跟踪调试命令

Shift+F8 VBS逐过程单步跟踪调试命令

Ctrl+Shift+F8 VBS跳出单步跟踪调试命令

Ctrl+F9 切换断点(当前代码行设置或者取消断点)

Ctrl+Shift+F9 清楚所有断点

 

在图形分析窗口可用以下快捷键切换分析周期:

0 分笔成交

1 1分钟线

2 5分钟线

3 15分钟线

4 30分钟线

5 60分钟线

6 日线

7 周线

8 月线

9 年线

D 多日线(用户自定周期)

[n+] 数字n后,再键入“+”,表示nK线

[n-] 数字n后,再键入“-”,表示n分钟K线

[n*] 数字n后,再键入“*”,表示n小时K线

[n/] 数字n后,再键入“/”,等笔K线,表示每根k线的笔数相等

[M][Mn] 多分钟线(输入M3回车可切换到3分钟线)

[S][Sn] 多秒线(输入S3回车可切换到3秒线)

 

选择主图K线模式可有以下几种快捷方式:

K 蜡烛线

BAR 美国线

PRICE 价位线

T 宝塔线

GBL 鬼变脸

VK 等量K线

PK 等价K线

[n/] 等笔K线

 

Ctrl+← K线向左移动

Ctrl+→ K线向右移动

Ctrl+Home K线向左移动到最头

Ctrl+End K线向右移动到最尾

 

直接键入代码 :601988回车,即切换到中国银行

直接键入技术指标名称 如:MACD 即切换到MACD指标

K线视图中[回车]键切换分时图/K线视图(切换到上次显示的周期)

 

支持“81-87”的快捷功能:

81 A综合排名

82 B综合排名

83 A综合排名

84 B综合排名

85 A股综合排名

86 B股综合排名

87 基金综合排名

 

支持“61-67”的快捷功能:

61 A涨幅排名

62 B涨幅排名

63 A涨幅排名

64 B涨幅排名

65 A股涨幅排名

66 B股涨幅排名

67 基金涨幅排名

 

支持“31-34”的快捷功能:

31 涨速排名

32 量比排名

33 成交额排名

34 换手率排名

 

支持“03-06”及其他快捷功能:

03 上证走势

04 深证走势

05 分时/K线切换

06 自选股

09 画线工具

 

+5159 前九个常用板块的快速切换(在键盘精灵中可以查看到你所设定为常用的那些板块的按键对应)

 

K线图窗口,可在常用指标间切换活动副图的指标。分时图下可用于切换分时副图。

* K线图窗口,可以常用指标间切换活动副图的指标(与/反方向)。分时图下可用于叠加大盘走势。

+ 股票信息栏最下面小窗的内容在成交明细、分价表、买卖盘回忆、个股分时线、大盘分时线、个股财务数据、移动成本分布和逆时钟量价图间切换。

 

鼠标双击行情列表中的股票将显示该股票的K线图。

支持鼠标的滚轮操作(你试试将鼠标移进分笔成交区、证券列表等中拨一下滚轮试试)

2.61  金字塔客户端常用端口汇总

如客户端所在网络对端口管理比较严格,可以开放以下TCP端口(出口)即可正常使用金字塔客户端。

软件行情端口:5106510851095118

客户端升级端口:80

交易端口:根据期货公司交易服务端口(金字塔交易网关的服务端口或者CTP的交易前置和行情前置端口,每个公司可能各不相同)

2.62  登录客户端不显示用户名密码输入界面

这是由于客户端版本太老导致的,去金字塔官方网页下载最新客户端重新安装即可!

2.63  收盘作业功能是做什么的?不收盘有何影响?

为了方便用户使用,金字塔的数据补充是智能型的,如果用户不做收盘作业,那么会在浏览品种自动补充所缺失数据。收盘作业是将盘中金字塔全推推送过来的数据保存到本地,用户自行维护数据,就不用每次自动到服务器上补充了,但是服务器上保存历史数据的长度是有限的,如果用户需要保存任意长时间的数据,那么就需要自行收盘作业保存和管理历史数据,另外后台的程序化的品种由于没有在图表上显示,故也不会自动补充数据,如果你在后台程序化做,那么就应该做之前保存或者补充历史数据。

2.64  为什么日线上的最高价在1分或者5分钟图上找不到?总比日线最高价低几个价位?

金字塔的日线生成是使用的交易所当日给出的开高低收报价,而分钟K线是使用当日分笔数据生成,对于国内期货分笔数据是交易所每隔0.5秒一次的快照数据,在行情变化剧烈时,这0.5秒会撮合很多笔交易,但是交易所只给了间隔0.5秒的快照,也就是传递过来的分笔数据不是所有成交报价的。故在极端位置会出现分钟线与日线有不一致的情况。

2.65  为何无法登录交易帐号?

有可能是以下几种常见原因:

1)         交易帐号密码错误;

2)         误把金字塔行情帐号输入到交易登录框中;

3)         误把交易帐号输入到了软件登录框中;

4)         交易帐号所在的期货公司未开通登录CTP或者金仕达或者恒生等交易系统的权限;

5)         交易平台选择错误;

6)         登录交易时选择错误的期货公司。

2.66  程序化交易中的固定轮询模式和走完K线模式的使用建议

固定轮询和走完K线的特点:

固定论询,指的是金字塔在每间隔一定时间内去检测信号是否有发生,发生后就立即采取下单策略;走完K线是必须等到K线结束,

下根K线刚产生的那一刻进行信号检测和下单。

很多的刚接触交易的初学者,都幻想自己能买在最低价卖在最高价,故不去考虑其他因素只想快点进场交易怕出现大阳线影响他的

收益,选择固定轮询的最小周期高频扫描,希望能把市场上所有的钱都赚到自己口袋理,殊不知这种做法往往是捡了芝麻丢了西瓜,这些不成熟的投资理念,也是为什么市场绝大多数人都是会被淘汰,而只有少数人能够生存的根本原因。也是贪婪的人性弱点的充分展现。

固定轮询模式的缺点和走完K线的优点:
例如下面的公式:

 

ENTERLONG:CROSS(MA(CLOSE,A),MA(CLOSE,B));
EXITLONG:CROSS(MA(CLOSE,B),MA(CLOSE,A));

 

1、使用固定轮询会产生信号的反复出现与消失,因为最后一个K线的CLOSE价格未确定,当价格不断变化时,会造成交易信号还未最终确定就提前的过早入场下单交易,不守纪律的下单,未必一定能抢到很好的价位,价格的来回反复是很正常的事情,虽然金字塔提供了信号消失恢复持仓,那么不断的信号反复消失会带来手续费的不断增加,加上交易是个很复杂的过程,恢复持仓的正确性有很大的局限性,一旦出现了不能及时恢复持仓,会造成策略的信号与实际的持仓不一致,最终的收益情况与我们在设计指标所测试的结果出现较大差距。而走完K线因为是上一个K线的最终确定形成后才进行下单交易,故可以有效防止此问题。

2、固定轮询会在产生漏单,固定轮询是按照一定时段间隔扫描最后一个K线的信号,如果刚好在最后一个K线结束时信号形成,而此时正好时段在轮询中间,那么这个信号就会被漏掉,同样会产生信号的发生与与实际的持仓不一致,同样会出现上述的收益问题。

3、固定轮询会增加CPU的资源消耗,系统会按照轮询设置上的时间去计算是否有信号发生,会造成CPU在大多数情况下都是一些无谓的计算,而走完K线只会在每个新K线形成时只计算一次,这可以大大减小CPU的运算量,尤其是用户在进行后台程序化交易时,如果监控的品种比较多和策略比较复杂的情况下,使用走完K线模式运行是很重要的。

4、固定轮询模式的交易滑点是我们在程序化交易评测里无法测试的,因为固定轮询模式的交易价位可能是当前K线的高低价格之间任意一个,我们在用历史数据测试时是无法预知的,这会造成用历史数据测试固定轮询模式时,只能大概使用一个收盘价或者K线中价来模拟进场交易,使用这种模式测试出来的交易结果存在很大隐患的,最后可能导致实际的交易与测试时结果天壤之别。而走完线模式的入场价格只能是下个K线的开盘价,测试时是可以测试到的,实际的交易过程中也是固定不变的,这就能最大保证测试结果的收益与实际的交易收益保证一致。既然无法测试固定轮询的实际盈利,那么我们为什么一定要去拿自己的资金来冒险呢?既然可以使用走完K线来测试到盈利情况,那么为什么我们就不能在盘中使用走完K线去坚持呢?

前面列举了固定轮询模式的这4大缺点,那么固定轮询模式到底该用在什么地方呢?

1、后台程序化交易中的高频交易或者套利交易,因为不是趋势交易,不必担心信号消失,只需要进出场迅速。

2、监控止损操作,只要价格碰到了指标设定的条件就立马止损。

虽然我知道了固定轮询的诸多缺点,但是我还是想用,那该有什么办法呢?

虽然知道金字塔有很强的仓位监控止赢止损功能,但是我还是想在模型里自己实现特定的止损操作,避免走完K线时间过长出现爆仓危险,那么我们该在固定轮询模式下的模型的设计时注意哪些才能避免漏单和信号消失呢?

1、设计指标时,不要使用CLOSE等价格频繁跳动的数据做为指标信号是否出现的依据,而是使用OPEN,HIGH等这些数据,因为一旦出

现它们是不会反复上下变化,例如可以改成这样写

 

ENTERLONG:CROSS(MA(OPEN,A),MA(OPEN,B));

EXITLONG:CROSS(MA(OPEN,B),MA(OPEN,A));

 

这样改写后,只要测试盈利,在实盘交易时使用固定轮询,那么信号一旦出现,就不会再出现消失,因为OPEN一旦出现是不会变化的。

2、使用上根K线的信号做为本次的进场依据,相当于在固定轮询模式下实现走完K线的方法,代码可以这样写:


AA:=CROSS(MA(CLOSE,A),MA(CLOSE,B));
BB:=CROSS(MA(CLOSE,B),MA(CLOSE,A));
ENTERLONG:REF(AA,1);
EXITLONG:REF(BB,1);

2.67  多框架最多可以设置多少个窗格?

最多可以设置32个窗口,超出会导致软件报错!

2.68  “节省内存模式”是什么意思?

2.54或者更高版本里,程式化交易评测时,参数优化里,有个节省内存模式可钩选,如果勾选本选项,则意味着优化时成交记录等消耗内存的操作取消,可以节省内存做更多次数的优化。

2.69  金钻版远程指标调用的原理

当使用远程调用指标函数对金钻版服务器上的指标进行调用时,金钻版服务器会将服务器上的指标用安全加密的方式传输至客户端,客户只能够看到指标运行结果,而不能看到指标代码,破解难度极大,对指标所有人的指标来说是安全的。当指标在客户端本地解析执行,指标相关的运算是在客户端本地执行的,并不会对服务器产生运算压力。

2.70  多个本地预警条件(后台交易)是否调用多个线程?

现在大部分电脑的CPU2线程或者4线程并发,此功能若是设计成多个线程,如果处理不好可能反而让计算效率降低,所以在金字塔中本地预警窗口中添加多个预警条件只会增加一个线程,也就是说多个预警条件公用同一个线程。

2.71  “程式化交易评测中”的“参数优化”是否调用多个线程?

参数优化功能与金字塔主程序公用同一个线程,所以当您开启此功能进行优化时,金字塔调用的线程数不会增加。

2.72  金字塔中的全局变量是否支持名字空间(变量分组)?

目前不支持,对于变量非常多的策略,建议用户使用VBA来实现,金字塔是支持VBA编程的。

2.73  远程调用指标,若服务器指标改动,客户端是否实时显示?

不会实时显示。当客户端调用金钻版服务器上的指标时,如果服务器上的指标发生修改,那么客户端不会实时更改,客户如果需要看到新指标的结果,需要在客户端中关掉指标,然后再打开指标(也就是重新远程调用并加载指标)来实现与金钻版服务器的同步。

另外,如果您的客户已经加载可远程指标,此时您关闭金钻版服务器,那么客户端的远程指标是不会立即消失的,因为加密的指标还加载在客户端本地的内存中;如果此时客户关闭远程指标,然后再调出指标,就客户会发现远程指标已经无法调用。

当您修改了金钻版上的指标后,可以对用户发送通知消息告知指标发生改变。

2.74  IB外盘下单注意事项

当对外盘品种进行手工下单或者程序化下单时,只要您登录了IB的账户,那么无论账户栏显示的当前账户是否是IB账户,那么下单时都会下到IB的账户中去。

另外,对于后台交易函数,例如TBUY,其中关于账户的参数,对于IB账户是无效的,也就是说,当您下外盘品种单子的时候,后台交易函数中的账户参数是无效的,无论该参数设置成什么帐号,金字塔都是默认下单到当前已连接的IB账户中去的。

另外,对于闪电下单,如果您当前账户是国内期货账户,当您下一手外汇单子的时候,金字塔会自动下单到IB账户,而非当前的国内期货账户。

2.75  为何外盘无法下单?

IB账户已经连接,但是仍然无法下单,点击下单按钮或这用指标进行下单不报单,这种情况有可能是因为盈透数据接收管理中没有添加品种导致,或者由于您将需要交易的品种添加到了“通用”栏目中导致。大多数情况下相应品种应当添加至相应的栏目中。例如,如果交易美国期货品种时,应该将品种添加至“期货”栏目中;如果交易外汇,应该将品种添加至“外汇”栏目中;如果将美国期货品种添加至“通用”栏目中,则期货栏目中的此品种会自动删除掉,因此容易造成无法下单。

2.76  如何设置交易连线的颜色?

交易连线的颜色就是在交易系统公式编辑器里的开平的颜色。

2.77  动态盘后中品种名称后面的数值表示什么?

 

例如上图中的10表示该品种在动态显示牌当前版块中的序列号是10,也就是第十个品种。

2.78  自定义指标设置的表头列无法自动刷新或者刷新很慢

可以在“工具”>“选项”>“常规”中的“指标排序更新”,默认数值是10秒,最小可以设置为1秒。

2.79  手工下条件单问题及解答

在金字塔里,止损单就是条件单

    所谓停损就是交易价比设定的价格要差,(就是说和价格运动方向无关,只要比下的价格差,就下单,不管价格是由好到坏还是有坏到好。)具体说来对于买入或卖空就是高于设定价格,对于卖出或买空就是低于设定价格。

1)买开仓—多头开仓

设置停损单,如果价格设置为4000(需要比当时的成交价高,若低于则会立马成交)

//当最新价≥4000,就发出开仓委托

//结果:成交价根据行情而定

//相当于-----条件单,当价格突破某个值时,买开仓。 (2)卖开仓---空头开仓

设置停损单,如果价格设置为2020(需要比当时的成交价低,若高于则会立马成交)

//当最新价≤2020时,就发出开仓委托

//结果:成交价根据行情而定

//相当于-----条件单,当价格下跌某个值时,卖开仓。 (3)卖平仓---多头平仓

设置停损单,如果价格设置为4000(需要比当时的成交价低,若高于则会立马成交)

//有多头持仓,4000是止损触发价(所能接受的最大损失的最低值)。

//当最新价≤4000,就发出平仓委托。

//结果:成交价根据行情决定。

//相当于----止损----条件单,当价格下跌到某个值时,卖平仓。

2)买平仓---空头平仓

设置停损单,如果价格设置为2020(需要比当时的成交价高,若低于则会立马成交)

//有空头持仓,2020是止损触发价(所能接受的最大损失的最高值)。

//当最新价≥2020,就发出平仓委托。

//结果:成交价根据行情决定。

//相当于----止损----条件单,当价格突破某个值时买平仓。

 可以下取消前有效的条件单吗? ---不能

本来就是存在本地的

撤消,就手动撤消好了

不是下到服务器吗?关机就无效了吗  ---

哪个期货交易所,支持止损单

支持止损单的,就是下到期货交易所

不支持的,全在本地

2.80  红色指标是什么意思?

在金字塔中您会发现有的指标是显示红色的,这代表您把它设置为了“常用指标”,您可以在指标上右键鼠标,然后再弹出菜单中选择“设为技术常用”或者“设为分时常用”,指标即显示为红色。

2.81  为何持仓为零,在图表交易中系统仍然显示白色的平仓信号?

这是由于平仓时乱委托价格,属于无效报单,金字塔在处理平仓乱委托价格的情况时,先按照是废单惊醒处理,因此持仓为0仍然会有白色的“废弃平仓”信号产生。

 

指标“反馈”的源码如下:

variable:cc=0,hl=0,kcj=0,zs=0;

lo:=llv(l,10);

entertime:=time<143000;

if cc>0 and l<zs then begin // 回落到zs线下,有多单则平仓,把cc置为0以便下次重新开仓

       sell(1,1,limitr,min(o,zs-0.2)-0.6);

       cc:=0;

end

if cc=0 and ref(c>o,1) and entertime then then begin

       buy(1,1,limitr,o);

       cc:=1;

       hl:=h;

       kcj:=o;

       zs:=kcj-10;

end

 

if cc>0 then begin

       if h>=hl then hl:=h;// 创新高后记录新高

       if hl>kcj+10 then begin//10个点止盈,则重新设置zs线,并有仓位的话则平仓

              zs:=lo;

              sell(1,1,limitr,kcj+10);

       end

end

 

if time>=144500 then begin

       sell(1,1,limitr,o);

       sellshort(1,1,limitr,o);

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、            高级编程问题

3.1  数据库操作实例

Function DataInsert()

'注意,不要使用:Server.CreateObject

Set adoConn=CreateObject("Adodb.Connection")

adoConn.Open "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=F:\test.mdb"

strSql="Insert into Fu1011(Price,Bs,Pos) Values('5000','5','5')"

adoConn.Execute(strSql)

adoConn.Close

End Function

3.2  用自己创建的公式替换主图的K线指标

方法1:自建公式使用主图叠加属性,公式里自绘K线图形,然后公式显示时通过自绘K线将主图K线盖住

方法2:去掉K线主图指标,直接使用自建的指标。将公式属性设为主图属性,由于默认的技术分析K线框架里有段VBA代码保护主图K线指标不被删除,故需要使用SHIFT+BREAK关闭VBA引擎,然后双击指标即可,会自行进行替换工作。如果你需要长期使用子定的指标在系统默认的技术分析框架使用,那么可以在VBATechnic框架代码内,将此段保护VBA代码去掉即可。

 

Sub Technic_RemoveFormula(Grid, FormulaName, Result)
 if Grid.name = "Main" and FormulaName = "MAIN" then
  result = 1
 end if
End Sub

将上述代码删除即可。

3.3  如何使用VBA打开一个外部记事本?

Sub test()

Set Wrap = CreateObject("DynamicWrapper")

Wrap.Register "user32.dll","FindWindow","i=ss","f=s", "r=l"

Wrap.Register "user32.dll","SetWindowPos","i=hhllllu","f=s", "r=l"

WindowHandle = Wrap.FindWindow(vbNullString, "无标题 - 记事本")

If WindowHandle Then

    Call Wrap.SetWindowPos(WindowHandle,-1,0,0,0,0,3)   '设置置顶

    'Call Wrap.SetWindowPos(WindowHandle,-2,0,0,0,0,3)  '取消置顶

End If

End Sub

 

根据notepad的标题对应修改,查找窗口

 

3.4  QQ客户端或QQ群发送指定消息字符串

TCGroup 对象

TCGroup对象实现了可以向QQ客户端或QQ群发送指定消息字符串的功能.

对象标识 "WWSCommon.TCGroup"

示例

Set obj = CreateObject("WWSCommon.TCGroup")
call obj.TransMessage("
金字塔自动交易群X", "测试,hello, world! ")
Set obj = Nothing

 

方法

TransMessage     发送消息字符串到QQ客户端或QQ

TransMessage 方法

发送消息字符串到QQ客户端或QQ,注意每次发送间隔不能小于3,否则将视为无效指令

TransMessage(WindowName, Message)

WindowName        要发送的QQ客户端窗口标题名称,必须要严格文字的大小写匹配,可以同时发送多个窗口,用分号分割.使用时要确保窗口处于打开状态.

Message           发送的信息内容

返回值: 返回实际发送成功的窗口数量

 

该插件会在2.8版及其之后的版本中安装程序中自带,之前的用户可以通过下面方法安装

1. 下载DLL文件 http://www.weistock.com/download/WWSCommon.dll ,并将其放在C:\盘根目录

2. WINDOWS"开始"按钮->运行, 输入regsvr32 C:\WWSCommon.dll

 

 

 

 

 

 

 

 

 

 

 

 

 

四、      交易(分析)模型问题

4.1  实现自动选择主力合约交易的代码举例(手动控制换月)

 特别感谢 ch3coohqb  的无私分享

代码演示:

 

{主力合约}   

月份:=STRTONUM(STRRIGHT(STKLABEL,2)),linethick0;

if10:=date>=1100916,linethick0;

if09:=date>1100817 and date<1100916;

if08:=date>=1100715 and date<=1100817;

if07:=date<1100715 and date>=1100617;

if06:=date>=1100518 and date<1100617;

if05:=date<=1100517 and date>=1100416;

主力合约:=if(月份=5,if05,if(月份=6,if06,if(月份=7,if07,if(月份=8,if08,if(月份=9,if09,if(月份=10,if10,0)))))),linethick0;

if 主力合约 then begin

4.2  均线类趋势指标完整代码举例(一个不错的五彩K线)

 特别感谢 admin  的无私分享

代码演示:

 

ma1:ma(close,5),colorwhite;
ma2:ma(close,10),coloryellow;
ma3:ma(close,20),colorffcc00;
:=ma(close,26);
var1:=(100 - ((90 * (hhv(high,21) - close)) / (hhv(high,21) - llv(low,21))));
var2:=(100 - ((90 * (hhv(high,21) - close)) / (hhv(high,21) - llv(low,21))));
var3:=(100 - ma(((100 * (hhv(high,5) - close)) / (hhv(high,5) - llv(low,5))),34));
stickline(c> and c>o,h,l,1,0),color00ffcc;
stickline(c> and c>o,o,c,3,1),color00ffcc;
stickline(c> and c<=o,h,l,1,0),color00ffcc;
stickline(c> and c<=o ,o,c,3,0),color00ffcc;
stickline(c<= and c>o,h,l,1,0),colorffcc00;
stickline(c<= and c>o,o,c,3,1),colorffcc00;
stickline(c<= and c<=o ,h,l,1,0),colorffcc00;
stickline(c<= and c<=o,o,c,3,0),colorffcc00;
stickline(cross(ma(var3,6),var1),l,h,1,0),color00ff33;
stickline(cross(ma(var3,6),var1),min(o,c),max(o,c),3,1),color00ff33;
stickline(cross(var2,ma(var3,6)),l,h,1,0),color3300cc;
stickline(cross(var2,ma(var3,6)),min(o,c),max(o,c),3,1),color3300cc; 

4.3  回落百分比(千分比)止损代码举例

 特别感谢 轮回  的无私分享

代码演示:

 

INPUT:ST(3,1,20,1);
BO:=HOLDING>0 AND ENTERBARS>1;
SO:=HOLDING<0 AND ENTERBARS>1;
TP:=IF(BO,HHV(C,ENTERBARS),IF(SO,LLV(C,ENTERBARS),0));
IF BO AND C<=TP*(1-0.001*ST) THEN SELL(1,0,LIMITR,C);
IF SO AND C>=TP*(1+0.001*ST) THEN SELLSHORT(1,0,LIMITR,C);

//以下开仓部分仅为了测试,应用时请删除后换上自己的开仓条件.

MA1:=MA(C,10);
MA2:=MA(C,30);
BUY(CROSS(MA1,MA2),1,LIMITR,C);
BUYSHORT(CROSS(MA2,MA1),1,LIMITR,C);

4.4  图表日内交易模型(模板)举例

 特别感谢 股疯  的无私分享

代码演示:

 

//参数设置:
INPUT:P(1,0,200,1){建仓量},P1(2,0,50,1){初始止损幅度}P2(5,2,100,1){止盈幅度}P3(30,5,60,5){回撤止盈};
VARIABLE:MAXPROFIT=0,{
有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}                 
WIN1:=0;                                                           
 
WIN2:=0;//
止盈、止损、回撤控制 

========================================================
//
账户信息:
资产:ASSET,PRECISION0,NOAXIS,COLORFF00FF;
可用现金:CASH(0),PRECISION0,LINETHICK0;
持仓:HOLDING,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;

========================================================
//
主程序

========================================================//信号模块:该模块主用于多空头及平仓信号的量化

{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}

MA5: MA(CLOSE,5),PRECISION0,;                                                   
MA10:MA(CLOSE,10),PRECISION0,;                                                 
 
MA20:MA(CLOSE,20),PRECISION0,;                                                 
 
                                                                   
 
开多:=CROSS(MA10,MA20);                                             
平多:=CROSS(MA5,MA10);                                              
开空:=CROSS(MA20,MA10);                                             
平空:=CROSS(MA10,MA5);                                              
交易时间:=TIME>VMIN AND TIME<150000; 
                             
 
                                                                   
 
========================================================
//
图表日内交易模块:

 
  IF HOLDING=0 THEN BEGIN
 
     //
多头开仓 
     IF
交易时间 AND 开多 THEN BEGIN 
         BUY(1,P,LIMITR,CLOSE);
 
         MAXPROFIT:=0;
 
     END
 
     
 
     //
空头开仓 
     IF
交易时间 AND 开空 THEN BEGIN 
         BUYSHORT(1,P,LIMITR,CLOSE);
 
         MAXPROFIT:=0;
 
     END
 
 END
 
 
 IF HOLDING>0 THEN BEGIN
 
     //
多头平仓 
     IF
平多 THEN 
         SELL(1,HOLDING,LIMITR,CLOSE);
 
 
     //
多头收盘平仓

     IF NOT(交易时间) THEN 
         SELL(1,HOLDING,LIMITR,CLOSE);
 
 
     //
盈亏计算 
     IF ENTERBARS>0 THEN BEGIN
 
         WIN1:=(C-ENTERPRICE)/ENTERPRICE*100;
 
         IF WIN1>MAXPROFIT THEN
 
             MAXPROFIT:=WIN1;
 
         WIN2:=(MAXPROFIT-WIN1)/MAXPROFIT*100;
 
     END
 
 
     //
多头初始浮亏 P1 止损 
     IF WIN1<-P1 THEN
 
         SELL(1,HOLDING,LIMITR,CLOSE);
 
 
     //
多头利润大于 P2 止盈 
     IF WIN1>P2 THEN
 
         SELL(1,HOLDING,LIMITR,CLOSE);
 
     
 
     //
多头获利后回撤 P3%止盈 
     IF WIN2>P3 AND OPENPROFIT>0 THEN
 
         SELL(1,HOLDING,LIMITR,CLOSE);
 
 END
 
 
 IF HOLDING<0 THEN BEGIN
 
    
 
     //
空头平仓 
     IF
平空 THEN 
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);
 
 
     //
空头收盘平仓 
     IF NOT(
交易时间) THEN 
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);
 
     
 
     //
盈亏计算 
     IF ENTERBARS>0 THEN BEGIN
 
         WIN1:=(ENTERPRICE-C)/ENTERPRICE*100;
 
         IF WIN1>MAXPROFIT THEN
 
             MAXPROFIT:=WIN1;
 
         WIN2:=(MAXPROFIT-WIN1)/MAXPROFIT*100;
 
     END
 
 
     //
空头初始浮亏超过 P1 止损 
     IF WIN1<-P1 THEN
 
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);
 
 
     //
空头利润大于 P2%止盈 
     IF WIN1>P2 THEN
 
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);
 
     
 
     //
空头回撤 P3 止盈 
     IF WIN2>P3 AND OPENPROFIT>0 THEN
 
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);
 
 END

4.5  止损策略代码举例演示

 特别感谢ch3coohqb  的无私分享

代码演示:

 

input:D(5),STEP(1),DD(5);//参数根据需要自行设置

//限价止损

IF  h>=ENTERPRICE+D*mindiff and HOLDING<0 THEN BEGIN//D---D个价位止损

SELLshort(HOLDING<0,HOLDING,stopr,ENTERPRICE+D*mindiff);//止空

END;

IF  l<=ENTERPRICE-D*mindiff and HOLDING>0 THEN BEGIN//D---D个价位止损

SELL(HOLDING>0,HOLDING,stopr,ENTERPRICE-D*mindiff);//止多

END;

//追踪止损

 

stps:=ref(if(holding<0,if(enterprice-llv(l,openbar)>=mindiff*step,enterprice+d*mindiff-CEILING((enterprice-llv(l,openbar))/mindiff/step)*step*mindiff,enterprice+d*mindiff),drawnull),1);

stpl:=ref(if(holding>0,if(hhv(h,openbar)-enterprice>=mindiff*step,floor(((hhv(h,openbar)-enterprice)/mindiff/step))*step*mindiff+enterprice-d*mindiff,enterprice-d*mindiff),drawnull),1);

IF h>=stps and HOLDING<0 THEN BEGIN//D---D个价位止损;step---步长;stps----空单止损位;

SELLshort(HOLDING<0,HOLDING,stopr,stps);//止空

END;

IF l<=stpl THEN BEGIN//D---D个价位止损;step---步长;stpl----多单止损位;

SELL(HOLDING>0,HOLDING,stopr,stpl);//止多

END;

 

//限价止损+追踪止盈

 

stps:=ref(if(holding<0,if(llv(l,openbar)>=enterprice-dd*mindiff-step*mindiff,enterprice+d*mindiff,llv(l,openbar)+step*mindiff),drawnull),1);

stpl:=ref(if(holding>0,if(hhv(h,openbar)<=enterprice+dd*mindiff+step*mindiff,enterprice-d*mindiff,hhv(h,openbar)-step*mindiff),drawnull),1);

IF h>=stps and HOLDING<0 THEN BEGIN//D---D个价位止损;step---步长;stps----空单止损位;dd---dd个价位止盈;

SELLshort(HOLDING<0,HOLDING,stopr,stps);//止空

END;

IF l<=stpl THEN BEGIN//D---D个价位止损;step---步长;stpl----多单止损位;dd---dd个价位止盈;

SELL(HOLDING>0,HOLDING,stopr,stpl);//止多

END;

4.6  落影模型——波段股指模型代码举例

 特别感谢 luoying  的无私分享

代码演示:

 

测试 2010428——918 股指连续 1手股指  投入20  10%保证金   手续费 单边 0.01%   赢利41.42%  适用周期 日内3分钟

注:模型供新人学习,若拿来投机或投资,盈亏自负!

 

input:P(26,20,100,8);
input:S(12,5,40,4);

input:B1(26,5,300,30);
input:B2(2,0.1,10,1);

input:N2(10,1,120,12);
input:N3(20,1,200,20);
input:N4(60,1,200,20);

ma2:ma(c,n2);
ma3:ma(c,n3);
ma4:ma(c,n4);

MID := MA(CLOSE,B1);
UPPER:= MID + B2*STD(CLOSE,B1);
LOWER:= MID - B2*STD(CLOSE,B1),colorred;

diff := EMA(CLOSE,S) - EMA(CLOSE,P);

variable:vmin = 090000;//用于隔夜高开或低开时间差

if (abs(o-ref(c,1))>=20*MINDIFF AND time>090000 and time<090400) then vmin := 091500;

//开多仓条件:
BOPEON1:=c>upper and diff>0 and c>o and c>ma4 AND HOLDING=0 AND time>vmin AND time<150000;

//平多仓条件:
BLIQCON:=holding>0 and cross(ma3,ma2);

//开空仓条件: 
SOPCON1:=c<lower and diff<0 and c<o and c<ma4 AND HOLDING=0 AND time>vmin AND time<150000;

//平空仓条件:
SLIQCON:=holding<0 and cross(ma2,ma3);


buy(BOPEON1,1,market);
sell(BLIQCON,holding,market);
buyshort(SOPCON1,1,market);
sellshort(SLIQCON,holding,market);

//收盘前平仓
sell(time>151000 and holding>0,holding,market);
sellshort(time>151000 and holding<0,holding,market);

可用现金:CASH(0),LINETHICK0;
持仓:HOLDING,LINETHICK0;
资产:ASSET,LINETHICK0;

4.7  落影模型——移动止损模型代码举例

 特别感谢 luoying  的无私分享

代码演示:

 

HNL:=IF(HIGH>REF(HHV(HIGH,3),1),LOW,0);
L1:=IF(HNL>REF(L,1),REF(L,1),IF(HNL>REF(L,2),REF(L,2),IF(HNL>REF(L,3),REF(L,3),IF(HNL>REF(L,4),REF(L,4),0))));
L2:=IF(L1>REF(L,1),REF(L,1),IF(L1>REF(L,2),REF(L,2),IF(L1>REF(L,3),REF(L,3),IF(L1>REF(L,4),REF(L,4),0))));
L3:=VALUEWHEN(L2>0,L2);
LNH:=IF(LOW<REF(LLV(LOW,3),1),HIGH,666);
H1:=IF(LNH<REF(H,1),REF(H,1),IF(LNH<REF(H,2),REF(H,2),IF(LNH<REF(H,3),REF(H,3),IF(LNH<REF(H,4),REF(H,4),666))));
H2:=IF(H1<REF(H,1),REF(H,1),IF(H1<REF(H,2),REF(H,2),IF(H1<REF(H,3),REF(H,3),IF(H1<REF(H,4),REF(H,4),0))));
H3:=VALUEWHEN(H2>0,H2);
SEL:=VALUEWHEN((CLOSE>H3 and REF(CLOSE,1)<=H3)or(CLOSE<L3 and REF(CLOSE,1)>=L3),IF(CLOSE>H3 and REF(CLOSE,1)<=H3,1,0));
LINE:IF(SEL=1,L3,H3),COLORblue;

//开仓
long:= line<c and time>091400 and time<150500;
if long then 
   begin
   sellshort(holding<0,holding,limitr,c);
   buy(holding=0,1,limitr,c);
   end
short:=line>c and time>091400 and time<150500;
if short then
   begin
   sell(holding>0,holding,limitr,c);
   buyshort(holding=0,1,limitr,c);
   end

sell(time>151200 and holding>0,0,thisclose);
sellshort(time>151200 and holding<0,0,thisclose);

PARTLINE( line<c, line, colorrgb(255,0,0));
PARTLINE( line>c, line, colorrgb(0,255,0));

DRAWNUMBER(ISLASTBAR,LINE,LINE,0,COLORblue);

4.8  落影模型——布林通道+MA+diff模型代码举例

 特别感谢 luoying  的无私分享

代码演示:

 

//此模型用于 日内3分钟  白糖  测试619--911  单边手续费5  是盈利的

input:P(26,20,100,8);
input:S(12,5,40,4);

input:B1(26,5,300,30);
input:B2(2,0.1,10,1);

input:N2(10,1,120,12);
input:N3(20,1,200,20);
input:N4(60,1,200,20);

ma2:=ma(c,n2);
ma3:=ma(c,n3);
ma4:=ma(c,n4);

MID := MA(CLOSE,B1);
UPPER:= MID + B2*STD(CLOSE,B1);
LOWER:= MID - B2*STD(CLOSE,B1),colorred;

diff := EMA(CLOSE,S) - EMA(CLOSE,P);

variable:vmin = 090000;//用于隔夜高开或低开时间差

if (abs(o-ref(c,1))>=20*MINDIFF AND time>090000 and time<090400) then vmin := 091500;

//开多仓条件:
BOPEON1:=c>upper and diff>0 and c>o and c>ma4 AND HOLDING=0 AND time>vmin AND time<144800;

//平多仓条件:
BLIQCON:=holding>0 and cross(ma3,ma2);

//开空仓条件: 
SOPCON1:=c<lower and diff<0 and c<o and c<ma4 AND HOLDING=0 AND time>vmin AND time<144800;

//平空仓条件:
SLIQCON:=holding<0 and cross(ma2,ma3);


buy(BOPEON1,1,market);
sell(BLIQCON,holding,market);
buyshort(SOPCON1,1,market);
sellshort(SLIQCON,holding,market);

//收盘前平仓
sell(time>145400 and holding>0,holding,market);
sellshort(time>145400 and holding<0,holding,market);

可用现金:CASH(0),LINETHICK0;
持仓:HOLDING,LINETHICK0;
资产:ASSET,LINETHICK0;

4.9  判断持仓多空方向及持仓量,根据策略调整持仓代码举例

 特别感谢 明心  的无私分享

代码演示:

 

//本代码含义:根据盘面交易系统算出应该持有的净持仓,然后获得账户里的持仓情况,通过对比,使用买卖指令调整账户里的持仓。

 

jc:dc-kc,LINETHICK0;{净持仓=多仓-空仓,这个多仓空仓根据个人策略控制仓位而得到的}
ccfx:if(jc>0,1,IF(jc<0,-1,0)),LINETHICK0;{
判断多空方向}

{取得账户多头持仓和空头持仓}
dtc:TBUYHOLDING(1),LINETHICK0;
ktc:TSELLHOLDING(1),LINETHICK0;

{获取盘面持仓和账户持仓差额}
dtcc:jc-dtc,LINETHICK0;
ktcc:abs(jc)-ktc,LINETHICK0;

if ccfx<>0 then 
   BEGIN
        if ccfx=1 then{
多头处理}
           BEGIN
           TSELLSHORT(ktc>0,ktc);
           TBUY(dtcc>0,dtcc);
           TSELL(dtcc<0,abs(dtcc));
           END
        else {
空头处理}
           BEGIN
           TSELL(dtc>0,dtc);
           TBUYSHORT(ktcc>0,ktcc);
           TSELLSHORT(ktcc<0,abs(ktcc));
           END
   END
else {0
持仓处理}
   BEGIN
       TSELLSHORT(ktc>0,ktc);
       TSELL(dtc>0,dtc);
   END

4.10   虚拟五档行情代码举例

 特别感谢z7c9  的无私分享

代码演示:

 

//本代码在画面中打印出一个模拟的5当行情,旨在研习其中的函数使用方法。

variable:askprice2=0,askvol2=0,bidprice2=0,bidvol2=0;

 variable:askprice3=0,askvol3=0,bidprice3=0,bidvol3=0;

variable:askprice4=0,askvol4=0,bidprice4=0,bidvol4=0;

variable:askprice5=0,askvol5=0,bidprice5=0,bidvol5=0;

 variable:askprice6=0,askvol6=0,bidprice6=0,bidvol6=0;

 

refaskprice:=ref(askprice,1);

refaskvol:=ref(askvol,1);

refbidprice:=ref(bidprice,1);

 refbidvol:=ref(bidvol,1);

 

 if askprice<refaskprice then begin

    askprice6:=askprice5;

    askvol6:=askvol5;

     askprice5:=askprice4;

    askvol5:=askvol4;

    askprice4:=askprice3;

    askvol4:=askvol3;

    askprice3:=askprice2;

     askvol3:=askvol2;

    askprice2:=refaskprice;

    askvol2:=refaskvol;

 end;

 

 if askprice>refaskprice then begin

     askprice2:=askprice3;

     askvol2:=askvol3;

     askprice3:=askprice4;

    askvol3:=askvol4;

    askprice4:=askprice5;

    askvol4:=askvol5;

    askprice5:=askprice6;

   askvol5:=askvol6;

 end;

 

 if bidprice>refbidprice then begin

     bidprice6:=bidprice5;

    bidvol6:=bidvol5;

     bidprice5:=bidprice4;

    bidvol5:=bidvol4;

     bidprice4:=bidprice3;

     bidvol4:=bidvol3;

     bidprice3:=bidprice2;

     bidvol3:=bidvol2;

     bidprice2:=refbidprice;

     bidvol2:=refbidvol;

 end;

 

 if bidprice<refbidprice then begin

     bidprice2:=bidprice3;

     bidvol2:=bidvol3;

     bidprice3:=bidprice4;

     bidvol3:=bidvol4;

     bidprice4:=bidprice5;

     bidvol4:=bidvol5;

     bidprice5:=bidprice6;

     bidvol5:=bidvol6;    

 end;

 

 x1:=900;

 x2:=970;

 y1:=75;

 y2:=25;

 

 n:=0;

 

 drawtextex(1,1,x1,0,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,25,'卖五 '+numtostr(askprice5,n),colorwhite);

 drawtextex(1,1,x2,25,numtostr(askvol5,0),coloryellow);

 

 drawtextex(1,1,x1,50,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,75,'卖四 '+numtostr(askprice4,n),colorwhite);

 drawtextex(1,1,x2,75,numtostr(askvol4,0),coloryellow);

 

 drawtextex(1,1,x1,100,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,125,'卖三 '+numtostr(askprice3,n),colorwhite);

 drawtextex(1,1,x2,125,numtostr(askvol3,0),coloryellow);

 

 drawtextex(1,1,x1,150,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,175,'卖二 '+numtostr(askprice2,n),colorwhite);

 drawtextex(1,1,x2,175,numtostr(askvol2,0),coloryellow);

 

 drawtextex(1,1,x1,200,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,225,'卖一 '+numtostr(askprice,n),colorwhite);

 drawtextex(1,1,x2,225,numtostr(askvol,0),coloryellow);

 

 drawtextex(1,1,x1,250,'--------------------',colorred);

 

 drawtextex(1,1,x1,275,'买一 '+numtostr(bidprice,n),colorwhite);

 drawtextex(1,1,x2,275,numtostr(bidvol,0),coloryellow);

 

 drawtextex(1,1,x1,300,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,325,'买二 '+numtostr(bidprice2,n),colorwhite);

 drawtextex(1,1,x2,325,numtostr(bidvol2,0),coloryellow);

 

 drawtextex(1,1,x1,350,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,375,'买三 '+numtostr(bidprice3,n),colorwhite);

 drawtextex(1,1,x2,375,numtostr(bidvol3,0),coloryellow);

 

 drawtextex(1,1,x1,400,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,425,'买四 '+numtostr(bidprice4,n),colorwhite);

 drawtextex(1,1,x2,425,numtostr(bidvol4,0),coloryellow);

 

 drawtextex(1,1,x1,450,'--------------------',colorgreen);

 

 drawtextex(1,1,x1,475,'买五 '+numtostr(bidprice5,n),colorwhite);

 drawtextex(1,1,x2,475,numtostr(bidvol5,0),coloryellow);

 

 drawtextex(1,1,x1,500,'--------------------',colorgreen);

4.11  完整的包括止损,移动止赢交易范例代码举例

 特别感谢 admin  的无私分享

代码演示:

 

{

代码工作在图表自动交易模式下

当出现开仓后,开仓价格相比,最大损失超过2%止损

当出现盈利后,与最大盈利价格相比,回落到60%幅度后止赢离场

}

MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,30);

variable:maxprofit=0;//有仓位时最大获利幅度

//开仓
IF CROSS(MA1,MA2) THEN
BEGIN
 BUY(1,1);
 maxprofit:=0;
END

//平仓
SELL(CROSS(MA2,MA1),0);

//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;

if holding > 0 and enterbars > 0 then
begin
 win:=(c-enterprice)/enterprice*100; //
记录最大盈利
 if win > maxprofit then
  maxprofit:=win; 
  
 win2:=(maxprofit-win)/maxprofit*100; //
最大盈利后的回调幅度
end

if holding < 0 and enterbars > 0 then
begin
 win:=(enterprice-c)/enterprice*100; //
记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
  
 win2:=(maxprofit-win)/maxprofit*100; //
最大盈利后的回调幅度
end

//出现浮动亏损比如2%平仓
止损:SELL(win < -2,0);
 
//
出现最高盈利后,回落到盈利的60%平仓出场
止赢:SELL(win2 >= 60 and openprofit > 0, 0);

4.12  下套利单模型代码举例

 特别感谢 admin  的无私分享

代码演示:

 

//比如棉花1009和棉花1101差价超过1800元,下郑州套利指令进行反向套利;

diff:DYNAINFO2(28,'CF09')-DYNAINFO2(28,'CF11');

//如果大于1800出现套利机会,买0911
TBUY(diff>1800,1,lmt,DYNAINFO2(34,'CF09'),0,'','CF09');
TBUYSHORT(diff>1800,1,lmt,DYNAINFO2(28,'CF11'),0,'','CF11');

//如果小于1000则套利平仓
TSELL(diff<1000,1,lmt,DYNAINFO2(28,'CF09'),0,'','CF09');
TSELLSHORT(diff<1000,1,lmt,DYNAINFO2(34,'CF11'),0,'','CF11');

//以上公式只能运行在后台自动交易中,并且为了出现套利机会尽快保证成交,请选择 高频扫描 模式

4.13  套利之公式运用-套利品种构建步骤及代码举例

 特别感谢redest  的无私分享

代码演示:

 

前提:利用金字塔软件较全的交易数据及较强的公式扩展功能。

原理:取交易合约数据中的开、高、低、收数据,计算形成套利数据的开、高、低、收

然后通过公式指标计算,在主图中显示

步骤一、套利数据的构建,合约代码必须准确,否则没有效果

TL_c:="sry01$close"-"sry05$close"; {分别引用糖01和糖05合约的收盘价}

TL_o:="sry01$open"-"sry05$open";

TL_h:="sry01$high"-"sry05$high";

TL_l:="sry01$low"-"sry05$low";

步骤二、K线的构建,有两种方法:

1、通过KLINe函数

KLINE(tl_O,tl_H,tl_L,tl_C,1);

2、自定义K线,可根据自己喜好定义,例:

STICKLINE(TL_c>=TL_o,TL_c,TL_o,8,0),colorred;

STICKLINE(TL_c>=TL_o,TL_h,TL_c,0,0),colorred;

STICKLINE(TL_c>=TL_o,TL_o,TL_l,0,0),colorred;

STICKLINE(TL_c<TL_o,TL_c,TL_o,8,0),colorgreen;

STICKLINE(TL_c<TL_o,TL_h,TL_o,0,1),colorgreen;

 

步骤三、应用,以KLINE函数为例

   根据步骤一和二,建立公式,并在公式中以主图显示,也可副图,

命名公式名称为:TL_SR_01_05

TL_c:="sry01$close"-"sry05$close"; {分别引用糖01和糖05合约的收盘价}

TL_o:="sry01$open"-"sry05$open";

TL_h:="sry01$high"-"sry05$high";

TL_l:="sry01$low"-"sry05$low";

 KLINE(tl_O,tl_H,tl_L,tl_C,1);

然后保存退出,可在不同周期中调用指标TL_SR_01_05

步骤四、制作套利应用指标,以均线为例

TL_c:="sry01$close"-"sry05$close"; {分别引用糖01和糖05合约的收盘价}

TL_o:="sry01$open"-"sry05$open";

TL_h:="sry01$high"-"sry05$high";

TL_l:="sry01$low"-"sry05$low";

 KLINE(tl_O,tl_H,tl_L,tl_C,1);

ma5:ma(TL_c,5);

ma10:ma(TL_c,10);

ma15:ma(TL_c,15);

缺点:

1、每当新增套利品种,需要重新构建套利K线指标,如步骤一;

2、其他应用公式需要对套利中开高低收进行构建并修改,如步骤四。

4.14  交易系统中移动止损代码举例

 特别感谢 admin  的无私分享

代码演示:

VARIABLE: aspect=0; //初始化假定做多头
VARIABLE: stopprice=0;//
止损价格变量
VARIABLE: stopnum = 10; //
止损价差

RUNMODE:0;            //工作于逐周期模式

 

if barpos = 0 then
  stopprice := l - stopnum;

if aspect = 0 then
begin
 
 //
多头处理  
 if l <= stopprice then
 begin
  //
多反空
  aspect:= 1;
  stopprice := h+stopnum;
 end
 
 //
处理移动的底部
 if l - stopnum > stopprice then
  stopprice := l-stopnum;
end

if aspect = 1 then
begin
 
 //
空头处理  
 if h >= stopprice then
 begin
  //
空反多
  aspect:= 0;
  stopprice := l-stopnum;
 end
 
 //
处理移动的底部
 if h + stopnum < stopprice then
  stopprice := h+stopnum;
end

//画线
PARTLINE( aspect = 0, stopprice , colorrgb(255,0,0));
PARTLINE( aspect = 1, stopprice , colorrgb(0,255,0));

4.15  实现延迟信号确认代码举例

 特别感谢 admin  的无私分享

代码演示:

 

本示例以后台自动交易的方式,展现了金字塔实现延迟信号确认的工作原理。

本代码可以实现3天现上穿5天线后,15秒等待信号确认后,再发开仓单。

请选择固定时间间隔模式运行后台自动交易,间隔时间设为1

本公式会在运行时产生很多临时数据,请用户再第二天交易前清空这些历史变量,否则会导致与第二天的临时变量冲突。方法 工具菜单-》数据-》全局变量,进去后,选择清空按钮

 

MA1:=MA(CLOSE,3);
MA2:=MA(CLOSE,5);

CROS:=CROSS(MA1,MA2);

CROS2:=CROSS(MA2,MA1);


BUY1:=FALSE;

IF ISLASTBAR THEN
BEGIN
 IF CROS THEN
 BEGIN
  //
将当前信号周期置全局变量数据库
  //
数据名字前加信号周期,标记周期位置
  CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
  
  //
读取原有变量的时间,判断是否到延时时间
  BUYTIME1:=EXTGBDATA(CRTEMP);
  BUYTIME2:=TIMETOT0(CURRENTTIME);
  DEBUGOUT('D1 %.0f',BUYTIME1);
  IF BUYTIME1 > 1 THEN //
第一次信号的原数据库读取会得到0
  BEGIN
   DEBUGOUT('D2 %.0f',BUYTIME2 - BUYTIME1);
   IF BUYTIME2 - BUYTIME1 > 15 THEN
   BEGIN
    //
大于15秒的延迟,表示信号已经得到确认
    BUY1:=TRUE;
   END
  END
  ELSE
  BEGIN
   //
第一次信号位置记录
   EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));
  END
 END
 ELSE
 BEGIN
  //
否则表示信号中间消失了
  CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
  EXTGBDATASET(CRTEMP,0);
 END
END

TBUY(BUY1,1,MKT);
TSELL(CROS2,0,MKT);

4.16  保本平仓范例

 特别感谢 轮回  的无私分享

代码演示:

 

MA5:=MA(C,5);
MA10:=MA(C,10);
SELL((ENTERBARS>=1 AND HOLDING>0 AND L<=ENTERPRICE) OR CROSS(MA10,MA5),0,LIMITR,C);
SELLSHORT((ENTERBARS>=1 AND HOLDING<0 AND H>=ENTERPRICE) OR  
        CROSS(MA5,MA10),0,LIMITR,C);
BUY(CROSS(MA5,MA10) AND HOLDING=0,1,LIMITR,C);
BUYSHORT(CROSS(MA10,MA5) AND HOLDING=0,1,LIMITR,C);

4.17  将交易明细输出到数据库

*         特别感谢 Z7C9  的无私分享

代码演示:

 

runmode:0;
debug:=1;
database('provider=microsoft.jet.oledb.4.0;data source=test.mdb');


if debug=1 then begin
database('provider=microsoft.jet.oledb.4.0;data source=test.mdb');
if barpos=1 then begin
sql1:='create table tradedetail(opendate datetime,'+
'contractname varchar,'+
'opentime datetime,'+
'openprice real,'+
'tradetype varchar,'+
'closetime datetime,'+
'closeprice real,'+
'winlosspoint int,'+
'lots int,'+
'commissions real,'+
'closewinloss real,'+
'asset real)';
dbexecute(sql1);
end
end


enterhour:=ref(hour,enterbars);
enterminute:=ref(minute,enterbars);

if holding=0 then begin
buy(1,1,limitr,low);
end

if holding>0 then begin
sell(1,holding,limitr,high);
lots:=1;
commission:=6;

if debug=1 then begin
sql2:='insert into tradedetail(opendate,contractname,opentime,openprice,tradetype,closetime,closeprice,winlosspoint,lots,commissions,closewinloss,asset) values("'+
numtostr(year,0)+'-'+numtostr(month,0)+'-'+numtostr(day,0)+'","'+stklabel+'","'+
numtostr(enterhour,0)+':'+numtostr(enterminute,0)+'",'+numtostr(enterprice,0)+',"Buy","'+
numtostr(hour,0)+':'+numtostr(minute,0)+'",'+numtostr(exitprice,0)+','+
numtostr(enterprice-exitprice,0)+','+numtostr(lots,0)+','+numtostr(2*commission*lots,0)+','+
numtostr((enterprice-exitprice)*multiplier*lots-2*commission*lots,0)+','+numtostr(asset,2)+')';
dbexecute(sql2);
end
end

4.18  只显示最近5K线

 特别感谢 董小球  的无私分享

代码演示:

 

RUNMODE:0;

INPUT:N(4,2,500);      //参数申明

BB:=DATACOUNT;

BB2:=BARPOS;

a1:=close;

a2:=open;

a3:=high;

a4:=low;

IF BB-BB2<=N THEN BEGIN

aa:stickline(a1>a2,a1,a2,8,1),colored;

ab:stickline(a1>a2,a3,max(a1,a2),0,1),colored;

ac:stickline(a1>a2,min(a1,a2),a4,0,1),colored;

ad:stickline(a1<a2,a1,a2,8,0),colorblue;

ae:stickline(a1<a2,a3,max(a1,a2),0,1),colorblue;

af:stickline(a1<a2,min(a1,a2),a4,0,1),colorblue;

ag:stickline(a1=a2,a1,a2,8,0),COLORWHITE;

ah:stickline(a1=a2,a3,max(a1,a2),0,1),COLORWHITE;

aj:stickline(a1=a2,min(a1,a2),a4,0,1),COLORWHITE;

END

4.19  当日某笔持仓时间超过N分钟自动平仓算法

 特别感谢 董小球  的无私分享

代码演示:

 

//运行在1分钟周期,可选用小于1分钟的时间轮询模式或者走完K线模式

//下列代码可以实现某笔交易开仓后,如果持仓时间达到3分钟则自动平仓,以控制风险;

//买持

A1:TBUYHOLDINGEX('' ,'' ,0 );

MC:=TTYPEBAR(A1,1);

 

//如果持仓时间超过3分钟则平仓,这里为防止市价强平不成交,应配合交易设置中的“未成交则撤单报单”来使用

IF MC>=3 THEN BEGIN

       TSELL(1,1,MKT);

END

 

//卖持

A2:=TSELLHOLDINGEX('' ,'' ,0 );

MC2:=TTYPEBAR(A2,3);

 

//如果持仓时间超过3分钟则平仓,这里为防止市价强平不成交,应配合交易设置中的“未成交则撤单报单”来使用

IF MC2>=3 THEN BEGIN

       TSELLSHORT(1,1,MKT);

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、      金字塔系统术语解释

5.1  公式测试系统术语-摘要

 

测试品种【数】:参与本次测试的品种总数(单品种时显示品种名称)。

平均利润: 参与测试品种的利润值取平均数。

年回报率:对于单个品种为实际的交易天数投资年化收益率,对于全部综合为指定区间时段内的所有品种总投资年化收益。

交易次数:总交易的次数(单品种时是该品种的交易次数),(开仓+平仓)算作一次。

盈利交易次数:获利(赚了钱的)的交易次数。

胜率:盈利交易次数/交易次数。

成功率:单次交易的盈利大于10%的交易占总交易次数的百分比,为0表示你没有一次交易是盈利10%的;例如,总共10次交易,有2次交易的单次交易盈利大于10%,那么,成功率=2/10=20%,成功率即为20%

        注意:成功率的达标百分比线可以在“出场规则”》“目标利润”中设置您所需要的数值。

年均信号数量:平均一年内发生信号的数量(仅对ENTERLONG简单交易系统有效);例如,测试时间段为1个月,交易了10次,那么年均信号数量就是10*12=120次。

年均交易次数:平均一年内发生交易的数量(平仓才算,开仓不算);例如,测试时间段为1个月,交易了10次,那么年均交易次数就是10*12=120次。

盈利系数:盈利交易次数-亏损交易次数/交易次数。

均盈利/均亏损:(盈利金额/盈利次数)/(亏损金额/亏损次数)

最大连盈次数:所有交易中,几次连续的盈利交易作为连盈次数的统计对象,其中连盈次数最大的次数即为“最大连盈次数”。例如,下列表格中总共10次交易,第3、4、5三次连续的盈利交易给出了“最大连盈次数”为3次,第7、8两次交易虽然也是连盈,但是它的连续次数不是最大的。

 

交易序列

盈利/亏损

1次交易

盈利

2次交易

亏损

3次交易

盈利

4次交易

盈利

5次交易

盈利

6次交易

亏损

7次交易

盈利

8次交易

盈利

9次交易

亏损

10次交易

亏损

 

最大连亏次数:所有交易中,几次连续的亏损交易作为连亏次数的统计对象,其中连亏次数最大的次数即为“最大连亏次数”。其原理与“最大连盈次数”相同,这里不再赘述。

最大连盈幅度:连盈次数下的最大盈利幅度;例如连续10笔盈利相加。

最大连亏幅度:连亏次数下的最大亏损幅度;例如连续10笔亏损相加。

最大浮动盈利:交易过程中,持仓浮动盈利最大的盈利。

最大浮动亏损:交易次数中,持仓浮动亏损最大的亏损。

最大单次盈利:总交易次数中,单次交易盈利最大的那笔。

最大单次亏损:总交易次数中,单次交易亏损最大的那笔。

最大回撤幅度:利润曲线峰顶到谷底最大的幅度/最大资金时的数值;目前金字塔的最大回撤采取的是当前点与最开始0周期以来的最大资产的回调幅度计算而来。 

注:对于程序化交易评测里明细里的最大回撤,是采用同样的道理,记录每笔交易之前的最大回撤值,主要帮助用户查找整个交易过程最大回撤位置的具体位置。

 

最大回撤时间:出现最大回撤幅度的时间点。

5.2  公式测试系统术语-报告

测试品种【数】:参与本次测试的品种总数(单品种时显示品种名称)。

净利润:完成所有交易后,统计手续费及盈利情况之后的现金总额与最初投入测试时的资金额相减得来,盈利时为正值,亏损时为负值。

净利润率:净利润/初期投入资金额

总盈利:每次盈利的交易收益相加得来。

总亏损:每次亏损的交易收益相加得来。

交易次数:总交易的次数(单品种时是该品种的交易次数),(开仓+平仓)算作一次。

胜率:盈利交易次数/交易次数。

年均交易次数:平均一年内发生交易的数量(平仓才算,开仓不算);例如,测试时间段为1个月,交易了10次,那么年均交易次数就是10*12=120次。

盈/亏次数:盈利的交易次数和亏损的交易次数。

多头交易次数:多头交易的次数,(开仓+平仓)算作一次。

空头交易次数:空头交易的次数,(开仓+平仓)算作一次。

多头盈利次数:多头交易中盈利交易的次数。

空头盈利次数:空头交易中盈利交易的次数。

多头胜率:多头交易中的盈利交易次数/多头交易中的交易次数。

空头胜率:空头交易中的盈利交易次数/空头交易中的交易次数。

多头盈亏比:多头交易中的盈利交易次数/多头交易中的亏损交易次数。

空头盈亏比:空头交易中的盈利交易次数/空头交易中的亏损交易次数。

最大单次盈利:总交易次数中,单次交易盈利最大的那笔。

最大单次亏损:总交易次数中,单次交易亏损最大的那笔。

平均盈利:所有盈利的交易的收益相加求平均值得来。

平均亏损:所有亏损的交易的收益相加求平均值得来。

所有平均利润:净利润/交易次数。

均盈利/均亏损:平均盈利/平均亏损。

最大连盈次数:与“摘要”一节中的“最大连盈次数”相同。

最大连亏次数:与“摘要”一节中的“最大连亏次数”相同。

最大连盈幅度:连盈次数下的最大盈利幅度;例如连续10笔盈利相加。

最大连亏幅度:连亏次数下的最大亏损幅度;例如连续10笔亏损相加。

盈利交易平均周期:所有持仓盈利交易的周期/盈利交易次数。

亏损交易平均周期:所有持仓亏损交易的周期/亏损交易次数。

交易平均周期数:所有持仓交易周期/总交易次数。

盈利系数:盈利交易次数-亏损交易次数/交易次数。

最大浮动盈利:与“摘要”一节中的“最大浮动盈利”相同。

最大浮动亏损:与“摘要”一节中的“最大浮动亏损”相同。

最大回撤幅度:与“摘要”一节中的“最大回撤幅度”相同。

最大回撤时间:与“摘要”一节中的“最大回撤时间”相同。

初始投入:初始投入测试的资金额。

最大投入:所有交易过程中投入金额最大的一次。

年回报率:对于单个品种为实际的交易天数总投资年化收益率,对于全部综合为指定区间时段内的所有品种总投资年化收益。

年有效回报率:实际投入资金的年化收益率。

简单买入持有回报:从交易第一天就买入到测试结束后卖出所得到的收益。

买入持有年回报率:简单买入的年化收益率。

总交易额:所有开平仓交易的金额。

交易费:所有开平仓交易的总费用。

交易费/利润:交易费用与净利润相除。

融资、券费用:交易过程中涉及到融资、融券的费用。

测试时间:设置的测试时间段。

测试周期数:与测试的总的K线周期数。

平均仓位:所有交易过程中的仓位百分比总和/总交易次数。

最大仓位:交易过程中持仓仓位最大的一次。

平均持仓量:每次交易持仓量求平均值。

最大持仓量:帐号中持仓量所达到的最大值。

无仓周期数:没有持仓的周期数。

无仓周期比例:无仓周期数/测试周期数

最长无仓周期:在各个连续没有持仓的周期数总和中取最大的一个数值。

平均无仓周期:总交易周期中没有持仓的周期占比。

------------买入信号统计(仅对ENTERLONG简单交易系统有效)-------------------------------

(统计所有买入信号点情况,不考虑交易测试中资金及策略造成的信号删除问题)

      成功率:与摘要描述相同。

      信号数量:  出现信号的数量,不论开平仓种类。

年均信号数量:信号出现的平均年数量。

      五日获利概率:测试当日买入5日内获利的概率。

十日获利概率:测试当日买入10日内获利的概率。

二十日获利概率:测试当日买入20日内获利的概率。

目标周期获利概率:测试当日买入在出场规则中设置的目标周期获利的概率。

 


 


 

六、      金字塔客户端常见故障说明

6.1  指标编辑时点测试报“无法判断该表达式的意图”

报这个错误基本都是指标编写语法方面的错误,较常见的是语句之间忘记加控制语句或者空格导致。例如条件与AND之间忘记加入空格,或者两个条件之间忘记加入AND或者OR等控制语句。这类报错往往是由于指标编写过程中粗心导致,细心检查即可排除故障。

6.2  客户端报“新建分钟线缓冲区时失败!系统此时不能保存分笔成交数据!”

解答:报此错误有可能是因为有的客户为了提高软件运行效率,把金字塔安装在用内存虚拟出来的硬盘盘符中导致。

       建议客户安装到硬盘的普通盘符中,或者更换SSD高速硬盘来安装金字塔。遇到上图报错,一般重启2遍金字塔即可恢复。

6.3  交易下单时报“已撤单报单被拒绝当前状态禁止此项操作”

解答:报此错误,往往那个是由于登录的交易是金仕达模拟交易系统,金仕达系统内部交易记录错误造成,故无法平仓或者撤单。

       本报错临时无法解决,只能等待金仕达交易系统第二个交易日初始化之后才能自行恢复,有时需要多个交易日的初始化才能够恢复正常,因此碰到这种情况可对这个单子不予以理会即可,本报错并不影响其他交易操作。

       一般本报错只会发生在模拟交易系统中,对于正式交易,一般不会发生这种情况。

 

 

七、      金字塔常用网址

金字塔官方网站:http://www.weistock.com

金字塔官方论坛:http://www.weistock.com/bbs

金字塔官方FTPftp://60.28.160.67