หน้าแรก ตัวชี้วัดทางเทคนิค โพสต์

PCA Synthetics: การรีไซเคิล Legacy เพื่อการเทรดที่มีประสิทธิภาพ

ไฟล์แนบ
16997.zip (11.72 KB, ดาวน์โหลด 0 ครั้ง)

Indicator สำหรับการเลือกค่า coefficients อัตโนมัติสำหรับแต่ละเครื่องมือในพอร์ตการลงทุนที่มีลักษณะของความเสถียรที่มักจะเท่ากับศูนย์

ตัวชี้วัดนี้ต้องการให้มี AlgLib library อยู่ในโฟลเดอร์ Include\Math ของเทอร์มินัล


ทฤษฎีเบื้องต้น

ทุกเครื่องมือมีการเคลื่อนที่ในทิศทางของตัวเอง โดยแต่ละทิศทางคือมิติที่แยกต่างหากในอาเรย์หลายมิติ โดยการหมุนเมทริกซ์ ซึ่งก็คือการคูณแต่ละองค์ประกอบด้วยจำนวนหนึ่ง เราพยายามหาทิศทางที่มีระยะห่างน้อยที่สุดระหว่างแกนและเครื่องมือทั้งหมด นั่นก็คือความแปรผันรวมที่น้อยที่สุด ค่าที่ใช้ในการคูณแต่ละองค์ประกอบจะกลายเป็นค่ามุมที่เครื่องมือเคลื่อนที่ควรจะหมุนเพื่อให้เคลื่อนที่ในทิศทางเดียวกับเครื่องมืออื่น ๆ ค่านี้คือ coefficients สำหรับแต่ละสกุลเงินในพอร์ตการลงทุน

หากค่าของ coefficient มากกว่า 0 จะทำการซื้อสกุลเงิน หากน้อยกว่า 0 จะทำการขาย ด้วยวิธีนี้ เราสามารถรักษาสถานะความเสถียรของสังเคราะห์ที่สร้างขึ้นโดยการคำนวณ coefficients ใหม่เป็นระยะ ๆ นอกจากนี้ PCA ยังไม่เพียงแต่หาทิศทางที่มีความแปรผันน้อยที่สุดสำหรับพอร์ต แต่ยังมีหลายทิศทาง จำนวนเครื่องมือในพอร์ตคือจำนวนของส่วนประกอบ (เวกเตอร์) แต่ละอันเรียกว่าส่วนประกอบหลัก และกำหนดว่ามันมีผลต่อการเคลื่อนที่รวมของพอร์ตเท่าไร


ปัญหาที่อาจเกิดขึ้น

  1. หากกราฟไม่ถูกวาด ให้ตรวจสอบสิ่งที่พิมพ์ในแท็บ Experts อาจจะมีข้อผิดพลาดหรือการซิงโครไนซ์กับกราฟอื่นอยู่ หากไม่มีข้อความใด ๆ ให้ลองเปลี่ยนไปยัง timeframes อื่น ๆ

  2. ค่าที่ได้จากเวกเตอร์ถูกตรวจสอบแล้วกับค่าที่คำนวณใน R package ดังนั้นค่าที่ได้จึงถูกต้อง แต่สัญลักษณ์ของ coefficient อาจจะผิด เนื่องจาก PCA ไม่คำนึงถึงสัญลักษณ์ "-" หรือ "+" สัญลักษณ์นี้สามารถระบุได้เฉพาะโดยการทดลองและความผิดพลาด

ปัญหาที่ 2 ได้ถูกอธิบายไว้ในภาพที่นี่: http://stats.stackexchange.com/questions/34396/im-getting-jumpy-loadings-in-rollapply-pca-in-r-can-i-fix-it

พารามิเตอร์

InpVector = 0; // หากมี N สกุลเงินในพอร์ต หมายเลขแกนการเคลื่อนที่ 0 = ความแปรผันสูงสุด, N - 1 = ความแปรผันต่ำสุด
InpFrame = 300; // วินโดว์ลอยสำหรับการคำนวณ coefficients สำหรับแต่ละ InpDepth bars
InpDepth = 1000; // จำนวนบาร์ทั้งหมดในประวัติศาสตร์ที่กราฟถูกวาด
InpForward = 500; // บาร์ที่หยุดการคำนวณ coefficients และใช้ค่าก่อนหน้า นี่คือ OOS
InpPeriod = 1; // การปรับระดับสำหรับ MA เพื่อให้กราฟดูไม่กระตุกมากนัก
InpTimePeriod = PERIOD_CURRENT; // Timeframe สำหรับการคำนวณ
InpNormalize = true; // ปรับระดับราคาก่อนแสดงเพื่อทำให้ช่องว่างความผันผวนของ USDJPY และ EURGBP ดูเรียบขึ้น
InpSynthetics = true; // วาดสังเคราะห์รวมที่ถูกคูณด้วย coefficients ที่พบ หรือแต่ละคู่แยกกัน
InpPrices = Logs; // อัลกอริธึมการปรับระดับของคู่
InpSymbols = "AUDUSD,USDCHF,USDCAD"; // คู่สำหรับพอร์ต
InpMagic = "ID" // ชื่อที่กำหนดเองของตัวชี้วัดเพื่ออำนวยความสะดวกในการวางหลายเวอร์ชันในกราฟเดียวกันโดยไม่มีความขัดแย้ง

แนวคิดนี้ได้รับการนำมาจากที่นี่: https://www.mql5.com/en/code/9908

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)