ฉันเป็นหลักมีอาร์เรย์ของค่าเช่นนี้อาร์เรย์ข้างต้นเป็น oversimplified, Im เก็บ 1 ค่าต่อมิลลิวินาทีในรหัสจริงของฉันและฉันต้องดำเนินการออกในขั้นตอนฉันเขียนเพื่อหาจุดสูงสุดที่ใกล้เคียงที่สุดก่อนจุดในเวลา ตรรกะของฉันล้มเหลวเนื่องจากในตัวอย่างข้างต้นของฉัน 0.36 เป็นยอดจริง แต่อัลกอริทึมของฉันจะมองย้อนกลับไปและดูจำนวนสุดท้าย 0.25 เป็นยอดสูงสุดเนื่องจาก theres ลดลงเหลือ 0.24 ก่อนหน้านี้ เป้าหมายคือการใช้ค่าเหล่านี้และใช้อัลกอริธึมกับข้อมูลเหล่านี้ซึ่งจะทำให้บิตเหล่านั้นเรียบขึ้นเพื่อให้มีค่าเชิงเส้นมากขึ้น (เช่น: Id เช่นผลของฉันจะ curvy ไม่ jaggedy) Ive ได้รับการบอกให้ใช้ตัวกรองค่าเฉลี่ยที่ชี้แจงค่าเฉลี่ยกับค่าของฉัน ฉันจะทำเช่นนี้จริงๆมันยากสำหรับฉันที่จะอ่านสมการทางคณิตศาสตร์ที่ฉันจัดการดีมากกับรหัส ฉันจะประมวลผลค่าในอาร์เรย์ของฉันโดยใช้การคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อให้พวกมันออกไปถาม 8 ก. พ. 2 เวลา 20:27 เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนา คุณต้องเก็บข้อมูลบางส่วนไว้รอบ ๆ และคุณต้องใช้พารามิเตอร์การปรับค่า (สมมติว่าคุณกำลังใช้ Java 5 ขึ้นไป): เริ่มต้นด้วยพารามิเตอร์การสลายตัวที่คุณต้องการ (อาจใช้การปรับค่าระหว่าง 0 ถึง 1) และใช้ค่าเฉลี่ย () เพื่อกรอง เมื่ออ่านหน้าเว็บเกี่ยวกับการกลับเป็นซ้ำคณิตศาสตร์บางสิ่งที่คุณจำเป็นต้องรู้จริงๆเมื่อเปลี่ยนเป็นรหัสก็คือนักคณิตศาสตร์ต้องการเขียนดัชนีเป็นอาร์เรย์และลำดับด้วยดัชนีย่อย (พวกเขายังมีโน้ตอื่น ๆ อีกเช่นกันซึ่งไม่ได้ช่วยอะไร) อย่างไรก็ตาม EMA ใช้งานได้ง่ายเพียงเท่านี้คุณจะต้องจำค่าเดิมที่ไม่มีอาร์เรย์สถานะที่ซับซ้อน ตอบกุมภาพันธ์ 8 12 เวลา 20:42 TKKocheran: Pretty much. (ถ้าเริ่มต้นด้วยลำดับใหม่ให้หาค่าเฉลี่ยใหม่) โปรดสังเกตว่าคำไม่กี่คำแรกในลำดับเฉลี่ยจะกระโดดไปรอบ ๆ เล็กน้อยเนื่องจากผลกระทบขอบเขต แต่คุณจะได้รับค่าเฉลี่ยเคลื่อนที่ที่เคลื่อนที่ได้ เกินไป. อย่างไรก็ตามข้อได้เปรียบที่ดีคือคุณสามารถตัดค่าตรรกะเฉลี่ยที่เคลื่อนที่ไปเป็นค่าเฉลี่ยและการทดสอบได้โดยไม่รบกวนส่วนที่เหลือของโปรแกรมมากเกินไป ndash Donal Fellows ก. พ. 9 12 เวลา 0:06 ฉันกำลังมีปัญหาในการทำความเข้าใจคำถามของคุณ แต่ฉันจะพยายามตอบคำถามต่อไป 1) ถ้าอัลกอริทึมของคุณพบ 0.25 แทน 0.36 แล้วมันก็ไม่ถูกต้อง ผิดเพราะสมมติว่ามีการเพิ่มขึ้นหรือลดลงเล็กน้อย (ซึ่งมักจะขึ้นหรือลงไปตลอดเวลา) เว้นแต่คุณจะเฉลี่ยข้อมูลทั้งหมดของคุณจุดข้อมูลของคุณ --- ตามที่คุณนำเสนอ --- ไม่เป็นเชิงเส้น ถ้าคุณต้องการหาค่าสูงสุดระหว่างสองจุดในเวลาจากนั้นแบ่งอาร์เรย์จาก tmin ไปเป็น tmax และหาค่าสูงสุดของอาร์เรย์ย่อยนั้น 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 (สี่และสาม) และอื่น ๆ ฉันสามารถทำให้มันเป็นระยะเวลาสามหรือสี่หรือ n สังเกตว่าข้อมูลมีความนุ่มนวลมากขึ้น วิธีที่ดีในการดูค่าเฉลี่ยเคลื่อนที่ในที่ทำงานคือไปที่ Google Finance เลือกสต็อค (ลองใช้ Tesla Motors volatile สวย (TSLA)) และคลิก technicals ที่ด้านล่างของแผนภูมิ เลือก Moving Average โดยใช้ระยะเวลาที่กำหนดและค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อเปรียบเทียบความแตกต่าง ค่าเฉลี่ยเคลื่อนที่แบบเสวนาเป็นเพียงการอธิบายเพิ่มเติมอีกประการหนึ่งจากข้อมูลนี้ แต่ให้น้ำหนักข้อมูลเก่าน้อยกว่าข้อมูลใหม่นี่เป็นวิธีที่จะทำให้เกิดการปรับให้เรียบไปทางด้านหลัง โปรดอ่านรายการวิกิพีเดีย นี่เป็นความคิดเห็นมากกว่าคำตอบ แต่กล่องความคิดเห็นเล็ก ๆ น้อย ๆ ก็เล็กไป โชคดี. หากคุณมีปัญหาเกี่ยวกับคณิตศาสตร์คุณอาจไปกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายแทนที่จะเป็นเลขชี้กำลัง ดังนั้นผลลัพธ์ที่ได้จะเป็นเงื่อนไข x ล่าสุดหารด้วย x Pseudocode ที่ไม่ได้ตรวจสอบ: โปรดทราบว่าคุณจะต้องจัดการกับจุดเริ่มต้นและจุดสิ้นสุดของข้อมูลเนื่องจากคุณไม่สามารถเฉลี่ย 5 เทอมสุดท้ายเมื่ออยู่ในจุดข้อมูลที่ 2 ได้ นอกจากนี้ยังมีวิธีที่มีประสิทธิภาพในการคำนวณค่าเฉลี่ยเคลื่อนที่นี้ (ผลรวมรวม - เก่าที่สุดที่เก่าที่สุด) แต่นี่เป็นแนวคิดที่จะเกิดอะไรขึ้น ตอบ 8 ก. พ. 12 ที่ 20: 41Exponential Moving Average ค่าเฉลี่ยการเคลื่อนที่แบบ Exponential ค่าเฉลี่ยการเคลื่อนที่แบบ Exponential Average Average Moving Average แตกต่างจากค่าเฉลี่ยเคลื่อนที่แบบง่ายๆโดยวิธีการคำนวณและในวิธีที่ถัวเฉลี่ยถ่วงน้ำหนัก ค่าเฉลี่ยการเคลื่อนที่แบบ Exponential (ย่อมาจาก EMA เริ่มต้น) มีค่าเฉลี่ยถ่วงน้ำหนักที่ถ่วงน้ำหนัก กับ EMA การถ่วงน้ำหนักเป็นเช่นที่ราคาล่าสุดวันจะได้รับน้ำหนักมากขึ้นกว่าราคาที่เก่ากว่า ทฤษฎีที่อยู่เบื้องหลังนี้ก็คือราคาล่าสุดถือว่ามีความสำคัญมากกว่าราคาที่สูงกว่าโดยเฉพาะอย่างยิ่งเมื่อค่าเฉลี่ยระยะยาว (เช่น 200 วัน) มีน้ำหนักเท่ากับข้อมูลราคาที่มีอายุเกิน 6 เดือนและอาจคิดได้ ของเล็กน้อยล้าสมัย การคำนวณ EMA เล็กน้อยซับซ้อนกว่าค่าเฉลี่ย Simple Moving Average แต่มีข้อดีที่ไม่ควรเก็บบันทึกข้อมูลขนาดใหญ่ที่ครอบคลุมราคาปิดของแต่ละราคาปิดในช่วง 200 วันที่ผ่านมา (หรือหลายวันก็ตาม) . สิ่งที่คุณต้องมีคือ EMA สำหรับวันก่อนหน้าและราคาปิดในปัจจุบันเพื่อคำนวณค่าเฉลี่ยการย้ายใหม่ที่ระบุไว้ การคำนวณเลขชัยูนเบื้องต้นสำหรับ EMA ต้องคำนวณเลขชี้กำลัง ในการเริ่มต้นให้ใช้จำนวนวันที่ EMA ที่คุณต้องการคำนวณและเพิ่มจำนวนวันที่คุณกำลังพิจารณา (เช่นค่าเฉลี่ยเคลื่อนที่ 200 วันให้เพิ่มหนึ่งค่าเพื่อให้ได้ 201 เป็นส่วนหนึ่งของการคำนวณ) โทรนี้ได้ดีวันนี้ 1 จากนั้นเพื่อให้ได้เลขชี้กำลังให้ใช้เลข 2 และหารด้วยวันที่ 1 ตัวอย่างเช่น Exponent ของค่าเฉลี่ยเคลื่อนที่ 200 วันจะเท่ากับ 2 201 ซึ่งเท่ากับ 0.01 Full Calculation ถ้า Exponential Moving Average เมื่อใดก็ตามที่เรามีเลขชี้กำลังแล้วทั้งหมดที่เราต้องการตอนนี้คือข้อมูลอีกสองบิตเพื่อให้เราสามารถคำนวณได้เต็มรูปแบบ . วันแรกคือวันพุธที่มีการย้ายค่าเฉลี่ย สมมติว่าเรารู้เรื่องนี้แล้วอย่างที่เราได้คำนวณไว้เมื่อวานนี้ อย่างไรก็ตามหากคุณไม่ทราบ EMA ในวันวานคุณสามารถเริ่มต้นด้วยการคำนวณ Average Moving Average สำหรับเมื่อวานและใช้ EMA แทน EMA ในการคำนวณครั้งแรกของ EMA แล้ววันพรุ่งนี้คุณสามารถใช้ EMA ที่คุณคำนวณได้ในวันนี้และอื่น ๆ ข้อมูลชิ้นที่สองที่เราต้องการคือราคาปิดในปัจจุบัน สมมติว่าเราต้องการคำนวณค่าเฉลี่ยเลขประจำวัน 200 วันสำหรับหุ้นหรือหุ้นที่มี EMA 120 วันก่อนหน้าหรือเท่ากับ 120 เพนนี (หรือเซนต์) และราคาปิดของวันที่ 136 เพนซ์ การคำนวณเต็มรูปแบบจะเป็นดังนี้: Todays Exponential Moving Average (วันที่ปิดราคาปัจจุบัน x Exponentential) (วันที่ก่อนหน้านี้ EMA x (1- Exponent)) ดังนั้นการใช้ตัวเลขตัวอย่างข้างต้นของเราวันนี้ 200 วัน EMA จะเป็นดังนี้: (136 x 0.01 ) (120 x (1 - 0.01)) ซึ่งเท่ากับ EMA ในวันนี้ที่ 120.16.EMA 8211 วิธีการคำนวณคำนวณค่าเฉลี่ยการเคลื่อนที่แบบ Exponential Moving Average - ค่าเฉลี่ยการเคลื่อนที่ของ Exponetial Expedition Moving Average (EMA) เป็นตัวบ่งชี้ที่ใช้มากที่สุดในการวิเคราะห์ทางเทคนิค ในวันนี้ แต่คุณคำนวณได้ด้วยตัวเองโดยใช้กระดาษและปากกาหรือ 8211 8211 ที่ต้องการโปรแกรมสเปรดชีตที่คุณเลือก แจ้งให้เราทราบในคำอธิบายเกี่ยวกับการคำนวณ EMA การคำนวณค่าเฉลี่ยเคลื่อนที่แบบ Exponential (EMA) ทำได้โดยอัตโนมัติโดยซอฟต์แวร์การซื้อขายและการวิเคราะห์ทางเทคนิคส่วนใหญ่ที่มีอยู่ในปัจจุบัน นี่คือวิธีการคำนวณด้วยตนเองซึ่งจะช่วยเพิ่มความเข้าใจเกี่ยวกับวิธีการทำงาน ในตัวอย่างนี้เราจะคำนวณ EMA สำหรับราคาหุ้น เราต้องการ EMA 22 วันซึ่งเป็นกรอบเวลาที่เพียงพอสำหรับ EMA ที่ยาวนาน สูตรสำหรับการคำนวณ EMA มีดังต่อไปนี้ EMA Price (t) k EMA (y) (1 8211 k) t วันนี้ y วันนี้ N จำนวนวันใน EMA, k 2 (N1) ใช้ขั้นตอนต่อไปนี้เพื่อคำนวณ 22 วัน EMA: 1) เริ่มต้นด้วยการคำนวณ k สำหรับช่วงเวลาที่กำหนด 2) เพิ่มราคาปิดบัญชีสำหรับ 22 วันแรกเข้าด้วยกันและหารด้วย 22 3) ขณะนี้คุณพร้อมที่จะเริ่มรับวันอีเอ็มเอโดยใช้ราคาปิดวันถัดไป (วันที่ 23) คูณ โดย k แล้วคูณค่าเฉลี่ยของวันก่อนหน้าโดยย้าย (1-k) และเพิ่มทั้งสอง 4) ทำขั้นตอนที่ 3 ซ้ำแล้วซ้ำอีกในแต่ละวันเพื่อติดตาม EMA แบบเต็ม แน่นอนว่าสามารถใส่ลงใน Excel หรือซอฟต์แวร์สเปรดชีตอื่น ๆ เพื่อทำให้กระบวนการคำนวณ EMA แบบกึ่งอัตโนมัติ เพื่อให้มุมมองอัลกอริธึมเกี่ยวกับวิธีการนี้สามารถทำได้โปรดดูด้านล่าง (float todaysPrice, float numberOfDays, float เมื่อวานนี้) float k 2 (numberOfDays 1) return today วันที่เมื่อเดือน EMAY วานนี้ (1 8211 k) วิธีนี้จะถูกเรียกจากลูปผ่านข้อมูลของคุณโดยทั่วไปเรียกว่า foreach (DailyRecord sdr ใน DataRecords) เรียกการคำนวณ EMA ema CalculateEMA (sdr. Close, NumberOfDays, yesterdayEMA) ใส่ ema ที่คำนวณแล้วในอาร์เรย์ memaSeries. Items. Add (sdr. TradingDate, ema) ตรวจสอบให้มั่นใจว่าเมื่อวานนี้ EMA ได้รับข้อมูลจาก EMA ที่เราใช้อยู่ในขณะนี้ ประมาณ yesterdayEMA ema โปรดทราบว่านี่เป็นรหัสรหัสพัซโซ โดยปกติแล้วคุณจะต้องส่งค่า CLOSE เมื่อวานนี้ไปเมื่อวานนี้ EMA จนถึงวันที่เมื่อวานนี้ EMA คำนวณจาก EMA ในปัจจุบัน Thats เกิดขึ้นเฉพาะหลังจากที่ลูปใช้เวลามากกว่าวันที่คุณคำนวณ EMA ของคุณแล้ว สำหรับ EMA 22 วันมีเพียง 23 ครั้งในลูปและหลังจากนั้นจะมีการใช้งาน EMA เมื่อวานนี้ นี่ไม่ใช่เรื่องใหญ่เพราะคุณจำเป็นต้องมีข้อมูลจากอย่างน้อย 100 วันทำการเพื่อให้ EMA 22 วันถูกต้อง กระทู้ที่เกี่ยวข้อง
No comments:
Post a Comment