edwardkm 发表于 2015-6-8 13:09:25

关于D1与主力合约的关系问题。

版主,你好。
我在《公式应用设置》中选择了映射委托为D0—主力合约,但在我自己的公式代码中应用了Data1.来调用Data1商品的行情函数。
而在《商品设置》中仅看到Data0对应的商品是IF888,看不到Data1对应的商品。
不知道我能实现调用吗?策略能正常运行吗?
谢谢!

小米 发表于 2015-6-8 13:45:01

你的Data1是插入的什么合约呢?如你所说的,应该是IF888吧??
你的开仓信号指令是写在哪个data上的呢??

edwardkm 发表于 2015-6-8 13:55:42

小米 发表于 2015-6-8 13:45 static/image/common/back.gif
你的Data1是插入的什么合约呢?如你所说的,应该是IF888吧??
你的开仓信号指令是写在哪个data上的呢?? ...

按理说Data1应该是插入的IF1506,现阶段它是主力合约,我用的是“D0—主力合约”的映射委托关系,但是在《商品设置》里看不到它,既没有“IF1506”也没有“主力合约”是“Data1”的商品在里面,仅有一个IF888为Data0一项。
开仓信号我写在Data0上,也就是“IF888”上,不知道我说清楚了没有。
如果我在IF888上插入商品IF1506,再用“D0—D1”的映射委托的话,在《商品设置》中,我能看到Data0为IF888,Data1为IF1506两项。

小米 发表于 2015-6-8 14:14:27

edwardkm 发表于 2015-6-8 13:55 static/image/common/back.gif
按理说Data1应该是插入的IF1506,现阶段它是主力合约,我用的是“D0—主力合约”的映射委托关系,但是在 ...

对于您的描述有点晕乎。。。
这样吧,我把委托映射有关的交易设置给理一下吧。
在使用D0---->主力合约时,只需要在图表上加载IF000或IF888并加载指令信号的策略即可。不需要在图表插入其它的任何合约,也不需要在商品设置--属性里看到IF1506的合约与数据。。。
此时,在DATA0的商品设置---属性---属性---关联商品中显示为IF1506.即图表信号的委托单 将发送在合约if1506上。
如果你使用D0---D1,就需在图表上叠加合约了,先加载if888或if000,然后插入合约if1506. 且交易指令是加载在data0的数据上的,然后完成交易的设置方可。
ps: 在使用委托映射功能时,特别是使用指数数据来加载信号时,一定要配合使用委托偏移的功能 ,以提高成交的概率

edwardkm 发表于 2015-6-8 14:15:30

哦,我有点儿理解你的意思了,你的意思是说,IF888本身就是主力合约,所以不会在《商品设置》中有两个商品,是这样吧?但是IF888能交易吗?IF000呢?
我不知从哪里看到这两个是数据合约,不是交易合约,不知道我理解对了没有?
请赐教!

edwardkm 发表于 2015-6-8 14:28:37

嗯,嗯。
在DATA0的商品设置---属性---属性---关联商品中显示为IF1506。对的。我看到了,如您所说,是这样的。那,我是不是应该把代码中的Data1.Q_XXX这样的调用去掉Data1.呢?
我在使用D0—D1映射委托时,使用的是A_Sendorder和全局变量,是能正常发单的。
谢谢!

edwardkm 发表于 2015-6-8 14:50:32

本帖最后由 edwardkm 于 2015-6-8 14:56 编辑

小米 发表于 2015-6-8 14:14 static/image/common/back.gif
对于您的描述有点晕乎。。。
这样吧,我把委托映射有关的交易设置给理一下吧。
在使用D0---->主力合约时 ...

“ps: 在使用委托映射功能时,特别是使用指数数据来加载信号时,一定要配合使用委托偏移的功能 ,以提高成交的概率”
上面所说的提示,我在代码中有两个全局变量来记录持仓标识(0)和发单标识(0),A_SendOrder后,发单标识为1,不再发单,5个tick之后,持仓为非零之后,就把发单标识置零;5个tick之后,持仓仍为0,A_Delete,之后再把两全局变量置零。另外发单的时候取即时行情加减跳数。
应该达到您所说的要求了吧,请帮我看看,逻辑上有没有问题。
另外,如果我按照您所说的设置委托偏移。我的代码中又加入了上述的限制。实际运行的时候,TB将按什么来处理呢?会有冲突吗?
谢谢!

小米 发表于 2015-6-8 15:56:35

edwardkm 发表于 2015-6-8 14:15 static/image/common/back.gif
哦,我有点儿理解你的意思了,你的意思是说,IF888本身就是主力合约,所以不会在《商品设置》中有两个商品 ...

1.if000 与 if888不是交易所提供的合约代码,不可以直接对这二个合约下单。。所以在用这二个合约加载策略时,要使用委托映射功能,映射到交易所提供的可交易的合约上。
2.我不太清楚你的代码里data1.q_xxx是干嘛用的,所以在这里要不要去掉不置可否。
   但务必注意的是a_sendorder来交易是不支持委托映射的功能 (之所以我在4#的第四行回复里强调了“即图表信号的委托单”就是要提醒这一点,因为a_sendorder是没有信号的,只是buy,sell等指令方在图表上显示信号)
如果你的data0合约是000或888,那a_sendorder也不可能有正常的发单的。
3. a_sendorder指令也不支持委托偏移的设置的。。所有的需求都必须在该指令里写好。

小米 发表于 2015-6-8 15:57:04

edwardkm 发表于 2015-6-8 14:15 static/image/common/back.gif
哦,我有点儿理解你的意思了,你的意思是说,IF888本身就是主力合约,所以不会在《商品设置》中有两个商品 ...

1.if000 与 if888不是交易所提供的合约代码,不可以直接对这二个合约下单。。所以在用这二个合约加载策略时,要使用委托映射功能,映射到交易所提供的可交易的合约上。
2.我不太清楚你的代码里data1.q_xxx是干嘛用的,所以在这里要不要去掉不置可否。
   但务必注意的是a_sendorder来交易是不支持委托映射的功能 (之所以我在4#的第四行回复里强调了“即图表信号的委托单”就是要提醒这一点,因为a_sendorder是没有信号的,只是buy,sell等指令方在图表上显示信号)
如果你的data0合约是000或888,那a_sendorder也不可能有正常的发单的。
3. a_sendorder指令也不支持委托偏移的设置的。。所有的需求都必须在该指令里写好。

edwardkm 发表于 2015-6-8 23:37:27

本帖最后由 edwardkm 于 2015-6-8 23:42 编辑

小米 发表于 2015-6-8 15:57 static/image/common/back.gif
1.if000 与 if888不是交易所提供的合约代码,不可以直接对这二个合约下单。。所以在用这二个合约加载策略 ...

好的,米大师,我重新梳理思路,说明如下,请帮忙裁定,如何处理?
1.起先,我是在IF888上叠加商品IF1506,再选择D0->D1的委托映射。能正常发单,类似语句如:
If (关于data0的条件==ture)
{
Data1.A_SendOrder(Enum_Buy,Enum_Entry,1,Data1.Q_AskPrice+offSet*Data1.MinMove*Data1.PriceScale);
...
}
2.之后,看到委托映射中有选择“D0->主力合约”的选项,个人理解为避免合约到期手工换仓换合约的麻烦,认为TB为用户设计的一个便利,在上例1中,删除了叠加的IF1506,选择了“D0->主力合约”。但是,找不到Data1的相关信息,所以,不知道我上述的语句将如何执行。
3.如果不能执行的话,是不是只能用Buy、sell等等这样的下单指令?或者如1中所选择的委托映射操作,届时只能记得每次到期更换合约?
页: [1] 2
查看完整版本: 关于D1与主力合约的关系问题。