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

请ALEX帮忙看看阶梯止损 [MC]

  • MC用户求助:

    if bb cross over cc  then begin

            buy next bar at market;

            buyexit1=lowest(low,2);

    end;

    value1=highest(high,barsSinceEntry(0));

    if value1>value1[1] then

            buyexit1=lowest(low,2);

    if marketposition>0 and close cross under buyexit1 then sell next bar at market;

    if bb cross under cc  then begin

            sellshort at next bar market;

            buyexit2=highest(high,2);

    end;

    value2=lowest(low,barsSinceEntry(0));

    if value2>value2[1]

    then buyexit2=highest(high,2);

    if marketposition<0 and close cross above buyexit2 then buytocover next bar at market;

    对您的代码进行了简单的优化,其中有以下几个问题:

    第一、barssinceentry(0)[1]和barssinceentry(0)的返回值是一样的,所以可以通过变量先存储该关键字的返回值,然后再回溯。

    第二、highest(high,barsSinceEntry(0))>highest(high,barsSinceEntry(0))[1]和value1=highest(high,barsSinceEntry(0)); value1>value1[1]; 的区别在于,highest(high,barsSinceEntry(0))[1]在基于前一根bar回溯比较barssincenentry(0)根bar的最高价。

    第三、highest(high,barsSinceEntry(0))在执行中,会随着barssinceentry(0)的值的增大,而使函数对历史数据的回溯范围增大,可能会超出策略属性中设置的最大bar设置值。

    第四、若您基于5分钟周期,需要使用30周期的数据,比如基于30分钟周期的20日均线,那么一种方法是通过调用子图的方法,正如楼上所说的,另一种方法是,直接在5分钟周期上使用120日均线。

     

  • MC回复讨论一:

    if bb cross over cc  then begin

            buy next bar at market;

            buyexit1=lowest(low,2);

    end;

    value1=highest(high,barsSinceEntry(0));

    if value1>value1[1] then

            buyexit1=lowest(low,2);

    if marketposition>0 and close cross under buyexit1 then sell next bar at market;

    if bb cross under cc  then begin

            sellshort at next bar market;

            buyexit2=highest(high,2);

    end;

    value2=lowest(low,barsSinceEntry(0));

    if value2>value2[1]

    then buyexit2=highest(high,2);

    if marketposition<0 and close cross above buyexit2 then buytocover next bar at market;

    对您的代码进行了简单的优化,其中有以下几个问题:

    第一、barssinceentry(0)[1]和barssinceentry(0)的返回值是一样的,所以可以通过变量先存储该关键字的返回值,然后再回溯。

    第二、highest(high,barsSinceEntry(0))>highest(high,barsSinceEntry(0))[1]和value1=highest(high,barsSinceEntry(0)); value1>value1[1]; 的区别在于,highest(high,barsSinceEntry(0))[1]在基于前一根bar回溯比较barssincenentry(0)根bar的最高价。

    第三、highest(high,barsSinceEntry(0))在执行中,会随着barssinceentry(0)的值的增大,而使函数对历史数据的回溯范围增大,可能会超出策略属性中设置的最大bar设置值。

    第四、若您基于5分钟周期,需要使用30周期的数据,比如基于30分钟周期的20日均线,那么一种方法是通过调用子图的方法,正如楼上所说的,另一种方法是,直接在5分钟周期上使用120日均线。

 

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

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


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

相关文章

    没有相关内容