fbpx

สอบถามเรีองการ Loop Across Symbol กับตัวแปรพื้นฐานบางประเภท เช่น EPSYoY EPSQoQ

SiamQuant Knowledge Hub – คลังความรู้เพื่อการลงทุนอย่างเป็นระบบ Webboard ห้องโปร : Professional Membership Support สอบถามเรีองการ Loop Across Symbol กับตัวแปรพื้นฐานบางประเภท เช่น EPSYoY EPSQoQ

  • ผู้สร้าง
    กระทู้
  • #16515
    Avatargeniusmum
    Participant

    เนื่องจากการ Loop Across Symbol เพื่อดึงค่าตัวแปรพื้นฐานบางอย่างเช่น SQEPS_YoY() หรือ SQEPS_QoQ() หรือตัวแปรพื้นฐานบางประเภทอื่นๆ  ด้วยคำสั่ง Setforeign นั้น ได้ค่าที่ผิดพลาด จึงอยากทราบว่ามีวิธีอื่นหรือทาง SiamQuant มีวิธีแก้ไขให้ค่าที่ดึงนั้นถูกต้องหรือไม่ ถ้ามีทำอย่างไร?? (คำอธิบายเพิ่มเติมและตัวอย่าง case อยู่ด้านล่าง ปล. เนื่องจากโทรไปแล้วรอบนึง และส่งเมล์ไปแล้วรอบนึงเมื่อ 4 วันที่แล้วและยังไม่ได้คำตอบจึงขออนุญาตมา Post ในเวปบอร์ดนะครับ)

    ในการ Loop Across Symbol หากมีการใช้ Code ดังด้านล่าง  Loop เพื่อดึง ค่า พื้นฐานเช่น SQEPS_Roll() จากหุ้นตัวอื่นๆ มาคำนวณ  โดยค่า Cumulative Sum ของ SQEPS_Roll() จะถูกเก็บไว้ในตัวแปร TotalGainMed  ผลลัพธ์คือจะได้ค่าที่ถูกต้องครับ คือ ได้ Sum ของ SQEPS_Roll() จากหุ้นทุกตัวใน Watchlist

    แต่อย่างไรก็ตาม หากเปลี่ยนตัวแปรจาก SQEPS_Roll()  เป็นตัวแปรอื่นเช่น SQEPS_YoY() หรือ SQEPS_QoQ() ค่าที่ได้นั้นไม่ถูกต้องครับ เช่น ใน Watchlist มีหุ้นอยู่ 4 ตัวคือ Advanc Fsmart Lanna และ PTT  และมี SQEPS_YoY() ของแต่ละหุ้นดังนี้ 14.7, 46.15, 236.16, -19.21 แต่จากการ Loop Across Symbol โดยใช้คำสั่ง Setforeign เพื่อเก็บค่า Cumulative Sum ของ SQEPS_YoY() มาจะได้ค่า ผลรวมของ SQEPS_YoY() เป็น -285.30 ซึ่งไม่ตรงกับผลรวมของ SQEPS_YoY() ของหุ้นสี่ตัวด้านบนเลย

     

    ตัวอย่าง Code ที่ดึงค่าผลรวมของ SQEPS_Roll()

    wlnumber = GetOption( “FilterIncludeWatchlist” );
    list = CategoryGetSymbols(categoryWatchlist, wlnumber );

    if (Status(“stocknum”) == 0) // Perform only when the very first symbol in the watchlist is being processed
    {

    SumPosition=0;

    StaticVarRemove(“~SumPosition”); // delete previous static variable result
    for ( n = 0; ( Symbol = StrExtract( list, n ) )  != “”;  n++  )
    {
    if ( Symbol != “0SET” )
    {
    SetForeign(Symbol,False,True);
    SumPosition += Nz(SQEPS_ROLL(), 0);
    RestorePriceArrays();
    }
    }
    StaticVarSet(“~SumPosition”, SumPosition); // Store result

    }

    TotalGainMed=StaticVarGet(“~SumPosition”);

    Filter = 1;
    AddColumn(TotalGainMed, “TotalGainMed”);

     

     

     

กำลังดู 3 ข้อความตอบกลับ - 1 ผ่านทาง 3 (ของทั้งหมด 3)
  • ผู้เขียน
    ข้อความตอบกลับ
  • #16517

    สงวนสิทธิ์ สำหรับสมาชิก Pro เท่านั้นครับ (กรุณา Login เพื่อตรวจสอบสิทธิในการเข้าถึงครับ)

    #16641
    Avatargeniusmum
    Participant

    สงวนสิทธิ์ สำหรับสมาชิก Pro เท่านั้นครับ (กรุณา Login เพื่อตรวจสอบสิทธิในการเข้าถึงครับ)

    #16647

    สงวนสิทธิ์ สำหรับสมาชิก Pro เท่านั้นครับ (กรุณา Login เพื่อตรวจสอบสิทธิในการเข้าถึงครับ)

กำลังดู 3 ข้อความตอบกลับ - 1 ผ่านทาง 3 (ของทั้งหมด 3)
  • คุณต้องเข้าสู่ระบบเพื่อตอบกลับกระทู้นี้