我是c#的新手,我正在尝试构建一个项目数组。我已经看过2d数组和锯齿状数组,只是无法弄清楚我应该使用的是什么,并且无法让它工作。它并不是构建数组,而是循环遍历它以询问数组元素。我在一个现有的图书馆工作,这是所有变量的来源,大多数其他支持的代码我都遗漏了,因为它不相关。一旦找到实例,我就会尝试将字段从0更新为1.非常感谢您提前提供任何帮助。
//Declare array
private double[,] myOpenTrades;
private void mymethod (double score, double RSIComboScore, int type, int line)
{
myOpenTrades[line,0] = type;
myOpenTrades[line,1] = CurrentBar;
myOpenTrades[line,2] = Close[0];
myOpenTrades[line,3] = rewardClose;
myOpenTrades[line,4] = riskClose;
myOpenTrades[line,5] = score;
myOpenTrades[line,6] = RSIComboScore;
myOpenTrades[line,7] = this.getSMATrend();
myOpenTrades[line,8] = Math.Round(NSRSICS(5, 15, 60, 240).Rsi200AVGPlot[0]);
myOpenTrades[line,9] = myReward;
myOpenTrades[line,10] = myRisk;
myOpenTrades[line,11] = 0;
}
protected override void OnMyChange()
{
foreach(double[] row in myOpenTrades)
{
if(Close[0] >= row[3] && row[11]==0)
{
Print("WIN:"+row[10]);
row[11]=1;
}
else if(Close[0] >= row[4] && row[11]==0)
{
Print("LOSE:"+row[9]);
row[11]=1;
}
}
{
答案 0 :(得分:0)
我不知道为什么这会被低估,这似乎是一个新用户做出一些努力的合理问题。
要回答您的问题,数组数组不是最佳选择,因为从逻辑组织的角度来看,您没有相同项目的“网格”(即2D数组),您有多个项目作为一个记录,以及一系列记录。更不用说你似乎试图混合和匹配类型;您的数组声明为double
,但第一个记录type
是一个整数。
我建议使用class
,如下所示:
class OpenTrades
{
public int Type;
public Bar CurrentBar;
public double Score;
// etc...
}
(假设CurrentBar
的类型为Bar
;您必须将Bar
替换为实际的类型。)
然后你将实例化你的类的数组:
OpenTrades[] myOpenTrades = new OpenTrades[11]; // This will create an array of 11 elements, indices 0 to 10
现在,在mymethod
功能中,您可以为每个成员分配值。
myOpenTrades[line].Type = type;
myOpenTrades[line].Bar = CurrentBar;
myOpenTrades[line].Score = score;
// etc ...