fbpx

สอบถามเรื่องการ Explore กรองหุ้นเฉพาะวันนี้

SiamQuant Minimal Home – White Webboard ห้องโปร : Professional Membership Support สอบถามเรื่องการ Explore กรองหุ้นเฉพาะวันนี้

  • This topic has 4 ข้อความตอบกลับ, 3 เสียง, and was last updated 4 years มาแล้ว by Zim.
  • ผู้สร้าง
    กระทู้
  • #16412
    Zim
    ผู้เยี่ยมชม

    สอบถามครับ ผมต้องการ Explore หุ้นเฉพาะทีี่มีราคาปิดวันนี้ โดยเขียนโค๊ตดังนี้
    today = LastValue(DateNum( ) );
    Y = LastValue(Year() ) ;
    Y = (Y -2000) *10000 +1000000;
    M = LastValue (Month() )*100 ;
    D = LastValue (Day() );

    TD = Y + M + D ;

    SET = InWatchListName( “STOCK” );

    Filter = 1 AND SET AND MA((V * C), 20) > 1000000 AND today == TD ;

    AddColumn (MA((V * C), 20) ,”Value”) ;

    จะได้หุ้นวันอื่นติดมาด้วย แต่ถ้าแก้เป็น

    Filter = 1 AND SET AND MA((V * C), 20) > 1000000 AND today == 1171219 ;

    จะได้หุ้นเฉพาะวันที่ 19-12-17

    ไม่แน่ใจว่าผิดพลาดอะไรครับ

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

    สวัสดีครับคุณ Zim เท่าที่ผมลองตรวจสอบโค้ดดูในเบื้องต้นพบว่าเกิดจากฟังก์ชั่น LastValue() ครับ เนื่องจากฟังก์ชั่น LastValue() จะให้ค่าเป็นค่าสุดท้ายของ Array ของหุ้นตัวนั้นๆครับ

    ยกตัวอย่างเช่น Y = LastValue(Year() ) ; ซึ่งถ้าหากว่าหุ้นตัวนั้นถูกเทรดล่าสุดในปี 2014 ค่า Y ที่ได้ออกมาจะเป็น 2014 ครับ เนื่องจากค่าสุดท้ายของ Array ชื่อ Year ของหุ้นตัวนั้นคือ 2014 ครับ และสำหรับตัวแปร today = LastValue(DateNum( ) ); ก็เช่นกันครับ เนื่องจากโปรแกรมจะไล่เรียงทีละ Symbol ซึ่งค่าที่ได้ออกมาจะเป็น DateNum() สุดท้ายของหุ้นตัวนั้นๆเช่น หากเรา Explore ด้วย 1 recent bar(s) ค่าของ PTT จะเท่ากับ 1171219 แต่ค่าของหุ้น ADAM จะเท่ากับ 1140925 เป็นต้น ซึ่งตรงนี้จะทำให้เงื่อนไข Today ที่เท่ากับ TD เป็นจริงเสมอ ทำให้เวลาเรา Explore จะมีหุ้นที่ถูกหยุดการซื้อขายไปแล้ว โผล่ขึ้นมาด้วยนั่นเองครับ

    อย่างไรก็ดีพอคุณ Zim แก้โค้ดเป็น today == 1171219 นั่น โปรแกรม Amibroker จะเช็คว่าวัน-เดือน-ปี สุดท้ายของหุ้นตัวนั้นตรงกับวันล่าสุดหรือไม่(1171219) ถ้าไม่ใช่…โปรแกรมจะไม่แสดงผลออกมาในส่วน Explore นั่นเองครับ

    #16415
    Zim
    ผู้เยี่ยมชม

    ขอบคุณมากครับ  แล้วอยากขอคำแนะนำ จะเขียนโค๊ดยังไง ให้ TD =  1171219  จะได้ไม่ต้องมานั่งแก้ทุกวันครับ เพราะลอง  debug ดูค่า TD = Y+M+D  ก็เท่ากับ 1171219  แต่ Explore ก็ยังมีหุ้นที่หยุดการซื้อขายติดมาด้วย

     

    #16418
    Syberia
    Participant

    ลองใช้โค้ดนี้ดูครับ

    Filter = DateNum() == Now(3);

    AddColumn( Close , “Price” , 1.2 );

    #16419
    Zim
    ผู้เยี่ยมชม

    ใช้ได้แล้วครับ ขอบคุณ คุณ Syberia มากครับ

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