마지막 5 개의 HSwDMI 목록 값에서 Max 값을 찾으려고하는데 for () 루프가 올바른 방법인지 확실하지 않습니다. 함수를 사용하여 마지막 5 개 중 가장 높은 값을 줄 수 있다고 생각했지만 아무것도 찾을 수 없었습니다.
또한 아래 코드에서는 "할당되지 않은 지역 변수 newHSwDMI 사용"오류가 발생하며 그 이유를 알 수 없습니다. 그래도 클래스 수준에서 newHSwDMI를 선언하면 작동합니다.
모든 조언을 주시면 감사하겠습니다.
private List<double> HSwDMI;
HSwDMI = new List<double>();
....
if ((!HSwDMIbool && DMI1[2] - DMI1[1] > 0.001 && DMI1[2] - DMI1[3] > 0.001)
|| (!HSwDMIbool && FlatIndBar && FlatDMI[a-1] - DMI1[1] > 0.001 && FlatDMI[a-1] - DMI(Closes[2],
Convert.ToInt32(DmiPeriod)).Values[0].GetValueAt(flatDMIbar - 1) > 0.001))
{
var hSwDMI = DMI1[2];
HSwDMI.Add(hSwDMI);
HSwDMIbar = CurrentBar - 2;
var hSwDMIprice = Highs[2].GetValueAt(HSwDMIbar);
HSwDMIprice.Add(hSwDMIprice);
HSwDMIbool = true;
b++;
}
if (HSwDMIbool)
{
double newHSwDMI;
for ( int i = 1; i <= 5; i++)
{
if (HSwDMI[i] > HSwDMI[i-1])
newHSwDMI = HSwDMI[i];
}
LastHSwDMI.Add(newHSwDMI);
}
linq를 사용하면 다음과 같이 할 수 있습니다.
var listCount = HSwDMI.Count;
var maxValueInHswDMI = HSwDMI.Skip(listCount-5).Max();
// HSWDMI.Skip(x) skips x amount of items in the list and max returns the max value among the remaining items..
도움이 되었기를 바랍니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다