博庭科技

标题: 金魔方智能交易攻略(1)-交易指令基础 [打印本页]

作者: 仁心慧能    时间: 2012-9-14 23:25     标题: 金魔方智能交易攻略(1)-交易指令基础

金魔方智能交易攻略(1-交易指令基础

作者:仁心慧能


博庭公司推出的金魔方软件继承了飞狐交易师优秀的技术分析功能,并且增加了许多新特性,尤其是在公式系统和程序化交易方面,祝愿金魔方再创辉煌!


金魔方用于编写公式的语言称为金语言(KingLanguage,KL),它有许多增强的特性,我们将逐步讲解。金魔方在公式树中增设了一项新的智能交易公式类型,它与旧的交易系统公式相似而又不同。


旧交易系统的范式是:交易信号: 条件表达式

新智能交易的范式是:If 条件表达式Then 交易指令


与交易系统的四种信号对应,新智能交易也有四种基本指令,如下所示:

交易类别:老交易系统信号 –> 新智能交易指令

开多、多头开仓、买入开仓、买入:ENTERLONG–> Buy

平多、多头平仓、卖出平仓、卖出:EXITLONG–> Sell

开空、空头开仓、卖出开仓、空头卖出:ENTERSHORT–> SellShort

平空、空头平仓、买入平仓、空头回补:EXITSHORT–> BuyTocover


旧交易系统只能定义交易信号,但无法在公式中进行仓位控制等复杂操作。

新智能交易公式可以通过交易指令的参数以及许多交易相关函数进行各式各样的精细控制。


最好的学习方法是多实践。让我们开始创建公式,在公式树【智能交易】下【新建文件夹】,命名为“攻略”,然后在其下【新建公式】,输入名称“例1_1”,确定后,出现公式编辑器,输入以下源代码:

  1. //-------金魔方智能交易公式--------------
  2. //例1_1 均线交叉延时过滤买卖策略
  3. {策略:
  4. 1.收盘价金叉30周期均线,且在其上延时几个周期后买入
  5. 2.收盘价死叉30周期均线,且在其下延时几个周期后卖出
  6. 3.外部参数切换多种类型均线
  7. }
  8. input:
  9.   均线周期数(30,5,200,5), //缺省值,最小值,最大值,步长
  10.   延时周期数(0,0,6,1), 均线类型(1,1,5,1);
  11. switch 均线类型 begin
  12.   case 1: MA1 := MA(C,均线周期数);
  13.   case 2: MA1 := MA((H+L+C)/3,均线周期数);
  14.   case 3: MA1 := EMA(C,均线周期数);
  15.   case 4: MA1 := WMA(C,均线周期数);
  16.   case 5: MA1 := SMA(C,均线周期数,1);
  17. end
  18. Plot(MA1,'均线'); //显示均线
  19. bEnterLong := BarsLast(Cross(C, MA1))=延时周期数 And C>MA1;
  20. bExitLong := BarsLast(Cross(MA1,C))=延时周期数 And C<MA1;
  21. if bEnterLong then Buy;
  22. if bExitLong then Sell;
  23. {
  24. 注解:
  25. 1.用 input 语句声明公式参数,好处是便于修改、复制。
  26.   其中的最小值、最大值、步长用于今后的参数优化。
  27. 2.均线类型在外部参数设置,可用于参数优化
  28.   公式中用 switch case语句选用均线类型
  29. 3.Plot函数输出指标线到主图
  30. 4.交易条件先赋给 bEnterLong 等中间变量,便于今后修改、替换,
  31.   但语句多了影响运行效率,若执行速度很重要,就直接把条件表达式写在If后。
  32. 5.Buy类交易函数其实有很多参数,但从后到前可以取缺省值不用写出}
复制代码

编写好公式后,点击工具栏第1个按钮进行编译,如果无误,编译信息窗会提示编译通过,这就可以应用公式了。此时可以看到“攻略”文件夹下多了个“例1_1”公式,双击它或拖放到主图上,这时出现【策略设置】,有【属性】【自动交易】【公式参数】三个页面,先初略看看,不管细节,点确定后:


[attach]266[/attach]


可以看到,收盘价上穿均线后的次周期开盘价出现紫色的三角箭头指示买入价位,收盘价下穿均线后的次周期开盘价出现反向的三角箭头指示卖出价位,这两个箭头间紫色连线表示这笔交易盈利,蓝色则表示亏损。把鼠标移到三角箭头,出现浮动信息窗,可以看到交易详情,包括数量、价格、开平仓配对等信息。在主图左上角公式名称处,右键菜单【查看测评报告】,选择【交易明细】页面,可以看到交易详情:


[attach]267[/attach]


在主图左上角公式名称处,右键菜单【策略设置】,点选【公式参数】页面,修改这3个参数的值,点确定后看看均线和交易信号发生了什么变化?



金魔方的智能交易公式可输出指标线以及画线、文字等对象,便于核对交易信号与指标线的关系、提示报警等,甚至可直接代替技术指标等其它类型的公式。与飞狐公式逐行执行不同,它的运行模式是逐根计算的,才能实现复杂的仓位控制。



我们看到期指主连的K线图下边有复权标记,这是因为股指期货存在换月价差,为了走势的连续性和指标、测评的正确性,需要做复权处理,把鼠标移到复权标记处可看到换月价差信息。



Buy、Sell表示操作股票时的买入、卖出,如果我要操作期货呢?既做多也做空,我们试试下面的公式:

  1. //-------金魔方智能交易公式--------------
  2. //例1_2  自适应均线转向多空策略
  3. {策略:
  4. 1.自适应均线上拐一定幅度后,平空反手开多
  5. 2.自适应均线下拐一定幅度后,平多反手开空
  6. }
  7. input:
  8.   N(10), Pct(0.05);
  9. AMA1: AdaptiveMovAvg(C, N, 2, 30);
  10. bEnterLong := (AMA1[0]/AMA1[1])>(100+Pct)/100;
  11. bEnterShort := (AMA1[0]/AMA1[1])<(100-Pct)/100;
  12. if bEnterLong then Buy;
  13. if bEnterShort then SellShort;
  14. {
  15. 注解:
  16. 1.AdaptiveMovAvg为自适应移动平均线,其参数FL=2,SL=30为Kaufman在其《精明交易者》中所用的数值
  17. 2.序列下标表示K线位置,AMA1[0]表示取当前周期的值,AMA1[1]表示取前一个周期的值
  18. 3.当AMA1上升且大于前值百分之Pct时买多,反之卖空
  19. }
复制代码

有图有真相:
[attach]268[/attach]


如图所示,多了蓝色箭头表示空头交易,我们发现,多头平仓交易与空头开仓交易同时执行,查看交易明细证实了这一点。这是因为:

1、  单一策略只能持多仓、持空仓、无持仓三种状态,不允许多空双向同时持仓。

2、  某交易指令开仓时,如果已有反向持仓,先自动平掉旧仓再反手开新仓。


本例在市场中始终持仓,空头开仓时会自动先平掉原有的多头持仓,反之亦然。多空交易交错发生,不需要写平仓指令。



这种机制使得编写公式特别简洁,如果允许同时持有多头和空头仓,公式的逻辑和函数、语句将变得很复杂,难以掌握。虽然单一策略不能同时有多头和空头的持仓,但不同策略可以持有不同方向的仓位,例如策略A持有多头,策略B持有空头,它们互不干扰,而且,不同的策略可以编写在同一个公式文件中,如何实现?敬请持续关注本攻略!



以上例子属于趋势交易策略,我们再试试用布林通道实现振荡交易策略。


  1. //-------金魔方智能交易公式--------------
  2. //例1_3  布林通道振荡策略
  3. {策略:
  4. 1.最低价低于下轨后开多,最高价高于中线后平多
  5. 2.最高价高于上轨后开空,最低价低于中线后平空
  6. 3.可连续同向开仓3次
  7. }
  8. input:
  9.   M(20,5,200,5), N(2), S(3);
  10. //计算布林通道
  11. Mid : MA(C,M);
  12. Upper: Mid + N*STD(C,M);
  13. Lower: Mid - N*STD(C,M);

  14. AllowSameEntries(S);
  15. bEnterLong := L < Lower;  //多头开仓条件
  16. bExitLong := H > Mid;     //多头平仓条件
  17. bEnterShort := H > Upper; //空头开仓条件
  18. bExitShort := L < Mid;    //空头平仓条件
  19. if bEnterLong then Buy;
  20. if bExitLong then Sell;
  21. if bEnterShort then SellShort;
  22. if bExitShort then BuyToCover;
  23. {
  24. 注解:
  25. 1.AllowSameEntries函数设置允许连续同向开仓最大次数
  26.   默认不能连续开同向仓}
复制代码

有图有真相:

[attach]269[/attach]


如图所示,可以用AllowSameEntries函数控制同方向连续开仓的最大次数,如果没有用到这个函数,或者把S参数设置为1,则在已有持仓情况下,不再连续开同方向的仓,大家可以试试。默认不能连续开同向仓,也是为了使大多数策略的公式编写简单,逻辑清晰。


从以上的例子,我们知道,不带任何参数的交易指令是在信号发生的下一周期开盘时进行交易的,因为本周期收盘时才能确定信号最终不变的状态,但那一瞬间却是下不到单的。


在公式编辑器中把鼠标移到Buy函数名处,出现浮动信息窗,看到函数说明,我们发现其实它有很多参数,如何应用这些参数?如何使用其它的下单方式、控制下单时机、价位和数量吗?如果想在收盘时下单怎么办呢?另外,默认的交易数量是如何定的呢?回想起【策略设置】中有“委托数量”的设置,是在那里设置的吗?


且听下回分解!




作者: 麒智    时间: 2012-9-17 12:14

说明不错.
但最好编辑成一个连续的帖子,方便以后连续学习
作者: 少爺丫頭    时间: 2012-9-24 16:23

拜读了!
作者: 312gd    时间: 2012-10-1 14:11

拜读了!不错
作者: 天真小子    时间: 2012-10-20 22:51

学习了!不错
作者: 自游族    时间: 2012-10-27 15:04

拜读大作,顶一个
作者: 朝天椒    时间: 2012-10-28 21:01

学习了!
作者: lymdyx    时间: 2012-11-6 15:44

学习,谢谢楼主!!!
作者: wmxgyx    时间: 2012-12-17 21:14

学习了!不错
作者: zammail    时间: 2013-1-30 21:32

谢谢分享
作者: 夏凯    时间: 2013-2-7 14:49

拜读,初步学习中
作者: gy1181    时间: 2013-2-19 23:17

学习!顶!
作者: mewking    时间: 2013-5-9 20:50

为啥我这里看期指主连同时期高点是11月11日的4053.4,而不是楼主图中的11月5日的3925.4
作者: xishui    时间: 2013-5-10 07:17

谢谢分享!!
作者: 仁心慧能    时间: 2013-5-10 11:49

mewking 发表于 2013-5-9 20:50
为啥我这里看期指主连同时期高点是11月11日的4053.4,而不是楼主图中的11月5日的3925.4 ...

主连数据有问题,我们修正一下,谢谢报告!
作者: justtemp    时间: 2013-5-12 17:27

建议把这个系列的教学帖子汇总到一个置顶贴里。
作者: mewking    时间: 2013-5-13 20:45

仁心慧能 发表于 2013-5-10 11:49
主连数据有问题,我们修正一下,谢谢报告!

现在显示为11月5日高点4019.2,这是已经修正为正确数据了?

为啥不同的软件数据都不一样啊,相同的软件每次打开也不同,抓狂
作者: 仁心慧能    时间: 2013-5-17 12:06

mewking 发表于 2013-5-13 20:45
现在显示为11月5日高点4019.2,这是已经修正为正确数据了?

为啥不同的软件数据都不一样啊,相同的软件 ...

数据已修正,请再看看。我们的主连数据默认是进行换月价差复权处理的,所以每次换月后历史数据会被增减一个价差。取消复权就是当时的主力合约的真实数据
抱歉!感谢!
作者: krisiun    时间: 2013-6-19 12:22

LZ你的第一个策略均线交叉延时过滤系统有问题啊,你试一下,设置本金为100万和本金为1万它提示的买卖点是不一样的,好奇怪,而且有的地方明明符合买点要求它也不提示,打个比方就是豆粕主力在6月14号13:30左右应该提示买点的但是不提示。我用评测系统评测同一参数对不同本金测出来的结果差几万倍都有,这不知道为什么呢
作者: mewking    时间: 2013-6-19 20:46

请教下,就第一个例子来说,能否引用其他品种产生交易信号?比如上证收盘和30日均线交叉产生的信号用来交易IF
作者: yj358883993    时间: 2013-6-24 13:22

认真学习,弄懂金魔方!!
作者: 寒松    时间: 2013-7-4 21:55

谢谢楼主提供!

作者: chenjiaq    时间: 2013-9-17 10:24

谢谢提供分享
作者: xiuzong    时间: 2013-11-11 19:09

谢谢楼主,学习了!
作者: 骑马追牛    时间: 2013-11-30 11:33

谢谢,学习。
作者: fantasynew    时间: 2013-11-30 13:54

krisiun 发表于 2013-6-19 12:22
LZ你的第一个策略均线交叉延时过滤系统有问题啊,你试一下,设置本金为100万和本金为1万它提示的买卖点是不 ...

不同本金会造成持仓不同,本金不够甚至无法开仓,所以买卖点会不一样。
测试的是交易系统,而不是买卖信号。
测试期指主连的话,1万本金一个信号都不会有
作者: 水_木    时间: 2013-12-27 22:10

认真学习,弄懂金魔方!
作者: jsjyld    时间: 2014-2-18 08:26

学习了!
作者: YKMONV520    时间: 2014-3-7 15:05

学习了   好好好
作者: fenge8    时间: 2014-3-9 10:48

今天才发现,我还看不懂
作者: 追牛小三    时间: 2014-3-12 21:19

谢谢分享
作者: csp    时间: 2014-3-13 09:41

功能是很强大
作者: 好奇的火星    时间: 2014-3-13 14:08

孩子写出
还在学习中。。。。。。
作者: 超大规模    时间: 2014-3-31 03:26

看来这里不乏高人,非常振奋,祝贺!
作者: sd9527    时间: 2014-4-10 11:33

学习了!
作者: laipzh    时间: 2014-4-10 16:52

拜读大作,顶一个
作者: goots    时间: 2014-5-31 15:24

金语言是国产智能交易的扛鼎之作!学习中……
作者: lpc    时间: 2014-6-7 09:23

学习,谢谢楼主!!!
作者: freecloud    时间: 2014-6-23 13:29

請問...我下載金魔方 v1.0.0.22 版...安裝後的公式樹  沒有 智能交易 這個公式組  
請問...怎麼解決啊@@??
作者: 客服_wenwen    时间: 2014-6-23 14:07

freecloud 发表于 2014-6-23 13:29
請問...我下載金魔方 v1.0.0.22 版...安裝後的公式樹  沒有 智能交易 這個公式組  
請問...怎麼解決啊@@?? ...

正常的话,应该有啊,您可以重装看看。
您是在繁体操作系统上安装的吗?
作者: freecloud    时间: 2014-6-23 19:52

客服_wenwen 发表于 2014-6-23 14:07
正常的话,应该有啊,您可以重装看看。
您是在繁体操作系统上安装的吗? ...

是的...我是在繁體中文環境安裝的^^"
作者: qq1213450177    时间: 2014-7-1 23:18

认真学习,普及贴
作者: cccccc    时间: 2014-7-29 09:10

备感荣幸
作者: 张杰    时间: 2014-8-6 13:23

具体介绍一下设置界面吧
作者: okcy    时间: 2014-8-14 16:33

朝天椒 发表于 2012-10-28 21:01
学习了!

很好,学习了,要能够一次发完就更好了。
作者: geyong319    时间: 2014-9-9 14:50

先顶后下,拿了就跑不太好
作者: wujiwuji908    时间: 2014-9-15 13:58

M!
作者: xysr    时间: 2014-9-24 08:25

认真学习,弄懂金魔方
作者: 张杰    时间: 2014-9-24 16:05

为什么有些品种可以智能交易策略复盘 有些品种不可以呢
作者: gf66wj88    时间: 2014-10-1 15:51

好好学习,天天提高!谢谢讲解。
作者: tpy7676    时间: 2014-10-5 22:40

好强大的软件!  你们很 牛!
作者: rongnaibin    时间: 2014-10-23 19:52

学习了!不错




欢迎光临 博庭科技 (http://www.hs633.com/) Powered by Discuz! X2