龙听期货论坛's Archiver

龙听 发表于 2021-12-18 14:28

【MRO 函数】使用方法

【MRO 函数】
返回指定表达式为 True 的之前柱状线数量。或者,如果指定的表达式在最后 x 根柱状线内没有发生,该函数将如是通知您。

语法

MRO(Test, Length, Instance)

返回(整数)

包含指定表达式 为 [color=#0000ff]True[/color] 的之前柱状线数量的数值,如果在最后 Length 条柱状线内表达式均不为 [color=#0000ff]True[/color],则返回 -1。参数[table=98%]
[tr][td][p=30, 2, left]名称[/p][/td][td][p=30, 2, left]类型[/p][/td][td][p=30, 2, left]说明[/p][/td][/tr]
[tr][td]
Test [/td][td]
TrueFalse[/td][td]
设置要检查的 True/False 表达式(即 Close > Open)。[/td][/tr]
[tr][td]
Length [/td][td]
数值[/td][td]
设置要检查的柱状线数量。[/td][/tr]
[tr][td]
Instance [/td][td]
数值[/td][td]
设置发生顺序,例如 1 = 最近发生,2 = 次最近发生,以此类推。[/td][/tr]
[/table]



MRO 专门用于确定特定条件发生的时间。它从当前柱状线开始检查并逐渐远离当前柱状线。

该函数返回表示满足 true/false 表达式的之前柱状线数量的数值,即 0 = 当前柱状线,1 = 前 1 根柱状线,2 = 前 2 根柱状线...。如果函数没有在指定 Length 内找到满足条件的柱状线,则返回 -1。

在分析技术中使用 MRO 函数时,始终要检查 MRO 函数的结果后才能将其值用于另一计算或函数。如果在 Length 条柱状线以外发生条件,则返回 -1。

示例[code]Value1 = MRO(Close>Open, 5, 1);[/code]

龙听 发表于 2021-12-18 14:33

MRO函数程式码:[code]

inputs:
        Test( truefalseseries ),
        Len( numericsimple ),
        Instance( numericsimple ) ;                           

MRO = RecentOcc( Test, Len, Instance, 1 ) ;
[/code]里面还套了另外一个函数:RecentOcc

RecentOcc函数程式码:[code]
inputs:
        Test( truefalseseries ),
        Len( numericsimple ),
        Instance( numericsimple ),                           
        MLFlag( numericsimple ) ;                                                   

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

if MLFlag = 1 then
        var0 = 0
else if MLFlag = -1 then
        var0 = Len - 1 ;

var1 = 0 ;

while var0 >= 0 and var0 < Len and var1 < Instance
        begin
        if Test[var0] then
                var1 = var1 + 1 ;
        var0 = var0 + MLFlag ;
        end ;

condition1 = var1 = Instance and Instance > 0 ;
if condition1 then
        RecentOcc = var0 - MLFlag + ExecOffset
else
        RecentOcc = -1 ;[/code]

页: [1]