Friday 28 July 2017

การย้าย ค่าเฉลี่ย กรอง จาวา


ฉันเป็นหลักมีอาร์เรย์ของค่าเช่นนี้อาร์เรย์ข้างต้นเป็น oversimplified ฉัน m เก็บ 1 ค่าต่อมิลลิวินาทีในรหัสจริงของฉันและฉันต้องดำเนินการออกในขั้นตอนฉันเขียนเพื่อหาจุดสูงสุดที่ใกล้เคียงที่สุดก่อนจุดในเวลา ตรรกะล้มเหลวเนื่องจากในตัวอย่างข้างต้นของฉัน 0 36 เป็นยอดจริง แต่อัลกอริทึมของฉันจะมองย้อนกลับไปและดูจำนวนสุดท้าย 0 25 เป็นยอดมากที่สุดเนื่องจากมี sa ลดลงเหลือ 0 24 ก่อนที่เป้าหมายจะใช้ค่าเหล่านี้ และใช้วิธีการที่พวกเขาซึ่งจะเรียบพวกเขาออก bit เพื่อให้ฉันมีค่าเชิงเส้นมากขึ้นเช่นฉันต้องการผลของฉันจะ curvy ไม่ jaggedy. I เคยได้รับการบอกให้ใช้ตัวกรองค่าเฉลี่ยชี้แจงค่าของฉันฉันจะ ทำอย่างนี้มันยากมากสำหรับผมที่จะอ่านสมการทางคณิตศาสตร์ผมจัดการที่ดีมากกับรหัสฉันจะประมวลผลค่าในอาร์เรย์ของฉันใช้การคำนวณค่าเฉลี่ยเคลื่อนที่ชี้แจงไปแม้พวกเขา out. asked กุมภาพันธ์ 8 12 ที่ 20 27 เมื่อต้องการคำนวณ ค่าเฉลี่ยเคลื่อนที่ที่ชี้แจงคุณต้องเก็บข้อมูลบางส่วนไว้รอบ ๆ และ คุณต้องการพารามิเตอร์การปรับค่านี้เรียกระดับเล็กน้อยสมมติว่าคุณกำลังใช้ Java 5 ขึ้นไประบุว่าพารามิเตอร์ที่สลายตัวที่คุณต้องการอาจใช้การปรับค่าควรอยู่ระหว่าง 0 ถึง 1 และใช้ค่าเฉลี่ยในการกรองเมื่ออ่านหน้าของคณิตศาสตร์บางส่วน สิ่งที่คุณจำเป็นต้องรู้จริงๆเมื่อเปลี่ยนเป็นรหัสเป็นที่ mathematicians ชอบเขียนดัชนีในอาร์เรย์และลำดับกับ subscripts พวกเขา ve notations อื่น ๆ ไม่กี่ที่ดีซึ่ง doesn t ช่วยอย่างไรก็ตาม EMA สวยง่ายๆตามที่คุณต้องการ จำได้ว่าค่าเก่าไม่มีอาร์เรย์ของรัฐที่ซับซ้อน required. rieded Feb 8 12 at 20 42 TKKocheran สวยมาก Isn t มันดีเมื่อสิ่งที่สามารถทำได้ง่ายถ้าเริ่มต้นด้วยลำดับใหม่ได้รับ averager ใหม่โปรดทราบว่าคำไม่กี่คำแรกใน ลำดับเฉลี่ยจะกระโดดไปรอบ ๆ เล็กน้อยเนื่องจากผลกระทบขอบเขต แต่คุณจะได้รับผู้ที่มีค่าเฉลี่ยเคลื่อนที่อื่น ๆ ด้วยอย่างไรก็ตามข้อได้เปรียบที่ดีคือคุณสามารถตัดตรรกะเฉลี่ยเคลื่อนที่ลงใน averager และทดสอบได้โดยไม่รบกวน t เขาส่วนที่เหลือของโปรแกรมของคุณมากเกินไป Donal Fellows กุมภาพันธ์ 9 12 ที่ 0 06.I am มีช่วงเวลาที่ยากเข้าใจคำถามของคุณ แต่ฉันจะพยายามตอบ anyway.1 หากอัลกอริทึมของคุณพบ 0 25 แทน 0 36 แล้วมันไม่ถูกต้อง มันไม่ถูกต้องเพราะสมมติว่าเพิ่มขึ้นหรือลดลง monotonic ที่มักจะขึ้นหรือเสมอไปลงถ้าคุณไม่เฉลี่ยข้อมูลทั้งหมดของคุณข้อมูลของคุณ --- จุดที่คุณนำเสนอพวกเขา --- เป็น nonlinear ถ้าคุณต้องการที่จะหาสูงสุด ค่าระหว่างสองจุดในเวลาแล้วชิ้นอาร์เรย์ของคุณจาก tmin เพื่อ tmax และหาสูงสุดของ subarray.2 ที่ตอนนี้แนวคิดของค่าเฉลี่ยเคลื่อนที่ง่ายมากคิดว่าฉันมีรายการต่อไปนี้ 1 4, 1 5, 1 4, 1 5, 1 5 ฉันสามารถเรียบออกโดยใช้ค่าเฉลี่ยของสองตัวเลข 1 45, 1 45, 1 45, 1 5 ขอให้สังเกตว่าหมายเลขแรกเป็นค่าเฉลี่ยของ 1 5 และ 1 4 วินาทีและหมายเลขแรกรายการใหม่ที่สอง เป็นค่าเฉลี่ยของ 1 4 และ 1 5 รายการเก่าที่สามและที่สองรายการใหม่ที่สามค่าเฉลี่ยของ 1 5 และ 1 4 4 และ 3 และอื่น ๆ ที่ฉันสามารถ ได้ทำให้มันเป็นระยะเวลาสามหรือสี่หรือ n สังเกตว่าข้อมูลมีความเรียบมากวิธีที่ดีในการดูค่าเฉลี่ยเคลื่อนที่ในที่ทำงานคือไปที่ Google Finance เลือกสต็อกลองใช้ Tesla Motors volatile TSLA ที่สวยและคลิกที่ technicals ที่ด้านล่างของ แผนภูมิเลือก Moving Average กับช่วงเวลาหนึ่ง ๆ และค่าเฉลี่ยเคลื่อนที่แบบ Exponential เพื่อเปรียบเทียบความแตกต่างของค่าเฉลี่ยของค่าเฉลี่ยที่เป็นค่าลบนี้เป็นเพียงการอธิบายรายละเอียดอื่น ๆ แต่น้ำหนักข้อมูลเก่าน้อยกว่าข้อมูลใหม่นี้เป็นวิธีที่จะทำให้เกิดการปรับให้เรียบไปทางด้านหลัง โปรดอ่านรายการวิกิพีเดียดังนั้นนี่เป็นความคิดเห็นมากกว่าคำตอบ แต่กล่องความคิดเห็นเล็ก ๆ น้อย ๆ เป็นเพียงโชคเล็ก ๆ ถ้าคุณมีปัญหาเกี่ยวกับคณิตศาสตร์คุณสามารถไปกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายแทนการแทนดังนั้น ผลลัพธ์ที่คุณได้รับจะเป็นเงื่อนไข x ล่าสุดหารด้วย x pseudocode ที่ยังไม่ได้ตรวจสอบโปรดทราบว่าคุณจะต้องจัดการกับจุดเริ่มต้นและจุดสิ้นสุดของข้อมูลเนื่องจากคุณสามารถ t เฉลี่ย 5 คำสุดท้ายเมื่อคุณอยู่ในจุดข้อมูลที่ 2 ของคุณได้ , re เป็นวิธีที่มีประสิทธิภาพมากขึ้นในการคำนวณผลรวมรวมเฉลี่ยเคลื่อนที่นี้ - เก่าที่สุดที่เก่าที่สุด แต่นี้คือการได้รับแนวคิดของสิ่งที่เกิดขึ้นข้ามตอบ 8 กุมภาพันธ์ที่ 20 41.A การดำเนินการเฉลี่ยเคลื่อนที่ง่ายใน Java หลายครั้งผมเคย ต้องการคำนวณเมตริกที่เรียบง่ายในแอ็พพลิเคชัน Java ของฉันตัวอย่างเช่นจำนวน Hit ต่อชั่วโมงหรือข้อผิดพลาดตลอดช่วงเวลาขณะที่การคำนวณเมตริกแบบง่ายไม่ใช่เรื่องยากมากนักเพียงแค่ใช้เวลาในโดเมนปัญหาเท่านั้น ฉันรู้สึกประหลาดใจที่ไม่พบโซลูชันที่ได้รับการยอมรับอย่างกว้างขวางสำหรับเมตริกใน Java ฉันได้พบเมตริก แต่ดูเหมือนว่าจะซับซ้อนเกินไปและไม่ได้รับการจัดทำเป็นเอกสารไว้เป็นอย่างดี - ทั้งหมดที่ฉันต้องการจริงๆคือคำนวณค่าเฉลี่ยเคลื่อนที่ที่ฉันคิดเกี่ยวกับปัญหาขึ้นและตัดสินใจ นี่ไม่ใช่ทางออกที่ยากนี่คือโซลูชันของฉันนี่ทำงานได้โดยการสร้างอาร์เรย์ของขนาดความถี่การอัพเดตหน้าต่างจากนั้นชุดข้อความจะนับไปยังดัชนีถัดไปในอาร์เรย์ในความถี่การอัพเดตการนับสำหรับช่วงเวลาคือ เพียง array i - array i 1 ซึ่งนับล่าสุดนับจากนับที่เก่าแก่ที่สุดสำหรับช่วงเวลา 10 นาทีนับที่เก่าแก่ที่สุด i 1 เท่ากับ 10 นาที old. To เพิ่มค่าเฉลี่ยเคลื่อนที่ไปยังโค้ดของเราก่อนอื่นเราต้องใช้ตัวนับ, ใช้เคาน์เตอร์ AtomicLong. This ควรจะเพิ่มขึ้นตามเหตุการณ์ที่คุณสนใจในการคำนวณเช่นคำขอ POST สำหรับบริการ REST เราจำเป็นต้องให้การใช้งานที่มีการเข้าถึงเคาน์เตอร์และที่ทำได้ผ่านทางอินเตอร์เฟซ GetCount ที่นี่ฉันจะสร้างการย้าย เฉลี่ยกับหน้าต่าง 5 นาทีที่ปรับปรุงทุกวินาทีและเพื่อให้ได้ค่าเฉลี่ยในปัจจุบันเราเพียงแค่เรียกใช้เมธอด getAverage รายละเอียดการใช้งานที่สำคัญคือขนาดของอาร์เรย์จะพิจารณาจากการหารหน้าต่างตามความถี่ในการอัปเดตดังนั้นหน้าต่างขนาดใหญ่ที่มีบ่อยๆ ความถี่ในการอัพเดตสามารถใช้หน่วยความจำจำนวนมากในตัวอย่างนี้ขนาดของอาร์เรย์มีความสมเหตุสมผล 300 แต่ถ้าเราสร้างค่าเฉลี่ยเคลื่อนที่ 24 ชั่วโมงโดยมีช่วงเวลา 1 วินาทีขนาดจะเท่ากับ 86400 เหตุผลมากกว่า e ความถี่การปรับปรุงสำหรับรอบระยะเวลา 24 ชั่วโมงอาจเป็นทุกๆ 5 นาทีขนาดอาร์เรย์ของ 288 การพิจารณาการเลือกหน้าต่างและความถี่ในการอัปเดตเป็นหน้าต่างจะต้องหารด้วยความถี่ตัวอย่างเช่นหน้าต่าง 2 นาทีที่มีความถี่การอัปเดต 6 วินาทีเป็นอันเรียบร้อย แต่ความถี่ในการอัพเดตครั้งที่ 7 ไม่ใช่เพราะไม่มีการหารด้วย 120 IllegalArgumentException จะถูกโยนออกถ้าความถี่ในการปรับปรุง modulus หน้าต่างไม่เป็นศูนย์การใช้งานนี้ต้องใช้เธรดต่อค่าเฉลี่ยเคลื่อนที่ซึ่งจะไม่ได้มีประสิทธิภาพมาก เพื่อแชร์เธรดในหลาย ๆ ครั้งอัพเดตฉันได้อัปเดตโค้ดเพื่อแชร์เธรดที่นี่แล้วมีปัญหาสถานะเริ่มต้นที่เราไม่มีข้อมูลสำหรับหน้าต่างทั้งหมดตัวอย่างเช่นถ้าคุณมีหน้าต่าง 5 นาทีและมีเพียง 15 วินาทีเท่านั้น ของข้อมูลการดำเนินการนี้จะส่งกลับค่า null จนกว่าเราจะมีข้อมูล 5 นาทีวิธีการหนึ่งก็คือการประมาณค่าเฉลี่ยสมมติว่าเรามีจำนวน 10 ใน 30 วินาทีจากนั้นเราสามารถประมาณค่าเฉลี่ยได้เป็น 40 ใน 2 นาที เคยมีความเสี่ยงของความผิดพลาดที่สำคัญโดยการคาดการณ์ข้อมูลที่ไม่สมบูรณ์ตัวอย่างเช่นถ้าเรามีการระเบิด 20 ครั้งในเวลา 2 วินาทีเราจะประมาณ 1200 ต่อ 2 นาทีซึ่งเป็นไปได้ที่ค่าเฉลี่ยอยู่ที่ประมาณเฉลี่ย MA. BREAKING DOWN Moving Average - MA. เป็นตัวอย่าง SMA พิจารณาการรักษาความปลอดภัยโดยมีราคาปิดดังต่อไปนี้เกินกว่า 15 วัน 1 สัปดาห์ 5 วัน 26, 28, 26, 29, 27 สัปดาห์ที่ 3 5 วัน 28, 30, 27, 29, 28. MA - 10 วันจะออกจากราคาปิดสุด 10 วันแรกเป็นจุดข้อมูลแรกจุดข้อมูลถัดไปจะลดลงในราคาที่เก่าที่สุดเพิ่มราคาในวัน 11 และใช้ค่าเฉลี่ยและอื่น ๆ ตามที่แสดงไว้ด้านล่างตามที่ระบุไว้ก่อนหน้านี้ MAs ล่าช้าในการดำเนินการราคาปัจจุบันเพราะพวกเขาจะขึ้นอยู่กับราคาที่ผ่านมาระยะเวลาที่ยาวสำหรับ MA, ยิ่งล่าช้าดังนั้น MA 200 วันจะมี มีความล่าช้ามากกว่า MA 20 วันเนื่องจากมีราคาสำหรับ 200 วันที่ผ่านมาความยาวของ MA ที่จะใช้ขึ้นอยู่กับวัตถุประสงค์ในการซื้อขายโดยมีระยะสั้น er MAs ที่ใช้ในการซื้อขายระยะสั้นและระยะยาว MAs เหมาะสำหรับนักลงทุนระยะยาวนักลงทุนและผู้ค้าหุ้นมีการซื้อขายพันธบัตรระยะยาว 200 วันโดยมีส่วนแบ่งเหนือและต่ำกว่าค่าเฉลี่ยเคลื่อนที่นี้ถือเป็นสัญญาณการซื้อขายที่สำคัญ บอกสัญญาณการซื้อขายที่สำคัญด้วยตัวเองหรือเมื่อค่าเฉลี่ยสองตัวขึ้นไปเหนือ MA ที่เพิ่มขึ้นแสดงให้เห็นว่าการรักษาความปลอดภัยอยู่ในขาขึ้นขณะที่ MA ลดลงแสดงให้เห็นว่าอยู่ในขาลงเช่นเดียวกันโมเมนตัมสูงขึ้นได้รับการยืนยันด้วยการครอสโอเวอร์ซึ่งเกิดขึ้นเมื่อ MA ระยะสั้นข้ามระยะยาว MA ระยะสั้นได้รับการยืนยันด้วยการครอสโอเวอร์หยาบคายซึ่งเกิดขึ้นเมื่อ MA ระยะสั้นข้ามต่ำกว่า MA ระยะยาว

No comments:

Post a Comment