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

老师,请帮解答下例如:两个数据源在不同的策略单元。数据源 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 嘛?非常感谢

老师,你说的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都是可以的