fbpx

Rank Volume +เงื่อนไขอื่นๆ

SiamQuant Minimal Home – White Webboard ห้องโปร : Professional Membership Support Rank Volume +เงื่อนไขอื่นๆ

  • ผู้สร้าง
    กระทู้
  • #22256
    Luck
    Participant

    สวัสดีครับ

    ผมต้องการเขียน code เพื่อหาสัญญาณซื้อ มี เงื่อนไข ดังนี้ คือ
    1 เรียง volume การซื้อขายจากมากไปหาน้อย เอาแค่ 20 อันดับแรก
    2 หุ้นตัวนั้นราคาปิด ตัดเส้น ema 100 วัน ขึ้นมาไม่เกิน 5 วัน

    ผมเอาโค๊ดของ SQ มาแก้เพื่อเรียง volume แต่เมื่อ explore แล้วได้ค่าแปลกๆ รบกวนดูให้ด้วยครับ

    แล้วถ้าแก้ไขถูกต้องแล้วต้องการ เขียนเงือนไขในการซื้อต้องเขียนยังไงครับ เช่น Buy = ??? AND BarsSince(Cross(C,Ref(EMA(C,100)),-1))<=5;

    ขอบคุณครับ

    { // Calculate Ranking
    wlnum = CategoryFind( “ALLSTOCK”, categoryWatchlist ); //Find watchlist number
    symlist = CategoryGetSymbols( categoryWatchlist, wlnum );

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

    //Delete static variables
    StaticVarRemove( “VolumeRank*” );

    for( i = 0; ( Symbol = StrExtract( symlist, i ) ) != “”; i++ )
    {
    if ( Symbol != “0SET” )
    {
    array = Foreign( Symbol, “Volume”, fixup = 0 );
    RestorePriceArrays();
    StaticVarSet ( “VolumeRank” + symbol, Volume );
    _TRACE( symbol );
    }
    }

    StaticVarGenerateRanks( “rank”, “VolumeRank”, 20, 1234 );

    }
    }
    symbol = Name();

    values = StaticVarGet ( “VolumeRank” + symbol );
    rank = StaticVarGet ( “rank” + symbol );

    AddColumn ( values, “VolumeRank” );
    AddColumn ( rank, “rank” );

    Filter = 1;

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

    สวัสดีครับพี่ลัก เดียวผมแปะโค้ดที่ Edit ให้ก่อนนะครับ ส่วนคำอธิบายจะอยู่ด้านล่างโค้ดนะครับ

    { // Calculate Ranking
    wlnum = CategoryFind( “ALLSTOCK”, categoryWatchlist ); //Find watchlist number
    symlist = CategoryGetSymbols( categoryWatchlist, wlnum );

    if ( Status(“stocknum”) == 0 )
    {
    //Remove static variables
    StaticVarRemove( “score*” );
    StaticVarRemove( “scoreRank*” );

    for( i = 0; ( Symbol = StrExtract( symlist, i ) ) != “”; i++ )
    {
    if ( Symbol != “0SET” )
    {
    array = Foreign( Symbol, “V”, fixup = 0 );
    StaticVarSet ( “score” + symbol, array );
    }
    }

    StaticVarGenerateRanks( “rank”, “Score”, 0, 1234 );

    }
    }

    symbol = Name();

    values = StaticVarGet ( “score” + symbol, True );
    rank = StaticVarGet ( “rankScore” + symbol, True );

    Filter = 1;

    AddColumn ( values, “VolumeRank” );
    AddColumn ( rank, “rank” );

    จุดสำคัญคือจากโค้ดชุดเดิม ตรงบรรทัดที่ประกาศตัวแปร array นั้นถูกต้องแล้วครับ แต่ในบรรทัดถัดมาใน StaticVarSet( “”, array ); ตรงนี้ถ้าใส่ Volume เข้าไปตรงๆค่าจะเพี้ยนครับ ให้นำตัวแปร array มาใส่แทนครับ

    ซึ่งสามารถกำหนดเงื่อนไขซื้อแบบนี้ได้เลยครับ

    Buy = Rank <= 20 AND BarsSince(Cross(C,Ref(EMA(C,100)),-1))<=5; หมายเหตุ : โดยที่หากต้องการเปลี่ยนเป็น Rank ข้อมูลอื่นๆ เช่น Value ตรง array ให้ใส่ array = SQValueBySymbol() หรือถ้าเป็นค่า Fundamental อื่นๆ ก็จะเป็นชื่อฟังก์ชั่นที่ลงท้ายด้วย SQ...BySymbol() เช่นกันครับ

    #22266
    Luck
    Participant

    น้องThanadon ขอบคุณมากๆครับ

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