欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件新手乐园 → 金字塔使用技巧 [请不要跟帖]

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有25089人关注过本帖平板打印复制链接

主题:金字塔使用技巧 [请不要跟帖]

帅哥哟,离线,有人找我吗?
fly
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/6/20 17:32:05 [只看该作者]

 

 

 

二代码功能编写实现

 

2.1函数参数缺省值中间不能空缺

几乎所有的编程语言函数缺省值都是中间不能空缺的,只能从后面空缺;请仔细查看函数,不要杜撰参数。

拿后台程式化交易开多指令为例:错误示例-------tbuy(zd,1,mkt,'003028',’IF12’);以为只要使用了mkt指令后,价格就不需要填写了,这是错误的方法,(3)中给出了正确写法。

1)正确写法:tbuy(zd,1,mkt;

后面的参数金字塔将自行按默认处理。

2)正确写法:tbuy(zd,1,lmt,c,0) ;

后面的帐号和品种均按默认处理。

3)错误写法:tbuy(zd,1,mkt,'003028',’IF12’)

中间的两个委托价格没有填写,金字塔会吧'003028', ’IF12’当做价格来处理,

正确写法:tbuy(zd,1,mkt,0,0,'003028',’IF12’) ;

        7个参数一一对应。

2.2限定交易次数或者当天不平仓 

 

【金字塔使用技巧】----限定一天交易次数

 

variable:num=0;// 全局变量,来控制当天交易次数

cs:=5;//限定一天最多交易5次

 

ma5:=ma(close,5);

ma20:=ma(close,20);

 

con1:=cross(ma5,ma20);

con2:=cross(ma20,ma5);

 

if cond2 and holding>0 then sell(1,1,market);

if cond1 and holding=0 and lossnum<5  then 

  begin

  buy(1,1,market);

  num:=num+1;

  end

if time=closetime(0) then num:=0;// 商品期货,收盘的同时,num赋值为0

//收盘num不赋值为0,第二天就不再开仓了

 

【金字塔使用技巧】----当日亏损超过5次,则不再交易[图表程序化交易]

 

当日亏损交易次数超过5次,则不再开仓如何写?----图表交易

部分示例(1) :

variable:lossnum=0;// 全局变量,平仓时判断一下是盈利/亏损,若亏损lossnum就加1

cs:=5;//限定一天最多亏损5次

 

ma5:=ma(5,close);

ma20:=ma(20,close);

 

con1:=cross(ma5,ma20);

con2:=cross(ma20,ma5);

if cond2 and holding>0 then

begin

  sell(1,1,thisclose);

  if c<enterprice then lossnum:=lossnum+1;

end

if cond1 and holding=0 and lossnum<cs then  buy(1,1,thisclose);

 

if time=closetime(0) then lossnum:=0;// 商品期货,收盘的同时,lossnum赋值为0

//收盘lossnum不赋值为0,第二天就不再开仓了

 

【金字塔使用技巧】----次交易日起卖出如何编写

[图表程序化交易]    N分钟周期下,买入后,要求从次一个交易日起开始卖出(不能从下一根K线起),这个“次交易日起”条件如何实现?

variable:flag=0;// 全局变量,买开仓时赋值为1

 

if cond1 and holding=0 then

begin

 buy(1,1,market);

     flag:=1;

end

 

if cond2 and holding>0 and flag=0 then  sell(1,1,thisclose);

if  time=CLOSETIME(0)  then flag:=0;//收盘的同时,flag赋值为0

 

2.3限定公式运行的交易帐号/机器码/周期/有效期/品种/期货交易所

【金字塔使用技巧】----限定交易账户为351579使用

if not(strcmp(taccount( 1),'351579')=0) then exit; //限定交易账户为351579使用

 

//上面一句与以下6句等同

drawtextex(1 ,0 ,2 ,2 ,taccount(1));
if not(strcmp(taccount( 1),'351579')=0) then
begin
drawtextex(1,1,500,500,'授权账号不正确-非351579,程序无法使用');
exit;
end

 

【金字塔使用技巧】----限定机器码为888888888的机器使用

drawtextex(1,1,200,800,engincode());
rzb:=strcmp(engincode(),'888888888');
if rzb<>0 then 
begin
drawtextex(1,1,500,500,'程序不能在此计算机上运行');
exit;
end

【金字塔使用技巧】----限定周期,比如1分钟

if DATATYPE<>1 then

begin

drawtextex(1,1,50,950,'本程序使用1分钟周期,请切换到1分钟周期');

exit;

end

 

【金字塔使用技巧】----限定有效期

IF DATE>1121230 THEN EXIT; //限定只能在20121230日之前使用

 

【金字塔使用技巧】----限定交易品种,比如铜

//铜的代码为CU

DRAWTEXTEX(1 ,0 ,2 ,2 ,stkname);      //品种名称

if STRCMP(STRLEFT(STKLABEL ,2 ), 'CU')<>0 then exit;

 

【金字塔使用技巧】----限定公式只在国内4个期货交易所品种上运行

//中金所、上海、大连、郑州

SH:=STRCMP(MARKETLABEL,'ZJ')=0 OR STRCMP(MARKETLABEL,'SQ')=0 OR STRCMP(MARKETLABEL,'DQ')=0 OR STRCMP(MARKETLABEL,'ZQ')=0;

 

IF NOT(SH=1) THEN EXIT;

 

 

2.4限定交易时段下单(剔除集合竞价)

 

【金字塔使用技巧】----限定交易时段下单(剔除集合竞价)--图表程序化

// opentime(1)开盘时间   closetime(0)收盘时间

// DYNAINFO(207)交易所时间

time>opentime(1) and time<closetime(0) and not(islastbar) or (DYNAINFO(207)>opentime(1) and DYNAINFO(207)<closetime(0) and islastbar)

【金字塔使用技巧】----限定交易时段下单(剔除集合竞价)--后台程序化

// DYNAINFO(207)交易所时间

DYNAINFO(207)>opentime(1) and DYNAINFO(207)<closetime(0) and islastbar
 

【金字塔使用技巧】----收盘前1分钟--图表程序化

M1:= T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟

M15:=T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
 

【金字塔使用技巧】----显示当前未走完K线还剩多长时间

M1:TIME0-TIMETOT0(DYNAINFO(207)),LINETHICK0;//剩余秒数
 

【金字塔使用技巧】----用时间参数限定何时平仓--图表程序化

一分钟环境下,当天第n个30分钟K线内开仓的仓位,要求在第n个30分钟K内平仓,也就是第n+1个30分钟K线刚开始前平仓。

ma5:ma(close,5);

ma15:ma(close,15);

 

//5日均线上穿10日均线,开多

buycond:=CROSS(ma5,ma15);

if buycond then buy(holding=0,1,market);

N:=barslast(date<>ref(date,1))+1;

r2:=mod(N,30);

if r2=29 then sell(holding>0,1,limitr,c);//在第29分钟平仓;

 

2.5均线变色

 

均线变色

//5日均线,连续3个向上后(即今天的数值大于昨天的,连续3个),均线用红色显示,

//连续3个向下后,用绿色显示;

//如果数值有上有下,用白色显示。

 

mc:ma(close,5),colorwhite;

rmc:=ref(mc,1);

partline(all(mc>=rmc,3),mc,colorred);

partline(all(mc<=rmc,3),mc,colorgreen);

2.6之字高点连线OR低点连线

【金字塔使用技巧】----之字高点连线OR低点连线

//把之字每一个之字高点之间,连成线

//把之字每一个之字低点之间,连成线

 

//A:代表之字线

A:ZIG(4,0.5);

POLYLINE(cross(A,refx(A,1)),A,COLORRED,1,VTSOLID);//高点连线

POLYLINE(cross(refx(A,1),A),A,COLORgreen,1,VTSOLID);//低点连线

 

 

【金字塔使用技巧】----自己编写波段高价/低价

//波段高价-红色标出

//波段低价-绿色标出

A:=ZIG(4,0.1);

 

DRAWTEXT(cross(A,refx(A,1)),h+2*mindiff,NUMTOSTR(h,0),COLORRED);//波段高价-红色

DRAWTEXT(cross(refx(A,1),A),l,NUMTOSTR(l,0),COLORGREEN);//波段低价-绿色

2.7监控指数,对具体品种下单

 

[后台程序化交易]  监控指数IF13,对具体合约IF01下单,注意事项

     (1).监控里只用监控指数----IF13

    (2).注意下单价格

    限价单委托:忌用CLOSE,因为这样会导致用指数的最新价下委托单;用DYNAINFO2(  7,'IF01')取股指01合约的最新价去下委托单,具体如下示例

     //限价2个最小变动价挂单

     tbuy(1,1,LMT, DYNAINFO2 (7,'IF01')+2*MINDIFF,0,'','IF01');

     tbuy(1,1,MKT,0,0,'','IF01');//市价挂平仓单

2.8想开单成交以后就挂平单

[后台程序化交易]    想让它开单成交以后就挂平单,如何实现?

     以开多平多为例说明如下:

     逻辑上

     1.先判断上一笔单子的类型,如果上一次信号类型为开多

     2.上一笔开多委托没有未成交单

    在满足条件1和条件2的情况下

     3.挂平多单

 

//TTYPE(1)=1上一笔委托是开多;TISPRVREMAIN(1)=0上一笔开多已经成交(没有未成交),则挂平仓单--市价

IF TTYPE(1)=1 AND TISPRVREMAIN(1)=0 THEN tsell(1,1,MKT,0,0,'','IF00');//市价挂平仓单

 

//如果想在开仓价基础上加2点挂平仓单子,修改如下

IF TTYPE(1)=1 AND TISPRVREMAIN(1)=0 THEN tsell(1,1,LMT,TENTERPRICE-2,0,'','IF00');

 

 

2.9后台平仓反手

 

[后台程序化交易]    平仓反手

ma5:ma(close,5);

ma15:ma(close,15);

 

//5日均线上穿15日均线,平空开多

if CROSS(ma5,ma15) and Tholding < 0 then

begin

Tsellshort(1, 0, mkt);

Tbuy(1, 1, mkt);

end

IF CROSS(ma5,ma15) AND Tholding = 0 THEN Tbuy(1, 1, mkt,0,0);

 

//5日均线下破10日均线,平多开空

if CROSS(ma15,ma5) and Tholding > 0 then

begin

Tsell(1, 0, mkt,0,0);

Tbuyshort(1, 1, mkt,0,0);

end

IF CROSS(ma15,ma5) AND Tholding = 0 THEN Tbuyshort(1, 1, mkt,0,0);

 

 

2.10后台公式里发邮件

 

[后台程序化交易]    公式中发邮件,如何实现?

ma5:ma(close,5);

ma15:ma(close,15);

 

//5日均线上穿15日均线,平空开多

if CROSS(ma5,ma15) and Tholding < 0 then

begin

Tsellshort(1, 0, mkt);

Tbuy(1, 1, mkt);

if ISLASTBAR then SENDMAIL(1 ,'123456@QQ.COM','开多','平空开多');//发邮件

end

IF CROSS(ma5,ma15) AND Tholding = 0 THEN Tbuy(1, 1, mkt,0,0);

 

//5日均线下破10日均线,平多开空

if CROSS(ma15,ma5) and Tholding > 0 then

begin

Tsell(1, 0, mkt,0,0);

Tbuyshort(1, 1, mkt,0,0);

if ISLASTBAR then SENDMAIL(1 ,'123456@QQ.COM','开空','持仓变了-平多开空'); //发邮件

end

IF CROSS(ma15,ma5) AND Tholding = 0 THEN Tbuyshort(1, 1, mkt,0,0);

[此贴子已经被作者于2013/12/25 13:11:29编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部