您现在的位置:程序化交易>> 期货公式>> (MC)multicharts>> MC知识>>正文内容

请问能否实现满足条件后在一个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  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容