欢迎您光临博庭社区!

 找回密码
 立即注册
查看: 11372|回复: 17

金魔方智能交易攻略(2)-交易指令进阶 [复制链接]

Rank: 8Rank: 8

发表于 2012-9-15 00:13:27 |显示全部楼层
本帖最后由 仁心慧能 于 2012-9-18 14:39 编辑

金魔方智能交易攻略(2-交易指令进阶

作者:仁心慧能



以多头开平仓函数为例:

Buy('Symbol'='',Size=DEFAULT,Price=0,Slippage=0,OT=OT_MARKET,OB=OB_NEXTBAR,EntryName='')

Sell('Symbol'='',Size=DEFAULT,Price=0,Slippage=-1,OT=OT_MARKET,OB=OB_NEXTBAR,ExitName='')<from 'EntryName'>


括号里面表示函数的参数,之所以见到有赋值,表示如果不写这个参数,其默认值为等号后面的值,实际应用时填入需要指定的值,而不是写赋值语句。

例如:
Buy;  等价于 Buy('', DEFAULT, 0, 0,OT_Market, OB_NextBar, '');
Buy('',2);  等价于 Buy('', 2, 0, 0,OT_Market, OB_NextBar, '');
Buy('',2, 0,1);  等价于 Buy('', 2, 0, 1,OT_Market, OB_NextBar, '');
Buy('',2, 1000,0,OT_LIMIT);  等价于 Buy('', 2, 1000, 0,OT_LIMIT, OB_NextBar, '');
也就是说,如果你不写从后到前的参数,系统会自动替你填进那些参数,怎么填呢?就是格式中等号后面的那些值。

平仓函数后有尖括号括起来的<from 'EntryName'>,表示这是可选的,需要用到时才写。

这类函数可以设置交易商品、委托类型、时机、数量、价格、滑移价差,还可以指定一个开仓名EntryName,用于标识不同的交易信号所开的仓,以及今后的单独控制;平仓函数则可指定一个平仓名ExitName,并且用from 表示平其中某种信号开的仓。


函数的参量后若有等号,表示等号后的值是默认值,这样的参数按照从后到前的顺序,可以省略不写。省略所有参数的交易指令,其委托数量是取用【策略设置】中的数值,可以为固定数量,也可以由资金自动计算下单量。缺省的交易时机和类型是次周期(OB_NEXTBAR)市价单(OT_MARKET),市价单是要求立即成交的委托单,次周期市价单在历史测评时以下一周期的开盘价作为委托成交价,在实际交易中以周期开始时的市价下单,委托价格一般在买入时为卖一价,卖出时为买一价,有时再加减允许的滑移价差,以保证立即成交。

更详细的参数说明可参看公式编辑器里的函数说明,我们还是多做些实验吧。

  1. //-------金魔方智能交易公式--------------
  2. //例2_1 一目均衡多空策略
  3. {策略:
  4. 1.转换线金叉基准线,本周期收盘时平空反手做多
  5. 2.转换线死叉基准线,本周期收盘时平多反手做空
  6. 3.多头自开仓20周期后平仓
  7. }
  8. input:
  9.   SN(26), FN(9);
  10. 基准线: (HHV(H,SN)+LLV(L,SN))/2;
  11. 转换线: (HHV(H,FN)+LLV(L,FN))/2;
  12. bEnterLong := CrossOver(转换线, 基准线);
  13. bEnterShort := CrossUnder(转换线, 基准线);
  14. if bEnterLong then Buy('', DEFAULT, 0, 0, OT_CLOSE, OB_THISBAR);
  15. if bEnterShort then SellShort ('', DEFAULT, 0, 0, OT_CLOSE, OB_THISBAR);
  16. if BarsSinceEntry(0) >= 20 then Sell;
  17. if BarsSinceEntry(0) >= 20 then BuyToCover;
  18. {
  19. 注解:
  20. 1.CrossOver函数等同于Cross函数
  21. 2.开仓DEFAULT指定的下单量为[策略设置]中的委托数量
  22.   平仓函数里的DEFAULT表示全部平仓
  23. 3.OT_CLOSE 与 OB_THISBAR 配合指定本周期收盘时交易,历史回测时以本周期收盘价作为成交价格,
  24.    实盘自动交易时,对于分钟线周期,其实是在本周期结束,下一周期开始时下市价单的,
  25.    对于日线周期,或者对于分钟线当天收盘的最后一个周期,
  26.    则下单时机在[策略设置]-[自动交易]中的“日收盘交易在(n)秒前下单”指定。
  27. }
复制代码

有图有真相:


对于例1_3的布林通道振荡策略,若想在价格达到上下轨或均线时下单,公式如下:


  1. //-------金魔方智能交易公式--------------
  2. //例2_2  布林通道振荡策略之二
  3. {策略:
  4. 1.价格跌至下轨时开多,价格升至中线时平多
  5. 2.价格升至上轨时开空,价格跌至中线时平空
  6. }
  7. input:
  8.   M(20,5,200,5), N(2), S(3);
  9. Mid :  MA(C,M);
  10. Upper: Mid + N*STD(C,M),Shift1;
  11. Lower: Mid - N*STD(C,M),Shift1;
  12. Buy('', 1, Lower, 0, OT_LIMIT);
  13. Sell('', 1, Mid, 0, OT_LIMIT);
  14. SellShort('', 1, Upper, 0, OT_LIMIT,OB_NEXTBAR);
  15. BuyToCover('', 1, Mid, 0, OT_LIMIT,OB_NEXTBAR);
  16. {
  17. 注解:
  18. 1.Shift1 使指标线向右偏移1个周期,使得它显示时与NEXTBAR的交易时机对上。
  19. }
复制代码

有图有真相:

如图所示,当价格跌到前周期的下轨值时买入,然后价格达到前周期的均线值时卖出,因本周期未结束时,指标值是不定的,所以我们用上一周期的指标值,那么,交易指令的OB参数还是OB_NEXTBAR,可省略,表示在下一周期用本周期的指标值下单,下单类型为OT_LIMIT限价单,限定价格Price参数为布林线下轨Lower等指标值。



这个策略在行情盘整时看起来不错,但在趋势行情时会亏损,那么,我们再来个反向操作策略,并且把布林通道改为肯特纳(Keltner)通道,公式如下:


  1. //-------金魔方智能交易公式--------------
  2. //例2_3  肯特纳(Keltner)通道趋势策略
  3. {策略:
  4. 1.价格升破上轨时开多,价格跌至中线时平多
  5. 2.价格跌破下轨时开空,价格升至中线时平空
  6. }
  7. input:
  8.   M(20,5,200,5), N(2);
  9. Mid :  EMA(C,M);
  10. Upper: Mid + N*ATR(10),Shift1;
  11. Lower: Mid - N*ATR(10),Shift1;
  12. Comment('突破买入价: ', Upper[1]:8:2), ColorRed;
  13. Comment('突破卖空价: ', Lower[1]:8:2), ColorBlue;
  14. Buy('', 2, Upper+MinDiff, -1, OT_STOP);
  15. Sell('', DEFAULT, Mid, -1, OT_STOP);
  16. SellShort('', 2, Lower-MinDiff, -1, OT_STOP);
  17. BuyToCover('', DEFAULT, Mid, -1, OT_STOP);
  18. {
  19. 注解:
  20. 1.ATR(10)为10周期平均真实波幅,均线加减ATR倍数即形成肯特纳(Keltner)通道
  21. 2.Comment('突破买入价: ', Upper[1]:8:2)在主图左上角显示提示信息,
  22.   此处指定输出的数字串为8个字符长度,带2位小数;可以指定颜色
  23. 3.平仓函数委托数量为DEFAULT表示全部平仓
  24. }
复制代码

运行结果如下图:


如图所示,这次的开平仓正好和前例是反着的,因为下单类型为OT_STOP停损单,它与限价单正好是相反的,当我们要买入时,限价单是埋在当前市价的下方,等待价格下跌到限价时成交,而停损单是在当前市价的上方,等待价格向上突破时成交。卖出时方向相反。对于停损单这个术语,卖出停损容易明白,对于买入开仓,可以这样理解,因为我是要买入的,价格在不断往上行,少赚也是一种亏损,所以在价格升到一定位置时买入“停损”。



需要注意的是,停损价之后的Slippage参数都被设为-1,这表示只要价格突破停损价就交易,例如次日跳空高开,不管多高都要买入。如果要限制交易价格,太高了就不买入,那就设置Slippage参数为允许的范围,这种单叫做停损限价单,请自行修改测试。



这次我们在公式的交易指令函数中指定委托数量为2,可以把鼠标移到交易箭头处或查看测评报告中的交易明细。



以上的趋势和振荡策略实例在贴图中都用于日线周期,自动交易常用于日内交易,这类公式有些什么特殊的编制技巧呢?



且听下回分解!



附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 6Rank: 6

激情奖

发表于 2012-10-1 14:19:45 |显示全部楼层
不错,辛苦了!
实盘->理念->技巧->量化->策略->自动交易系统->ctp_api

使用道具 举报

Rank: 6Rank: 6

激情奖

发表于 2012-10-27 15:08:54 |显示全部楼层
还是多做些实验吧。

使用道具 举报

Rank: 4

发表于 2012-12-17 21:16:24 |显示全部楼层
学习了!不错

使用道具 举报

Rank: 1

发表于 2013-2-1 11:43:56 |显示全部楼层
请问这个是要收费的么

使用道具 举报

Rank: 2

发表于 2013-5-12 07:10:10 |显示全部楼层
我来把帖子提到前页去

使用道具 举报

Rank: 6Rank: 6

发表于 2013-7-4 21:57:00 |显示全部楼层
谢谢楼主提供!

使用道具 举报

Rank: 4

发表于 2013-9-17 10:25:54 |显示全部楼层
谢谢提供分享

使用道具 举报

Rank: 6Rank: 6

发表于 2013-11-11 19:27:54 |显示全部楼层
认真学习!

使用道具 举报

Rank: 6Rank: 6

发表于 2013-11-30 10:59:11 |显示全部楼层
学习,不过有点深奥,得耐心学

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

bottom

Archiver|http://www.patiosoft.com

GMT+8, 2017-12-11 08:35 , Processed in 0.132172 second(s), 11 queries .

花生网 Copyrigh©2012

和讯信息科技有限公司 ALL Rights Reserved 版权所有 复制必究

回顶部