ข้ามไปที่เนื้อหา

RSI cBot

ภาพรวมกลยุทธ์

RSI cBot ใช้กลยุทธ์การเทรดแบบกลับตัวที่อาศัยโมเมนตัมอย่างง่าย โดยใช้ Relative Strength Index (RSI) เป็นตัวบ่งชี้หลัก

RSI cBot จะซื้อและขายโดยอัตโนมัติตามค่าของ RSI ที่สะท้อนโมเมนตัมของตลาดและกำหนดภาวะซื้อมากเกินไปหรือขายมากเกินไป cBot ถูกตั้งค่าให้ปิดโพสิชันที่มีอยู่ก่อนเปิดโพสิชันใหม่ ซึ่งทำให้มั่นใจได้ว่าจะมีเพียงโพสิชันที่เกี่ยวข้องเท่านั้นที่เปิดอยู่ในเวลาใดเวลาหนึ่ง

เมื่อ RSI ต่ำกว่า 30 ตลาดจะถูกมองว่าขายมากเกินไป และ cBot จะเปิดโพสิชันซื้อ สัญญาณซื้อจะอิงจากความคาดหวังว่าราคาจะเพิ่มขึ้นหลังจากตลาดเข้าสู่ภาวะขายมากเกินไป

เมื่อ RSI สูงกว่า 70 ตลาดจะถูกมองว่าซื้อมากเกินไป และ cBot จะเปิดโพสิชันขาย สัญญาณขายจะอิงจากความคาดหวังว่าราคาจะลดลงหลังจากตลาดเข้าสู่ภาวะซื้อมากเกินไป

กลยุทธ์ที่ใช้ RSI indicator เหมาะสมที่สุดสำหรับตลาดที่ cBot สามารถเทรดกลับตัวตามสัญญาณของ RSI

การสร้าง cBot

เรียนรู้วิธี สร้าง cBot โดยใช้ C# หรือ Python ใน คู่มือ ขั้นตอนต่อขั้นตอนของเรา

โค้ด RSI cBot มีอยู่ในที่เก็บสาธารณะของเราใน C# และ Python โค้ดเดียวกันนี้ถูกจัดเตรียมเป็นเทมเพลตใน วิซาร์ดการสร้างอัลกอริทึม ใน cTrader Windows หรือ Mac หรือคุณสามารถคัดลอกและใช้ตัวอย่างโค้ดด้านล่างได้:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, AddIndicators = true)]
    public class SampleRSIcBot : Robot
    {
        [Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
        public double Quantity { get; set; }

        [Parameter("Source", Group = "RSI")]
        public DataSeries Source { get; set; }

        [Parameter("Periods", Group = "RSI", DefaultValue = 14)]
        public int Periods { get; set; }

        private RelativeStrengthIndex rsi;

        protected override void OnStart()
        {
            rsi = Indicators.RelativeStrengthIndex(Source, Periods);
        }

        protected override void OnTick()
        {
            if (rsi.Result.LastValue < 30)
            {
                Close(TradeType.Sell);
                Open(TradeType.Buy);
            }
            else if (rsi.Result.LastValue > 70)
            {
                Close(TradeType.Buy);
                Open(TradeType.Sell);
            }
        }

        private void Close(TradeType tradeType)
        {
            foreach (var position in Positions.FindAll("SampleRSI", SymbolName, tradeType))
                ClosePosition(position);
        }

        private void Open(TradeType tradeType)
        {
            var position = Positions.Find("SampleRSI", SymbolName, tradeType);
            var volumeInUnits = Symbol.QuantityToVolumeInUnits(Quantity);

            if (position == null)
                ExecuteMarketOrder(tradeType, SymbolName, volumeInUnits, "SampleRSI");
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleRSIcBot():
    def on_start(self):
        self.rsi = api.Indicators.RelativeStrengthIndex(api.Source, api.Periods)

    def on_tick(self):
        if self.rsi.Result.LastValue < 30:
            self.close_position(TradeType.Sell)
            self.open_position(TradeType.Buy)
        elif self.rsi.Result.LastValue > 70:
            self.close_position(TradeType.Buy)
            self.open_position(TradeType.Sell)

    def close_position(self, tradeType):
        for position in api.Positions.FindAll("SampleRSI", api.SymbolName, tradeType):
            api.ClosePosition(position)

    def open_position(self, tradeType):
        position = api.Positions.Find("SampleRSI", api.SymbolName, tradeType)
        volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)
        if position is None:
            api.ExecuteMarketOrder(tradeType, api.SymbolName, volumeInUnits, "SampleRSI")

การรวมอินดิเคเตอร์

Relative Strength Index (RSI) เป็นตัวบ่งชี้หลักที่ใช้ใน RSI cBot RSI เป็น Momentum Oscillator ที่วัดความเร็วและการเปลี่ยนแปลงของการเคลื่อนไหวของราคา มันมีค่าระหว่าง 0 ถึง 100 และใช้เพื่อระบุภาวะซื้อมากเกินไปหรือขายมากเกินไปในตลาด

จากการประเมินภาวะซื้อมากเกินไปหรือขายมากเกินไป RSI จะกำหนดว่า cBot จะซื้อหรือขาย RSI cBot ไม่พึ่งพาตัวบ่งชี้หรือปัจจัยอื่น ๆ เช่น moving averages หรือ volume โดยใช้เพียงระดับ RSI สำหรับสัญญาณการเทรด

cBot มุ่งเน้นที่เกณฑ์สำคัญสองประการ:

  • RSI < 30 สัญญาณว่าตลาดอยู่ในภาวะขายมากเกินไปและจะกระตุ้นคำสั่งซื้อ
  • RSI > 70 สัญญาณว่าตลาดอยู่ในภาวะซื้อมากเกินไปและจะกระตุ้นคำสั่งขาย

cBot จะตรวจสอบค่า RSI อย่างต่อเนื่องโดยการตรวจสอบทุกครั้งที่มี tick ใหม่ สิ่งนี้ทำให้มั่นใจว่าอัลกอริทึมพร้อมที่จะดำเนินการทันทีที่ RSI เคลื่อนเข้าสู่ภาวะขายมากเกินไปหรือซื้อมากเกินไป

ตรรกะ

การตั้งค่าเริ่มต้น

ตัวบ่งชี้ RSI ถูกเริ่มต้นโดยใช้พารามิเตอร์ Source และ Periods ที่ระบุในเมธอด OnStart() ซึ่งจะถูกเรียกเมื่อ cBot เริ่มทำงาน การคำนวณจะทำโดยใช้สูตรในตัวของ cTrader สำหรับตัวบ่งชี้

การตรวจสอบเงื่อนไข

ตรรกะเงื่อนไขสำหรับการเทรดจะถูกดำเนินการในเมธอด OnTick() ซึ่งจะถูกเรียกทุกครั้งที่มีการรับ tick ใหม่ (การอัปเดตราคา) หาก RSI < 30 จะสร้างสัญญาณซื้อ หาก RSI > 70 จะสร้างสัญญาณขาย

การจัดการตำแหน่ง

ก่อนที่ cBot จะเปิดตำแหน่งใหม่ตามสัญญาณที่สร้างขึ้น เมธอด Close() จะตรวจสอบและปิดตำแหน่งที่ตรงข้ามทั้งหมดที่มีป้ายกำกับ "SampleRSI" การตั้งค่านี้ทำให้มั่นใจว่ามีเพียงหนึ่งการเทรดที่ทำงานอยู่ที่เวลาใดเวลาหนึ่งสำหรับสัญลักษณ์ที่กำหนด

การดำเนินการเทรด

เมธอด Open() จะตรวจสอบว่ามีตำแหน่งเทรดประเภทเดียวกันตามสัญญาณที่สร้างขึ้น (ซื้อหรือขาย) เปิดอยู่แล้วหรือไม่ หากไม่พบตำแหน่งเทรด cBot จะเปิดตำแหน่งเทรดใหม่ด้วยจำนวนและพารามิเตอร์อื่นๆ ที่ส่งเข้ามาภายในเมธอด

พารามิเตอร์ หน่วย คำจำกัดความ เคล็ดลับ
ปริมาณ ล็อต ปริมาณการเทรดแต่ละครั้ง นักเทรดที่ระมัดระวังอาจเลือกใช้ขนาดล็อตเล็กเพื่อลดความเสี่ยง

นักเทรดที่กล้าเสี่ยงอาจเลือกใช้ขนาดล็อตที่ใหญ่ขึ้นเพื่อเพิ่มโอกาสในการทำกำไร แม้ว่าจะมีความเสี่ยงที่สูงขึ้น
แหล่งข้อมูล แหล่งข้อมูลสำหรับอินดิเคเตอร์ RSI ตัวเลือกที่ใช้ได้ได้แก่ ราคาปิด ราคาเปิด ราคาสูงสุด และราคาต่ำสุด ราคาปิดมักถูกใช้ในการคำนวณ RSI เพราะมันสะท้อนถึงจุดราคาที่สำคัญที่สุดในแท่งเทียน อย่างไรก็ตาม นักเทรดอาจทดลองใช้ชุดข้อมูลที่แตกต่างกันและเลือกชุดที่เหมาะสมกับสภาพตลาดมากที่สุด

ราคาสูงสุดหรือราคาต่ำสุดสามารถช่วยระบุการเคลื่อนไหวของราคาที่สุดขั้ว ในขณะที่ราคากลางหรือ Typical Price ให้มุมมองที่สมดุลมากขึ้นในช่วงเวลาหนึ่ง
ช่วงเวลา จำนวนช่วงเวลา (แท่งเทียน) ที่ใช้ในการคำนวณ RSI ค่าเริ่มต้นคือ 14 ซึ่งเป็นค่ามาตรฐานหรือการตั้งค่าที่นิยมสำหรับอินดิเคเตอร์นี้ นักเทรดที่ทำ Scalping หรือนักเทรดที่ต้องการทำกำไรจากการเคลื่อนไหวของราคาในระยะสั้น (เช่น ในกราฟ 5 นาที) อาจเลือกใช้ช่วงเวลาที่ต่ำ การตั้งค่านี้ทำให้ RSI ตอบสนองได้เร็วขึ้น ทำให้มันสร้างสัญญาณซื้อและขายบ่อยขึ้น

นักเทรดที่ทำ Swing หรือเทรดในระยะยาว (เช่น ในกราฟ 1 ชั่วโมง) อาจชอบช่วงเวลา RSI ที่ใหญ่กว่า การตั้งค่านี้ลดความไวของ RSI ทำให้มันเรียบขึ้นและต้านทานต่อการเคลื่อนไหวของราคาที่รวดเร็วมากขึ้น เมื่อกรองสัญญาณรบกวนออกไป RSI จะโฟกัสที่แนวโน้มหลักของตลาดและสร้างสัญญาณน้อยลง

การประยุกต์

ตลาดที่เคลื่อนไหวในกรอบ (sideways)

ในตลาดที่เคลื่อนไหวในกรอบ ราคาจะแกว่งตัวระหว่างระดับแนวต้าน (ขอบเขตบน) และระดับแนวรับ (ขอบเขตล่าง) เหตุการณ์ดังกล่าวเหมาะสำหรับกลยุทธ์ที่ใช้ RSI เพราะให้สัญญาณซื้อมากเกินไปและขายมากเกินไปหลายครั้ง เนื่องจากราคามักจะกลับทิศทางเมื่อกระทบระดับแนวรับหรือแนวต้านในตลาดที่เคลื่อนไหวในกรอบ RSI จึงมีแนวโน้มที่จะให้สัญญาณที่แม่นยำมากขึ้น

กรณีการใช้งาน

พิจารณาสถานการณ์ที่ EURUSD เคลื่อนไหวซ้ำๆ ระหว่าง 1.1000 และ 1.1200 cBot สามารถแสดงประสิทธิภาพที่ดีได้โดยการซื้อใกล้ขอบเขตล่างเมื่ออยู่ในภาวะขายมากเกินไป (RSI < 30) และขายใกล้ขอบเขตบนเมื่ออยู่ในภาวะซื้อมากเกินไป (RSI > 70)

แนวปฏิบัติที่ดีที่สุด

  • มุ่งเน้นการเทรดในช่วงที่มีความผันผวนต่ำ ตัวบ่งชี้ RSI ทำงานได้ดีขึ้นเมื่อตลาดไม่มีการเคลื่อนไหวตามแนวโน้มที่สำคัญ
  • ตรวจสอบกราฟราคาสำหรับช่วงเวลาที่ราคาแกว่งตัวภายในกรอบที่ชัดเจน
  • ติดตาม Breakout หากราคาเคลื่อนไหวออกนอกกรอบอย่างมีนัยสำคัญ ให้หยุด cBot และประเมินสภาพตลาดใหม่

ตลาดที่มีความผันผวนต่ำ

ตลาดที่มีความผันผวนต่ำมีลักษณะการเคลื่อนไหวของราคาที่เล็กน้อยและขาดแนวโน้มหลัก RSI มีประโยชน์อย่างยิ่งในสภาพแวดล้อมดังกล่าว เพราะสามารถระบุความไม่สมดุลของตลาดในระยะสั้นได้โดยไม่ได้รับอิทธิพลจากแนวโน้มทิศทางที่แข็งแกร่ง

ในสภาพแวดล้อมที่มีความผันผวนต่ำ ราคามักจะแกว่งตัวระหว่างระดับซื้อมากเกินไปและขายมากเกินไป ส่งผลให้ cBot มีโอกาสในการเทรดบ่อยครั้ง

กรณีการใช้งาน

ดัชนีหุ้นเช่น S&P 500 อาจแสดงช่วงเวลาที่มีความผันผวนต่ำ ซึ่งราคาของมันเคลื่อนไหวระหว่างแถบแคบ ในช่วงเวลาดังกล่าว cBot จะใช้ประโยชน์จากการกลับตัวเล็กๆ โดยเข้าสู่โพสิชัน Long เมื่อ RSI ตกลงต่ำกว่า 30 และเข้าสู่โพสิชันขายเมื่อ RSI สูงกว่า 70

แนวปฏิบัติที่ดีที่สุด

  • ใช้ตัวบ่งชี้ความผันผวนเพื่อกำหนดว่าเมื่อใดที่ตลาดเข้าสู่ช่วงความผันผวนต่ำ
  • ปรับขนาดล็อตและช่วงเวลา RSI เพื่อให้ตัวบ่งชี้สามารถกำหนดเป้าหมายการเปลี่ยนแปลงราคาเล็กน้อยได้อย่างมีประสิทธิภาพ
  • ใช้กลยุทธ์การบริหารความเสี่ยงเพิ่มเติม เช่น Stop Loss เพื่อป้องกันการเคลื่อนไหวของตลาดที่คาดไม่ถึง

ตลาดที่รวมตัวหลังจากแนวโน้มที่แข็งแกร่ง

หลังจากแนวโน้มขาขึ้นหรือขาลงที่แข็งแกร่ง ตลาดมักจะเข้าสู่ช่วงรวมตัวที่ราคาเสถียร นักเทรดจะทำ Take Profit หรือรอทิศทางตลาดใหม่ และช่วงเวลารวมตัวนี้กลายเป็นช่วงเวลาที่เหมาะสำหรับกลยุทธ์การเทรดที่ใช้ RSI

ในช่วงเวลารวมตัวหลังจากแนวโน้มที่แข็งแกร่ง ตัวบ่งชี้ RSI สามารถระบุได้ว่าเมื่อใดที่ตลาดเข้าสู่ภาวะซื้อมากเกินไปหรือขายมากเกินไป RSI cBot สามารถจับจุดกลับตัวภายในช่วงรวมตัวได้

กรณีการใช้งาน

พิจารณาสถานการณ์ที่หุ้นชั้นนำเข้าสู่ช่วงรวมตัวหลังจากที่ราคาปรับตัวขึ้นหรือลงอย่างมีนัยสำคัญ ราคาหุ้นเริ่มแกว่งตัวภายในช่วงแคบ cBot จะตรวจจับภาวะซื้อมากเกินไป (RSI > 70) หรือขายมากเกินไป (RSI < 30) ในช่วงนี้และทำการเทรดตามนั้น

แนวปฏิบัติที่ดีที่สุด

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

สรุป

ตัวบ่งชี้ RSI เป็นศูนย์กลางของกลยุทธ์ cBot และเป็นตัวขับเคลื่อนการตัดสินใจซื้อและขายทั้งหมด ในขณะที่ cBot มีประสิทธิภาพในการใช้ตัวบ่งชี้เพื่อทำกำไรจากการกลับตัวในตลาดที่อยู่ในภาวะ oversold และ overbought การพึ่งพา Algo เดียวก็มาพร้อมกับความเสี่ยงของสัญญาณผิดพลาดและบริบทตลาดที่จำกัด

ความสามารถในการระบุค่าสำหรับพารามิเตอร์หลักและเลือกแหล่งข้อมูลช่วยให้ผู้ใช้สามารถปรับ RSI cBot ให้เข้ากับสไตล์การเทรด ความทนทานต่อความเสี่ยง และสภาพตลาดของแต่ละคนได้ ไม่ว่าคุณจะเป็นนักเทรดแบบ Scalper, Swing Trader หรือนักลงทุนระยะยาว การปรับพารามิเตอร์ของ cBot สามารถนำไปสู่การปรับกลยุทธ์ให้ดีขึ้นและเพิ่มโอกาสในการประสบความสำเร็จ

นักเทรดสามารถทำ Backtesting cBot ด้วยค่าต่างๆ การตั้งค่า และข้อมูลเพื่อค้นหาชุดพารามิเตอร์ที่เหมาะสมหรือทำกำไรสำหรับสัญลักษณ์และช่วงเวลาที่เลือก นอกจากนี้ ผู้ใช้ cTrader สามารถปรับเปลี่ยนโค้ด cBot และนำตัวบ่งชี้ความผันผวนมาใช้เพื่อป้องกันแนวโน้มที่แข็งแกร่งและกรองสัญญาณที่ไม่ใช่การกลับตัว