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

下面的策略如何实现,烦请Alex回复,谢谢 [MC]

  • MC用户求助:

    我希望在开仓价格开仓之后,假设价格为2000,朝着开仓方向,每隔60点就记录一次,假设做多,涨了180点,就是3,240点就是4,做空,跌180,就是3,跌240点就是4,这个该如何写,谢谢

     

  • MC回复讨论一:

    以双均线策略为例,您的策略代码如下:

    inputs: Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;

    variables: var0( 0 ), var1( 0 ) ;

    variables: recalcpersist flag(0), recalcpersist valueh(0), recalcpersist valuel(0);

    {这里新建了三个变量,使用了recalcpersist声明,也就是这3个变量每次计算的值都会被保存;若没有加这个关键字的声明,那么这3个变量的计算值只会在当根bar收盘时的计算值才会被保存}

    once begin

    flag=0;

    valueh=0;

    valuel=0;

    end;

    recalclastbarafter(10);

    {这里使用了关键字recalclastbarafter,当信号当前的时间超过信号最近一次计算的时间10秒时,信号执行重新计算一次,这种计算可以取关键字的值及函数的计算,但是不能执行委托单的操作,也就是即使条件满足也不能发送委托单;只能等到当根bar收盘时时条件满足才会执行委托单的操作}

    condition1=getappinfo(aicalcreason)=3;

    {信号的计算方式有很多,condition1为true表示当前的计算是基于recalclastbarafter的计算}

    if condition1=false then begin

    var0 = AverageFC( Price, FastLength ) ;

    var1 = AverageFC( Price, SlowLength ) ;

    condition2 = CurrentBar > 1 and var0 crosses above var1 ;

    if condition2 then                                                                    

    Buy ( "MA2CrossLE" ) next bar at market ;

    condition2 = CurrentBar > 1 and var0 crosses under var1 ;

    if condition2 then                                                                    

    Sell Short ( "MA2CrossSE" ) next bar at market ;

    end;

    {以上基于condition1=false的代码段,您可以将主要的代码放在这里面,这段代码会基于当根bar收盘时进行计算,这样可以减少信号不必要的计算量}

    if marketposition=0 then begin

    flag=0;

    valueh=0;

    valuel=0;

    end

    else

    if marketposition=1 then begin

    valuel=0;

    if high>valueh then

    valueh=high;

    if valueh<>entryprice then

    flag=intportion((valueh-entryprice)/60);

    {当多头进场之后,利用变量valueh始终保存进场之后的最高价,然后flag的计算等于(valueh与进场价的差)/60;当然您也可以直接使用每次计算时的最新价赋值给valueh,这个地方需要看您的策略了}

    end

    else if marketposition=-1 then begin

    valueh=0;

    if low<valuel then

    valuel=low;

    if valuel<>entryprice then

    flag=intportion((entryprice-valuel)/60);

    end;

    注意事项:

    1.您的策略可以在非bar内模式下,但是可能会计算不会及时
    2.您的策略可以使用两个信号,一个信号用于发送委托单(非bar内),另一个信号用于计算flag变量(开bar内)
    3.通过以上的方式,您可以在非bar内模式下及时进行计算flag,也就是及时进行记录盈利的点数。

     

  • MC回复讨论二:

    牛的,不过信息量有点大,我最后其实只需要用到flag里的值,我对第一部分不是很理解,容我细细学习之后再向您请教

     

  • MC回复讨论三:

     

  • MC回复讨论四:

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容