龙听期货论坛's Archiver

龙听 发表于 2020-7-29 11:09

请问这个文华的代码barslast怎么改写 MC 呢 [MC]

MC用户求助:
文华的代码

A:=HIGH>REF(HIGH);// 最高价大于前K线高点;

B:=REF(HIGH,2+BARSLAST(A)) ;满足条件A的前面3根K线的高点;

c:=REFX(B,1);//取B在一个周期后的值

这个转换为MC 怎么写呢

(来自旧论坛客户,go-yunhang)



MC回复讨论一:
抱歉回复的有点晚!

文华支持未来数据,但是MC不支持未来数据,MC只能从当根bar的位置取历史bar的数据(即向历史回溯);下面先分开来介绍各个部分,然后再汇总给予整体回复。

//A:=HIGH>REF(HIGH);

condition1=high>high[1];

{您可以看一下关键字ago,了解一下MC如何在当根bar回溯历史数据的,例如,回溯前一根bar的最高价,使用high[1],即在后面加括号,括号里面使用1,其它数字的意思以此类推}

//B:=REF(HIGH,2+BARSLAST(A)) ;

value1=2+mro(condition1,20,1);

value2=symbol_high[value1];

{您可以在公式编译器中查看一下函数mro的使用,上面的例子中mro(condition1,20,1)的意思是,在最近20根bar上搜索第一个condition1条件成立的bar并且返回该bar与当根bar的距离;value2存储的是前value1根bar上的最高价}

//c:=REFX(B,1);

由于MC没有办法引用未来数据,比如您是在编号为10的bar上引用编号为11的bar上的数据,那么您需要在编号为11的bar上去回溯检查编号为10的bar上的数据以确定编号为11的bar上的数据是策略需要的



MC回复讨论二:
感谢 Alex,我能直接说文华的BARSLAST函数 跟 函数mro 是一个意思么? 是可以用在回测和实盘里吧 ?



MC回复讨论三:
可以说用在回测和实盘中,这两个函数可以达到同样的功能,只是文华的barslast函数只有一个参数,而mro有三个参数。

两者的对比:

一、barslast没有指定搜索历史bar的范围;而mro可以指定搜索的范围。

二、 barslast只能搜索最近一个,而mro可以指定搜索的是第几个。

三、barslast是封闭的不能更改,而mro是一个开放的函数,可以自行查看内部逻辑代码并且修改。



MC回复讨论四:
可以说用在回测和实盘中,这两个函数可以达到同样的功能,只是文华的barslast函数只有一个参数,而mro有三个参数。

两者的对比:

一、barslast没有指定搜索历史bar的范围;而mro可以指定搜索的范围。

二、 barslast只能搜索最近一个,而mro可以指定搜索的是第几个。

三、barslast是封闭的不能更改,而mro是一个开放的函数,可以自行查看内部逻辑代码并且修改。

页: [1]