fbpx

สอบถามเรื่องการคำนวน Relative Strength และ Industry momentum ครับ

SiamQuant Minimal Home – White Webboard ห้องโปร : Professional Membership Support สอบถามเรื่องการคำนวน Relative Strength และ Industry momentum ครับ

  • ผู้สร้าง
    กระทู้
  • #11055
    Toeye
    Participant

    จากที่ผมได้ไปตามอ่านบทความเก่าๆของ SiamQuant เรื่อง
    <h2 class=”entry-title” style=”box-sizing: border-box; margin: 0px 0px 28px; font-family: ‘Roboto Slab’, Arial, Helvetica, sans-serif; font-size: 18px; line-height: 28px; padding-bottom: 0px;” data-fontsize=”18″ data-lineheight=”28″>THE BACKTESTER เผยความลับตลาดหุ้นด้วยวิทยาศาสตร์แห่งการลงทุน! EP.1</h2>
    ผมอ่านแล้วนึกภาพโค้ดตามไปด้วยและมีข้อสงสัยครับ

    จากบทความมีการคำนวนหุ้นที่มีค่า Relative Strength มากที่สุด (Parameter จำนวน 20 วัน) อันนี้ไม่ทราบว่าเราสามารถกำหนด parameter ในการคำนวน relative strength ได้อย่างไรบ้างครับเท่าที่ผมรู้เวลาคำนวนต้อง

    RelStrength(“^SET”)

    ถ้าจะระบุ parameter ว่าจะคำนวนกี่วันนี่ทำแบบนี้รึเปล่าครับ

    mkt = Foreign(“^set”,C);

    _20DaysRelStrength = (ROC(C,-20))/ROC(mkt,-20);

     

    อีกคำถามเป็นเรื่อง Industry momentum ครับ ถ้าเราจะทำการ ranking industry ตาม relative strength นี่ต้องทำยังไงรึครับ

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

    จัด Rank ของตัว industry  หรือ จัด Rank ที่หุ้นอยู่ใน industry คับ

    #11057
    Toeye
    Participant

    อยากรู้ทั้ง 2 แบบเลยคับ

    #11058
    Amibroker Platform
    Participant

    เเบบเเรกมี Code ตัวอย่างในเว็บบอร์ดกับ อันนี้คับ

    http://www.siamquant.com/lab/magic-formula-backtested-performance-in-thai-stock-market/

    เเบบสองยังไม่เคยทำคับ เดียวขอคิดดูก่อนคับ เพราะเป็นการจัด Rank เเยกกลุ่ม

    หรือไม่ก็ทำเเบบเเรกคับ เเต่ทำ Watchlist ของเเต่ล่ะกลุ่ม  industry ออกมา เเล้วทำที่ล่ะกลุ่มคับ

    สุดท้าย การจัด Rank บน AmiBroker จะไม่ค่อนสมบูรณ์นะคับ เพราะมันมี Bug อยู่ซึ่งที่งานเคยเเจ้งไว้เเล้วคับ ลองตามอ่านดูได้คับ

    เเต่ก็พอทำไปใช้ได้คับ

    #11059
    Amibroker Platform
    Participant

    ลองดูอันนี้คับ @Toeye

    Code นี้ผมใช้ WatchList SET50 เป็นตัวอย่างคับ อยากจัดกลุ่มยังไงก็กำหนด  WatchList ได้เองเลยคับ

    ถ้าจะจัดเป็น industry ก็ให้เอา Symbol industry ใส่ลงไปใน Watchlist  คับ

    //////////////////////////////////////////////////////////////////////////////////////////

     

    wlnum = CategoryFind( “SET50”, categoryWatchlist );     //Find watchlist number

    symlist = CategoryGetSymbols( categoryWatchlist, wlnum );

     

    if( Status(“stocknum”) == 0 )

    {

    //Delete static variables

    StaticVarRemove( “RSScore*” );

     

    for( i = 0; ( sym = StrExtract( symlist, i ) ) != “”; i++ )

    {

    SetForeign( sym );

    mkt = Foreign(“^SET”,”C”);

    _20DaysRelStrength = (ROC(C,20))/ROC(mkt,20);

    RestorePriceArrays();

    StaticVarSet( “RSScore” + sym, _20DaysRelStrength );

     

    }

    //Perform ranking (Normal mode)

    StaticVarGenerateRanks( “Rank”, “RSScore”, 0, 1224 );

    }

     

    RankRS = StaticVarGet( “RankRSScore” + Name() );

     

     

    Filter = 1;

    mkt = Foreign(“^SET”,”C”);

    _20DaysRelStrength = (ROC(C,20))/ROC(mkt,20);

    AddColumn(RankRS,”RankRS”,1.0);

    AddColumn(_20DaysRelStrength,”RelStrength”,1.2);

     

    ///////////////////////////////////////////////////////////////////////////////////////////

     

     

     

    #11063
    Oyoyo
    Participant

    Relative strength มีหลาย variation มากครับ (เท่าที่ผมเคยเห็นก็ 8 variation เป็นอย่างน้อย) แต่ 3 variation ที่ได้รับความนิยมคือ

    1. Basic form1

    นำราคาปิดของหุ้นที่สนใจหารด้วยราคาปิดของดัชนี/อุตสาหกรรมที่หุ้นดังกล่าวอยู่

    3

     

    2. Relative form 

    2นำ Relative performance ของหุ้นที่สนใจหารด้วย Relative performance ของดัชนี/อุตสาหกรรมที่หุ้นดังกล่าวอยู่

    4

     

    3. Percentage form

    5นำ Percentage performance ของหุ้นที่สนใจหารด้วย Percentage performance ของดัชนี/อุตสาหกรรมที่หุ้นดังกล่าวอยู่

    6

    #11065
    Oyoyo
    Participant

    ส่วนเรื่อง Ranking ใน Amibroker สามารถใช้ Code ที่คุณ Amibroker Platform โพสไว้เป็นตัวอย่างได้เลยครับ

    แต่ keep in mind เรื่อง Error ไว้ด้วยนะครับ (สามารถอ่านรายละเอียดได้ที่ Link1 และ Link2 ครับ)

    หาก Process ในการทดสอบมี Error ผลลัพธ์ก็จะมี Error ไม่มากก็น้อย…

    การเชื่อมั่นและปฏิบัติตามผลลัพธ์ที่มีความผิดพลาด อาจนำมาซึ่งความเสียหายของเงินทุนได้เช่นกันนะครับ

    หากจำเป็นต้องใช้จริงๆ แนะนำว่านำข้อมูลออกมา Ranking ในโปรแกรมอื่นเช่น Excel เพื่อใช้ตรวจสอบเทียบเคียงไปด้วยจะดีที่สุดครับ

    #11066
    Toeye
    Participant

    ขอบคุณ คุณ  Amibroker Platform และคุณ Oyoyo มากครับ กระจ่างเลยครับ 

    #11067
    amibrokernovice
    Participant

    อ่านแล้วได้ความรู้ เลยลองเล่นเพื่อเปรียบเทียบดูครับ

     

    rs

     

    {//VARIABLE

    IndexSymbol =”^SET”;

    RelativeType = ParamList(“Relative Type”, “Basic form|Relative form|Percent form”);

    }

     

    {//BASIC FORM

    RS1 = RelStrength(IndexSymbol);

    }

     

    {//RELATIVE FORM

    Period  = 20;

    IndexPrice = Foreign(IndexSymbol,”C”);

    StockRel = C / Ref(C,-Period);

    IndexRel = IndexPrice / Ref(IndexPrice,-Period);

    RS2 = StockRel / IndexRel;

    }

     

    {//PERCENT FORM

    Period= 20;

    IndexPrice = Foreign(IndexSymbol,”C”);

    StockChange = ROC(C,Period);

    IndexChange = ROC(IndexPrice,Period);

    RS3 = StockChange / IndexChange;

    }

     

    {//PLOT LINE CHARGE

    if (RelativeType==”Basic form”) {

    Plot(RS1, “Basic form”, ParamColor( “Basic form Color”, colorWhite) , styleLine+styleOwnScale, Null, Null, Null);

    }else if  (RelativeType==”Relative form”) {

    Plot(RS2,”Relative form”, ParamColor( “Relative form Color”, colorYellow), styleLine+styleOwnScale, Null, Null, Null );

    }else {

    Plot(RS3, “Percentage form”, ParamColor( “Percentage form Color”, colorGreen), styleLine+styleOwnScale, Null, Null, Null );

    }

    }

     

    {//EXPLORE DATA

    Title = ” {{NAME}} {{DATE}} {{INTERVAL}} “+Open+”:”+O+” High:”+H+” Low:”+L+” Close:”+C+ “\n”+

    “Index Price:”+WriteVal(IndexPrice,2)+” “+

    “BASIC FORM:”+WriteVal(RS1,2)+ ” “+

    “RELATIVE FORM:”+WriteVal(RS2,2)+ ” “+

    “PERCENT FORM:”+”Stock Change:”+WriteVal(StockChange,1.2)+” Index Change:”+WriteVal(IndexChange,1.2)+” RS:”+WriteVal(RS3,1.2)+ ” “;

     

    Filter = 1;

    AddColumn( C, “C”, 1.2);

    AddColumn( IndexPrice, IndexSymbol, 1.2);

    AddColumn( RS1, “Basic form”, 1.2);

    AddColumn( RS2, “Relative form”, 1.2);

    AddColumn( RS3, “Percentage form”, 1.2);

    }

     

    #11070

    อ่านสนุกครับกระทู้นี้ เยี่ยมเลย 😀

    #11077
    Oyoyo
    Participant

    เนื่องจากมีคนถามผมถึงรูปแบบอื่นๆ ผมจึงขอลงหลักการคิดไว้ที่นี่นะครับ

    relative strength ที่ว่ามีหลายรูปแบบ จริงๆ แล้วเราก็สามารถแบ่งเป็นกลุ่มได้ดังนี้ครับ

     

    1. Basic form – เปรียบเทียบกับหุ้นตัวอื่นไม่ได้

     

    2. Normalized form – เปรียบเทียบกับหุ้นอื่นได้

     

    2.1 Normalized start point (No limit – ไม่มี max/min) เช่น

     

    a. relative form – normalized ให้ค่าเริ่มต้นเป็น 1

    b. percentage form – normalized ให้ค่าเริ่มต้นเป็น 0

    c. standard form ( Z, T, ACT ) – normalized ให้ค่าเริ่มต้นเป็น 0

    d. range form – normalized ให้ค่าเริ่มต้นเป็น 0

     

    2.2 Normalized range (Has limit – มี max/min) เช่น

     

    a. stochastic form – normalized range เป็น 0-100

    b. wilder form – normalized range เป็น 0-100

     

    2.3 Special form – รูปแบบพิเศษที่ trader แต่ละคนคิด อันนี้มีเป็นจำนวนมากเช่น

     

    a. weinstein form

    b. wright form

     

    ทุกรูปแบบ เป็นการ “วัด momentum” ของหุ้นเหมือนกันหมด ต่างกันแค่ “วิธีการคำนวณ” เท่านั้นเองครับ

    ดังนั้นเลือกซักรูปแบบนึงที่คิดว่ามันวัด momentum ได้ตรงกับความคิดเรา แล้วทำความเข้าใจให้ถ่องแท้เพื่อนำไปใช้ก็พอครับ

    #16602
    likhun
    ผู้เยี่ยมชม

    จากโค้ดตั้งแต่

    RankRS = StaticVarGet( “RankRSScore” + Name() );

    Filter = 1;

    .

    .

    AddColumn(RankRS,”RankRS”,1.0);

    พอลองกด explore แล้ว  คอลัม RankRS   ไม่แสดงตัวเลขใดๆเลย

     

    เลยลองแก้โค้ดในบรรทัด RankRS  จาก  +Name() ให้เป็น +sym  แทน

    หลังจากนั้นกด explore ใหม่  คอลัม RankRS  ของหุ้นทุกตัวโชว์ 1 หมด  -*-

     

    ผมต้องไปแก้ไขตรงไหนบ้างครับ มันถึงจะเรียงมาให้ทุกตัวครับ

    ขอบคุณมากครับ

     

    #16608

    สวัสดีครับคุณ likhun ตอนนี้ทางเราได้ทำการปล่อย SiamQuant 3.0 The Alpha Suite Full Version ซึ่งมีการปรับปรุงในส่วนของการ Ranking ให้ผู้ใช้สามารถใช้งานได้สะดวกขึ้นครับ โดยสามารถ Download และติดตั้งได้จาก Link นี้ครับ

    Download

    #16616
    likhun
    ผู้เยี่ยมชม

    SQStaticVarGetRankScorePercentile()

    ขอวิธีเขียนฟังก์ชันตัวนี้อย่าง step by step ได้ไหมครับ

    #16624

    การใช้งาน Function SQStaticVarGetRankScorePercentile() จะอยู่ใน Code ระบบ SQSystem 004 – Livermore , SQSystem 011 CANSLIM และ SQSystem 021 Minervini Trend Template ครับ โดยจะอยู่ใน pattern การเขียนเหมือนกันทั้ง 3 ระบบครับ

    #16630
    likhun
    ผู้เยี่ยมชม

    คุณ Koedkao ครับ

    function ทั้งสองตัวนี้ ผมเห็นแต่เป็น shortcut formula  ทั้งคู่

    ไม่แน่ใจว่าเก็บไว้ใน folder ไหนครับ  อยากเขียนใช้เองเพื่อให้เข้ากับ template เดิมที่คุ้นเคยอยู่ก่อน

    หากจะรบกวนขอเป็นวิทยาทานได้ไหมครับ

    ขอบคุณมากครับ

    #16631
    likhun
    ผู้เยี่ยมชม

    #16632

     

    function นี้ยังมีปัญหากับการใช้งานร่วมกับการใช้ตัวแปรอื่นๆนอกจาก ohlc อยู่ (ซึ่งเป็นปัญหาจากตัว Function ของโปรแกรม Amibroker และตัว Compiler Amibroker Plugin ที่ทำให้ผลออกมาเพี้ยนไป) ดังนั้นเราจึงได้แก้ไข template ให้กระชับขึ้นเพื่อใช้งานในการวัดการ ranking ด้วย rate of change เพียงอย่างเดียวก่อน โดยหากสามารถแก้ไขให้สามารถใช้งานกับตัวแปรอื่นได้แล้วทางเราจะแจ้งให้ทราบกันอีกครั้งหนึ่งครับ

    #16633
    likhun
    ผู้เยี่ยมชม

    หากผมจะเขียนโค้ดต่อเอง จากโค้ดที่แสดงไว้ใน REPLY #11059 ซึ่ง RANK ที่จัดออกมาเบื้องต้นเป็นลำดับ 1,2,…จำนวนหุ้นทั้งหมดในwatchlist
    ให้ออกมาในรูปของ percentile ให้ใช้งานได้ในแง่ROCตามที่บอกไว้ ไม่กระชับไม่เป็นไร ผมต้องทำอย่างไรบ้างครับ
    ขอบคุณครับ

    #16643

    ต้องขออภัยคุณ Likhun เป็นอย่างสูง แต่ทางเราต้องขอสงวนสิทธิ์ในการเปิดเผยชุดโค้ดภายใน Functions ต่างๆของทาง SiamQuant นะครับ อย่างไรก็ตามถ้าคุณ likhun อยากใช้ code ใน reply #11059 ก็สามารถ Copy&Paste ใช้ได้เหมือนเดิมครับโดย SQ function จะไม่ได้ไปทับกับ Function พื้นฐานของ Amibroker ครับ

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