กำลังกรอกข้อมูลส่วนขยาย-สำหรับแลกเปลี่ยนชั่วโมงใน C#

0

คำถาม

ฉันได้ข้อมูลจากหุ้นของผู้ให้บริการวมถึงข้อมูลส่วนขยาย-สำหรับแลกเปลี่ยนชั่วโมง ข้อมูลคือ aggregated 1 นาทีข้อมูลข้อนั้นผมแปลงจากต้อง LANGUAGE List<Aggregate> อยู่ไหน aggregate บรรจุสูงที่ต่ำเปิดปิดแล้วและเวลาของการเริ่มของ aggregated 1-มินหน้าต่าง ฉันค้นข้อมู encompass แลกเปลี่ยนหลายวัน-อาจเป็นร้อยและอาจจะเป็นพัน และการคำนวณของ indicators ต้องไม่รวมหลังจากชั่วโมงข้อมูล ดังนั้นฉันต้องการรายชื่อของร้อยของรายการของวัตถุ:

public class Aggregate
{
    public decimal Close { get; set; }
    public decimal UnixTimestamp { get; set; } // milliseconds
    ...
}

และยังเป็นคนที่ DateTime FromDate แล้ว DateTime ToDate ซึ่ง spans หลายร้อยของวันแล้ว ตอนนี้หนึ่งแน่นอนทางตัวกรองลังจากชั่วโมงข้อมูลคือต้องเปรียบเทียบ UnixTimestamp ของแต่ละรายการที่แลกเปลี่ยนประจำครั้งหน้าต่าง 9:30 ม PST-16:00 PM PST. นั่นคงต้องการเปลี่ยนแปลงทุกๆ UnixTimestamp ต้อง DateTime. นี่เป็นมากมายเปรียบเทียบกับ...Intuitively มันจะดีกว่าการเปลี่ยน FromDate แล้ว ToDate ต้อง UnixTimestamp และกำลังกรองรายการออกไปกับ Linq.

long unixTimeMsecToDate = new DateTimeOffset(aggrParams.ToDate).ToUnixTimeMilliseconds();
long unixTimeMsecFromDate = new DateTimeOffset(aggrParams.FromDate).ToUnixTimeMilliseconds();

อย่างไรก็ตามฉันไม่สามารถเอานิ้วไปจิ้มไว้ตรงกับรหัสการวนรอบผ่านเวลาออกเดทแบบเนี้ย ยังไง?

c# filtering linq
2021-11-23 22:33:57
1

คำตอบที่ดีที่สุด

0

ฉันจัดการกำจัดของ Aggregate วัตถุและแทนที่มันโดยอ้างถึงวัตถุที่มาจากต่างออกห้องสมุดกับเวลาแสดงเป็น C#วันเวลาและแก้ไขปัญหาอยู่ตรงไปตรงมาทางตาม,รถกำลังกรองออกไปหลังจากชั่วโมงข้อมูลคะแนน:

        private void FilterExtendedTradingHours(List<Quote> quoteList, AggrParams aggrParams)
    {
        using (Log.VerboseCall())
        {
            if (aggrParams.Interval == "minute" || aggrParams.Interval == "hour")
            {
                Log.VerboseFormat("Initial {0} count: {1}", aggrParams.Interval, quoteList.Count);

                for(int i = quoteList.Count - 1; i >= 0; i--)
                {
                    if ( quoteList[i].Date.TimeOfDay > new TimeSpan(16,  0,  0) || quoteList[i].Date.TimeOfDay < new TimeSpan(9, 30, 0) )
                    {
                        quoteList.RemoveAt(i);
                    }
                }

                Log.VerboseFormat("Post-filtering {0} count: {1}", aggrParams.Interval, quoteList.Count);
            }
        }
    }
2021-12-01 00:26:22

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่