我正在尝试在if语句中测试多个变量。
double firstPlot = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values[15][0];
double secondPlot = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values[14][0];
实际上,它们将是多个变量: thirdPlot thirdPlot …
if(firstPlot < highPrice && firstPlot > lowPrice)
是否可以在if语句内一次测试每个变量,而不必重复if语句与变量数相同的次数?就像创建一个将收集所有Plot并同时在if语句中同时进行全部测试的变量一样?
谢谢
答案 0 :(得分:1)
看起来Values
是一个锯齿状的数组,您要从中提取每个基础数组的第一个元素,因此应能执行以下操作:
using System.Collections.Generic;
using System.Linq;
...
double[][] plots = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values;
IEnumerable<double> firstValues = plots.Select(a => a[0]);
bool allValuesInRange = firstValues.All(v => v < highPrice && v > lowPrice);
评论后编辑:
NinjaTrader.NinjaScript.Series<double>[] series =
RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values;
IEnumerable<double> firstValues = series.Select(s => s[0]);
foreach (double firstValue in firstValues)
{
Console.WriteLine(firstValue);
}
答案 1 :(得分:0)
您是否可以遍历数组?例如,如下所示:
private bool CheckValues(/*params here*/)
{
var RMMAVals = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5);
for (int k = 0; k<RMMAVals.Length; k++)
{
if (RMMAVals[k][0] >= highPrice || RMMAVals[k][0] <= lowPrice)
return false;
}
return true;
}