สงสัยเรื่องการคำนวณ RSI14

จากสูตรการคิดหา RSI14(ขอพูดถึง 14 แท่ง ไม่เอา23) ในเว็บตามปกติคือ RSI = 100 - 100/(1+RS)
โดยที่ RS = AVG.GAIN/AVG.LOSE ตามเว็บอ้างอิงนี้ครับ http://www.investmentory.com/2013/07/indicator-4-rsi.html
เสริม AVG.GAIN แรก = เอาgainมาบวกกัน14แท่ง แล้วหาร14(Close - Prev.Close)
       AVG.Lose แรก = เอา lose มาบวกกัน14แท่ง แล้วหาร14(Close - Prev.Close)
       AVG.GAIN ต่อไป = (AVG.gainแท่งก่อน*13)+Gainวันนี้ ทั้งหมดหาร14
       AVG.Lose ต่อไป = (AVG.Loseแท่งก่อน*13๗+Loseวันนี้ ทั้งหมดหาร14
ทั้งหมดนี้มันอยู่บนเว็บหลายๆเว็บ เว็บที่เอามาแปะเป็นหนึ่งในนั้น
ผมก็เลยเอามาลองใส่ Excel ดู เผื่อว่าในอนาคต สมมติว่าRSI14>50 เป็นปัจจัยสำคัญในการซื้อ แล้วตอนนี้ RSI14=40 อยู่ จะได้คำนวณได้ว่าราคาต้องขึ้นอีกเท่าไหร่ RSI14 จะได้ 50 ตั้งรอซื้อประมาณนั้นครับ

ปัญหาคือ RSI14 ตามที่ผมลองคิดดู มันไม่ตรงกับ RSI14 ของ EFIN ตามรูปครับ



ผมเดาว่าน่าจะมีการปรับให้มัน smooth หรือ ผมทำอะไรผิดก็ไม่รุ้ แต่ทิศทางมันไปในทางเดียวกัน แต่เลขนี่คนละเรื่องเลยครับ
รบกวนท่านทั้งหลาย ไขความกระจ่างให้หน่อยครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
สูตร RSI(14)  ในโปรแกรมวิเคราะห์หุ้นทุกโปรแกรม จะเป็น Built in Indicators  ที่โปรแกรมวิเคราะห์จะเขียนโค้ดฝังไว้ในตัวโปรแกรมเลย  เพื่อความสะดวกในการใช้งาน เพราะเป็น Indicators มาตรฐานอยู่แล้ว  ตัว Indicators Built in ต่างๆ ยังมีอีกหลายตัว เช่น  MACD   CCI   RSI   V ( Volume )    MA    EMA    PDI  MDI   ADX   ฯลฯ   ซึ่งเมื่อเราเขียนโค้ด เพียงกำหนดค่าตัวแปร (Period)  โปรแกรมก็จะรู้จักค่า Indicators เหล่านี้และคำนวณตามค่าตัวแปรที่เรากำหนดได้ทันที

   ผมไม่ทราบวิธีเขียนโค้ดเพิ่มใน Efin  และคิดว่าคงทำไม่ได้เพราะเป็น โปรแกรมที่เราเรียกใช้ดูได้เท่านั้น แต่เขียนโค้ดเพิ่มเติมไม่ได้ ( ผมไม่แน่ใจตรงนี้ )   แต่ผมมีโค้ด สำหรับให้กราฟแสดงราคาหุ้น ณ. ค่า RSI = 30 / 50 / 70   โดยแสดงบนกราฟราคาได้เลย เพื่อความสะดวกในการวิเคราะห์กราฟ สำหรับโปรแกรม Amibroker  เท่านั้น  แต่หากบางคน ที่มีความรู้ในการเขียนโค้ดโปรแกรม อาจนำไปพัฒนาต่อเพื่อใช้กับโปรแกรมวิเคราะห์อื่นๆ ก็ขึ้นกับแต่ละคนเองนะครับ


//.............................................................
// RSI Bands use a variation of the RSI calculations to figure
// out what price level a stock should be at to be considered
// overbought/oversold.
//
// This sample code was built off the "BuiltInRSIEquivalent"
// sample RSI calculation code found on the AmiBroker website.
_SECTION_BEGIN( "RSI_Bands" );

function BuiltInRSIEquivalent_RSI_Band_Version( period, TargetRSILevel )
{
    P = N = 0;
    result = Null;
    for( i = 1; i < BarCount; i++ )
    {
        // Standard RSI code
        diff = C[ i ] - C[ i - 1 ];
        W = S = 0;
        if( diff > 0 ) W = diff;
        if( diff < 0 ) S = -diff;
  
        if(result[i-1] > C[i-1])
            HypotheticalCloseToMatchRSITarget = C[i-1]+P-P*period-((N*period)-N)
                                                *TargetRSILevel/(TargetRSILevel -100);
        else
            HypotheticalCloseToMatchRSITarget = C[i-1]-N-P+N*period+P*period+(100*P)
                                                /TargetRSILevel-(100*P*period)/TargetRSILevel ;
        
        P = ( ( period -1 ) * P + W ) / period;
        N = ( ( period -1 ) * N + S ) / period;
        // Store result
        if( i >= period )
            result[ i ] = HypotheticalCloseToMatchRSITarget ;
    }
    return result;
}

if (ParamToggle("Show RSI_Bands", "No |Yes", 0))
{

Plot( BuiltInRSIEquivalent_RSI_Band_Version(14,70), "RSIB70",ParamColor( "RSIB70", colorTeal ), styleThick|styleDashed );
Plot( BuiltInRSIEquivalent_RSI_Band_Version(14,50), "RSIB50",ParamColor( "RSIB50", colorWhite ), styleThick|styleDashed );
Plot( BuiltInRSIEquivalent_RSI_Band_Version(14,30), "RSIB30",ParamColor( "RSIB30", colorTeal ),styleThick|styleDashed );

}

_SECTION_END();

//...................................................

   ให้ Copy โค้ดทั้งหมด ไปวางต่อท้ายในสูตรของกราฟโดยใช้  Edit formula  เปิดโค้ดขึ้นมา   แล้ว คลิ้กที่ ปุ่ม  Apply Indicator  เพื่อยืนยันการเปลี่ยนแปลงสูตรโค้ดกราฟราคาเดิม     หลังจากนั้น ให้คลิ้กขวาที่กราฟราคาแล้วเลือก ให้แสดง RSI Bands  จากพารามิเตอร์    ก็จะมี RSI Bands  ปรากฎขึ้นบนกราฟราคา    โดยมีเส้น 3 เส้นเพิ่มขึ้นมา คือ RSI 70   RSI 50   RSI 30   และราคาหุ้นที่ค่า RSI ดังกล่าวอยู่ที่กรอบราคาด้านขวามือ  .....    

    คำแนะนำ ...ค่า RSI(14) ใช้บอกความเร็วของการเปลี่ยนแปลงราคา ( Speed Of Price Change )   โดยค่า RSI(14) = 50  หมายถึง ความเร็วของการเปลี่ยนแปลงราคาขึ้นเฉลี่ย เท่ากับ ความเร็วของการเปลี่ยนแปลงราคาลงเฉลี่ย ในขณะนั้น  หรือหมายถึง ราคาจะขึ้นหรือลง ด้วยความเร็วพอๆกัน โอกาสได้เสียเท่ากัน ไม่มีฝ่ายใดได้เปรียบเสียเปรียบ  หรือเป็นภาวะ Sideway   ซึ่งนักลงทุนจะไม่ชอบในสภาวะแบบนี้ เพราะนักลงทุนที่ฉลาดมักชอบเป็นฝ่ายได้เปรียบอยู่เสมอ (เสี่ยงน้อยได้มาก)     ส่วนค่า RSI>=70  จะหมายถึงความเร็วของการเปลี่ยนแปลงราคาขึ้น จะเร็วเป็น 2.33 เท่าหรือมากกว่า ความเร็วของการเปลี่ยนแปลงราคาลง  หรือราคาขึ้นเร็วกว่าลงมากกว่าหรือเท่ากับ 2.33 เท่า นั่นเอง ทำให้ฝ่ายซื้อหรือคนที่ถือหุ้นอยู่แล้วได้เปรียบ เพราะถือไว้ราคาขึ้นเร็วกว่าลง   คนที่ยังไม่มีหุ้นก้อยากมีหุ้น คนที่มีหุ้นอยู่แล้วก็ยังไม่อยากขายเพราะราคากำลังขึ้นเร็ว  ราคาหุ้นจึงมักจะวิ่งขึ้นอย่างรวดเร็วกว่าค่า RSI ในช่วงต่ำๆ (  50-70 )   แต่ให้จำไว้เสมอว่า ค่า RSI (14) เป็นการเปรียบเทียบในระยะ 14 วันย้อนหลังเท่านั้น  ไม่เกี่ยวกับ  30 วัน หรือ 2 เดือนที่แล้วมานะครับ

   ยิ่งเขียน ยิ่งยาวเรื่อง เทคนิเคิล  5555  เอาไว้แค่นี้ก่อนนะครับ  ...

แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่