请问能否实现满足条件后在一个tick内发出X个sell单?X为变量 [MC]
-
MC用户求助:
第一、关于this bar和next bar的异同,您可以看一下帖子http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3314&highlight=this%2Bbar
第二、this bar on close、next bar at market、next bar at open,这三类语句都是发送的市价单,而市价单在MC中是有优先级的,无论是否允许多笔进场。
说的有点多了,还是等您有问题再逐个回复吧!
解决方案:
sell next bar at open-minmove* 10 point limit;
或者
buytocover next bar at open+minmove*10 point limit;
无论是市价其实可以理解为以涨跌停限价的委托单,即价格优先以对手价进行撮合成交。
而由于MC对于市价单是有优先级的,并且不允许同一次有多笔市价进场或者多笔市价出场,对于条件单没有限制,那么就可以使用限价发送委托单,只不过这里的限价是一个局部区间限价,而不是涨跌停区间限价单。
-
MC回复讨论一:
第一、关于this bar和next bar的异同,您可以看一下帖子http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3314&highlight=this%2Bbar
第二、this bar on close、next bar at market、next bar at open,这三类语句都是发送的市价单,而市价单在MC中是有优先级的,无论是否允许多笔进场。
说的有点多了,还是等您有问题再逐个回复吧!
解决方案:
sell next bar at open-minmove* 10 point limit;
或者
buytocover next bar at open+minmove*10 point limit;
无论是市价其实可以理解为以涨跌停限价的委托单,即价格优先以对手价进行撮合成交。
而由于MC对于市价单是有优先级的,并且不允许同一次有多笔市价进场或者多笔市价出场,对于条件单没有限制,那么就可以使用限价发送委托单,只不过这里的限价是一个局部区间限价,而不是涨跌停区间限价单。
-
MC回复讨论二:
非常感谢指导!
可能我没有把问题描述清楚。
mc内部确实对应了有多种进出场方式,不过我没有落脚在这里。
举个例子:
1,给所有进场单编了号1…n,每次进场的量各不相同,编号为n的单买入n+1手
2,进场之后某个时刻出场,第一笔出场卖出m手,m>n+1就是说比最后那次进场单手数都大,但小于总持股数
3,如何在一个tick内实现卖出m手股票,所谓一个tick内,是指如果是tick周期,那么在程序运行一次的时候把单全部发出,不在一个tick内很容易实现,每次只卖一部分,人为标记一个变量来表示是不是卖完了就好,这里的主要问题是mc不允许在loop内部做出buy或者sell动作,一个tick内要完成有没有别的方法?
4,进一步地,要求:后入场的买单先被卖出,其他要求一样,能否实现(同样,这个在多几个的tick实现起来也没什么困难)
这个的落脚点不在于this bar,next bar,而在于mc限定循环内部不能发单(当然这么操作的危险性很大,如果循环条件出了问题,实盘直接造成的后果很严重),但是如果明确知道一个大于零的整数又不是无穷大(比如一个变量,只是无法提前知道多大)次发单,危险性就没那么大了,我想问的是mc内部有没有这种机制,也就是在运行一次程序的过程中(如果周期是tick其实每个tick程序都被加载了一次)实现卖出变量X个单,3中的那个要求几乎肯定要用到这样的机制才能实现
(实际上我这个要求在实盘中作用不大,实际中不可能会有这么无理的要求,在接下来几个tick完成了交易都是可接受的,类似于几跳成交,不过这里要求一个tick内发单)
-
MC回复讨论三:
之所以强调所谓的tick,主要是这种周期比较小,突出了一次性要把单发出的要求,实盘中肯定不会这么干
所谓后入场的先被卖是指先卖n+1手最后进场多单,再卖n手比最后进场的多单
实际上mc内部应该有这种机制,total这个关键字的作用就是这样,不过它是先进先出的原则,就是先平掉先进场的多单,实际上先平那个单在实盘并没有区别,因为实际上是记账的,每次都有个均值来表示盈亏。
请看:
[SameExitFromOneEntryOnce = false];
vars: var1(1);
if currentbar < 20 then
begin
buy (text(var1)) var1 share this bar on close;
var1 = var1 + 1;
end;
if currentbar = 20 then
begin
sell var1*2 shares total next bar at market;
end;
在图表上MC指示出来,它是从编号1的多单开始一直平到编号为9的多单,而且只卖了编号为9的多单中的4个share,我说的就是这个功能,但是,想换成后进先出。能否实现类似total的后进先出呢?
我的问题实际上就是问有没有一个后进先出的“Total”,或者在MC内置的这些功能里给实现一个?
-
MC回复讨论四:
之所以强调所谓的tick,主要是这种周期比较小,突出了一次性要把单发出的要求,实盘中肯定不会这么干
所谓后入场的先被卖是指先卖n+1手最后进场多单,再卖n手比最后进场的多单
实际上mc内部应该有这种机制,total这个关键字的作用就是这样,不过它是先进先出的原则,就是先平掉先进场的多单,实际上先平那个单在实盘并没有区别,因为实际上是记账的,每次都有个均值来表示盈亏。
请看:
[SameExitFromOneEntryOnce = false];
vars: var1(1);
if currentbar < 20 then
begin
buy (text(var1)) var1 share this bar on close;
var1 = var1 + 1;
end;
if currentbar = 20 then
begin
sell var1*2 shares total next bar at market;
end;
在图表上MC指示出来,它是从编号1的多单开始一直平到编号为9的多单,而且只卖了编号为9的多单中的4个share,我说的就是这个功能,但是,想换成后进先出。能否实现类似total的后进先出呢?
我的问题实际上就是问有没有一个后进先出的“Total”,或者在MC内置的这些功能里给实现一个?
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容