不同数据源下的公式值的调用

老师,请帮解答下

例如:两个数据源在不同的策略单元。

数据源 1  , RB2505 合约 加载双均线交易公式1。

数据源 2 , RB000 加载RSI公式2。

现在我想在数据源1的 双均线公式中可以获取到  RB000 也就是数据源2的 RSI的值用来过滤数据源1 RB2505 的交易信号。

例如 RSI <= 65;

问题1:能否帮助详细解答,我在数据源2 RB000 中应该用哪个 函数从数据源取值。

                              数据源1 中 应该用哪个函数可供数据源1调用。


问题2:如果两个合约放在同一个策略单元的话,是不是在公式1 用getplotnumeric 就可以直接调取。 RSI变量定义必须用Global 嘛?

非常感谢


不同数据源的数据时间起点不同,在多个图层存在的情况下如何判断某个时刻有哪些数据源有数据。
如何跨公式调用变量?如何调用另一个公式的变量?
关于公式互相调用
同周期,但不同数据源的KD指标中的D值不一样
不同周期同品种跨bar数组调用
调用系统公式SAR
我写了一个公式应用,如何在另外一个公式应用里调用这个公式里的变量数据,或者如何调用global的变量数据。
公式管理--调用列表--子级函数 是空的
range中是否可以调用其他数据源
不同PC端的TB之间同步公式和策略

老师,你说的data1的方式是在同一个策略里面订阅了不同数据源,我知道的。   我的主要问题是1,在两个不同策略单元之间的获取,应该要用SetGlobalVar 吧。

两个不同的单元,我觉得读写基础数据更好 setdic getdic

getplotnumeric  是获取图表上的plot输出内容,一般是2个公式之间操作

1.比如你调用,data1的ma1,就是data1.ma1  ,data1就是图层前缀 ,看好图层号去使用

2.要保证图层变量计算过了,参考系统的ma公式

//------------------------------------------------------------------------
// 简称: MA
// 名称: 移动平均线
// 类别: 策略应用
// 类型: 内建应用
//------------------------------------------------------------------------
Params
    Numeric Length1(5);
    Numeric Length2(10);
    Numeric Length3(20); 
    Numeric Length4(30);
    Numeric Length5(60);    //股票使用
    Numeric Length6(120);   //股票使用
    Numeric Length7(240);    //股票使用
Vars
    Natural CodeProperty codePro;
Events
    OnReady()
    {
        
        Range[0:DataSourceSize() - 1]
        {
            GetProperty(codePro);
            if(codePro.bigCategory == Enum_CategoryStocks() || codePro.bigCategory == Enum_CategoryForeignStocks())
            {
                SetBackBarMaxCount(1+Max(Max(Max(Max(Max(Max(Length1,length2),Length3),Length4),Length5),Length6),Length7));
            }
            else
            {
                SetBackBarMaxCount(1+Max(Max(Max(Length1,length2),Length3),Length4));
            }
            setPlotOption("MA1", "begin-bar", Length1);
            setPlotOption("MA2", "begin-bar", Length2);
            setPlotOption("MA3", "begin-bar", Length3);
            setPlotOption("MA4", "begin-bar", Length4);
            setPlotOption("MA5", "begin-bar", Length5);
            setPlotOption("MA6", "begin-bar", Length6);
            setPlotOption("MA7", "begin-bar", Length7);
        }
    }
    
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {
            If(Length1 > 0)
            {
                PlotNumeric("MA1",AverageFC(Close,Length1));
            }
            If(Length2 > 0)
            {
                PlotNumeric("MA2",AverageFC(Close,Length2));
            }
            If(Length3 > 0)
            {
                PlotNumeric("MA3",AverageFC(Close,Length3));
            }
            If(Length4 > 0)
            {
                PlotNumeric("MA4",AverageFC(Close,Length4));
            }
            
            if(codePro.bigCategory == Enum_CategoryStocks() || codePro.bigCategory == Enum_CategoryForeignStocks())
            {
                If(Length5 > 0)
                {
                    PlotNumeric("MA5",AverageFC(Close,Length5));
                }
                If(Length6 > 0)
                {
                    PlotNumeric("MA6",AverageFC(Close,Length6));
                }
                If(Length7 > 0)
                {
                    PlotNumeric("MA7",AverageFC(Close,Length7));
                }
            }
        }
    }
//------------------------------------------------------------------------
// 编译版本    GS2010.12.08
// 版权所有    TradeBlazer Software 2003-2025
// 更改声明    TradeBlazer Software保留对TradeBlazer平
//            台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

range范围内表示图层循环,则每个图层的ma1到ma7都得到了计算

那么后续你调用任意图层的data[n].ma1都是可以的