انتقل إلى المحتوى

RSI cBot

نظرة عامة على الاستراتيجية

RSI cBot ينفذ إستراتيجية تداول انعكاسية بسيطة تعتمد على الزخم وتستند إلى Relative Strength Index (RSI) كمؤشر رئيسي.

يقوم RSI cBot بالشراء والبيع تلقائيًا بناءً على قيم RSI التي تعكس زخم السوق وتحدد ظروف التشبع الشرائي أو البيعي. تمت برمجة cBot لإغلاق المراكز الحالية قبل فتح مراكز جديدة، وهذا يضمن أن يكون هناك مركز واحد ذو صلة مفتوح في أي وقت.

عندما ينخفض RSI إلى ما دون 30، يُنظر إلى السوق على أنه في حالة تشبع بيعي، ويفتح cBot مراكز شراء. تستند إشارة الشراء إلى توقع ارتفاع السعر بعد وصول السوق إلى حالة التشبع البيعي.

عندما يرتفع RSI فوق 70، يُنظر إلى السوق على أنه في حالة تشبع شرائي، ويفتح cBot مراكز بيع. تستند إشارة البيع إلى توقع انخفاض السعر بعد أن يصبح السوق في حالة تشبع شرائي.

الإستراتيجية المبنية على مؤشر RSI مناسبة بشكل أفضل للأسواق حيث يمكن لـ cBot تداول الانعكاسات بناءً على إشارات RSI.

إنشاء cBot

تعلم كيفية إنشاء cBots، باستخدام إما 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")

دمج المؤشر

مؤشر القوة النسبية (RSI) هو المؤشر الرئيسي المستخدم في RSI cBot. RSI هو مذبذب زخم يقيس سرعة وتغير حركات الأسعار. يتراوح بين 0 و100 ويستخدم لتحديد حالات التشبع الشرائي أو البيعي في السوق.

بناءً على تقييمه لحالات التشبع الشرائي أو البيعي، يحدد RSI ما إذا كان cBot سيشتري أو يبيع. لا يعتمد RSI cBot على أي مؤشر أو عامل آخر، مثل المتوسطات المتحركة أو الحجم؛ فهو يستخدم فقط مستويات RSI لإشارات التداول.

يركز cBot على عتبتين رئيسيتين:

  • RSI < 30 يشير إلى أن السوق في حالة تشبع بيعي ويطلق أوامر الشراء.
  • RSI > 70 يشير إلى أن السوق في حالة تشبع شرائي ويطلق أوامر البيع.

يراقب cBot قيمة RSI باستمرار من خلال التحقق منها في كل نقرة جديدة. هذا يضمن أن الخوارزمية جاهزة دائمًا للتصرف بمجرد أن يتحرك RSI إلى منطقة التشبع البيعي أو الشرائي.

المنطق

الإعداد الأولي

يتم تهيئة مؤشر RSI باستخدام معلمات Source وPeriods المحددة في طريقة OnStart()، والتي يتم استدعاؤها عند بدء cBot. تتم العمليات الحسابية باستخدام الصيغ المدمجة في cTrader للمؤشر.

مراقبة الحالة

يتم تنفيذ المنطق الشرطي للصفقات في طريقة OnTick()، والتي يتم استدعاؤها في كل مرة يتم فيها استلام نقرة جديدة (تحديث السعر). إذا كان RSI < 30، يتم إنشاء إشارة شراء. إذا كان RSI > 70، يتم إنشاء إشارة بيع.

إدارة المراكز

قبل أن يفتح الـ cBot مركزًا جديدًا بناءً على الإشارة المُولدة، تتحقق طريقة Close() من وجود جميع المراكز المعاكسة المفتوحة التي تحمل علامة "SampleRSI" وتغلقها. يضمن هذا الإعداد وجود تداول واحد نشط فقط في أي وقت لرمز معين.

تنفيذ التداول

تتحقق طريقة Open() مما إذا كان هناك مركز من النوع نفسه مفتوح بالفعل بناءً على الإشارة المُولدة (شراء أو بيع). إذا لم يتم العثور على مركز، يفتح الـ cBot مركزًا جديدًا بالكمية المحددة والمعلمات الأخرى التي يتم تمريرها داخل الطريقة.

المعلمة الوحدة التعريف نصائح
الكمية لوت حجم كل تداول. قد يختار المتداولون المحافظون أحجام لوت صغيرة لتقليل المخاطر.

قد يختار المتداولون العدوانيون أحجام لوت أكبر لتعظيم المكاسب المحتملة، على الرغم من ارتفاع المخاطر.
المصدر مصدر البيانات لمؤشر RSI. تتضمن الخيارات المتاحة سعر الإغلاق، سعر الافتتاح، السعر الأعلى والسعر الأدنى. غالبًا ما يُستخدم سعر الإغلاق لحسابات RSI لأنه يعكس أهم نقطة سعر في الشمعة. ومع ذلك، قد يجرب المتداولون سلاسل بيانات مختلفة ويختارون الأنسب لظروف السوق.

يمكن أن يساعد السعر الأعلى أو الأدنى في تحديد حركات الأسعار القصوى، بينما توفر الأسعار المتوسطة أو النموذجية منظورًا أكثر توازنًا على مدى فترة.
الفترات عدد الفترات (الشموع) المستخدمة لحساب RSI. القيمة الافتراضية، 14، هي القيمة القياسية أو الإعداد الشائع لهذا المؤشر. قد يختار المضاربون أو المتداولون الذين يسعون للربح من حركات الأسعار قصيرة المدى (على سبيل المثال، على الرسم البياني لمدة 5 دقائق) فترات منخفضة. يجعل هذا الإعداد RSI أكثر استجابة، مما يتسبب في توليد إشارات الشراء والبيع بشكل أكثر تكرارًا.

قد يفضل متداولو التأرجح أو المتداولون على المدى الطويل (على سبيل المثال، على الرسم البياني لمدة ساعة واحدة) فترات RSI أكبر. يقلل هذا الإعداد من حساسية RSI، مما يجعله أكثر سلاسة ومقاومة لتقلبات الأسعار السريعة. مع تصفية الضوضاء، يركز RSI على اتجاهات السوق الرئيسية ويولد إشارات أقل.

التطبيق

الأسواق المحصورة في نطاق (الجانبية)

في السوق المحصور في نطاق، تتذبذب الأسعار بين مستوى المقاومة (الحد العلوي) ومستوى الدعم (الحد السفلي). تعتبر مثل هذه الأحداث مثالية للاستراتيجيات المعتمدة على RSI لأنها توفر العديد من حالات الشراء المفرط والبيع المفرط. نظرًا لأن الأسعار تعكس اتجاهها بشكل متكرر عند الوصول إلى مستويات الدعم أو المقاومة في الأسواق المحصورة في نطاق، فمن المرجح أن يوفر RSI إشارات دقيقة.

حالة استخدام

ضع في اعتبارك سيناريو حيث يتحرك زوج اليورو/الدولار الأمريكي بشكل متكرر بين 1.1000 و 1.1200. يمكن للـ cBot أن يظهر أداءً جيدًا من خلال الشراء بالقرب من الحد السفلي للبيع المفرط (RSI < 30) والبيع بالقرب من الحد العلوي للشراء المفرط (RSI > 70).

أفضل الممارسات

  • التركيز على التداول خلال فترات التقلب المنخفض. يعمل مؤشر RSI بشكل أفضل عندما لا يقوم السوق بتحركات اتجاهية كبيرة.
  • تحقق من الرسوم البيانية للأسعار للفترات التي يتقلب فيها السعر ضمن نطاق واضح.
  • مراقبة الاختراقات. إذا تحرك السعر بشكل كبير خارج النطاق، أوقف الـ cBot وأعد تقييم ظروف السوق.

أسواق التقلبات المنخفضة

تتميز الأسواق منخفضة التقلب بحركات أسعار صغيرة وعدم وجود اتجاهات رئيسية كبيرة. يعد RSI مفيدًا بشكل خاص في مثل هذه البيئات لأنه يمكنه تحديد اختلالات السوق قصيرة المدى دون التأثر بالاتجاهات القوية.

في بيئات التقلب المنخفض، يميل السعر إلى التذبذب بين مستويات الشراء المفرط والبيع المفرط، مما يؤدي إلى فرص تداول متكررة للـ cBot.

حالة استخدام

قد يظهر مؤشر الأسهم مثل S&P 500 فترات من التقلب المنخفض، حيث يتحرك سعره بين نطاقات ضيقة. خلال هذه الفترات، يستفيد الـ cBot من الانعكاسات الصغيرة. يدخل في مراكز شراء عندما ينخفض RSI تحت 30 ومراكز بيع عندما يرتفع RSI فوق 70.

أفضل الممارسات

  • استخدم مؤشرات التقلب لتحديد متى يدخل السوق في مرحلة تقلب منخفض.
  • قم بتعديل حجم اللوت وفترات RSI لتمكين المؤشر من استهداف تغيرات الأسعار الصغيرة بفعالية.
  • استخدم استراتيجيات إضافية لإدارة المخاطر مثل وقف الخسارة للحماية من تحركات السوق غير المتوقعة.

الأسواق المتماسكة بعد الاتجاهات القوية

بعد اتجاه صعودي أو هبوطي قوي، غالبًا ما تدخل الأسواق في مرحلة تماسك حيث يستقر السعر. يقوم المتداولون بعد ذلك بجني الأرباح أو الانتظار لاتجاه سوق جديد، وتصبح فترة التماسك مثالية لاستراتيجيات التداول المعتمدة على RSI.

في فترة التماسك التي تلي اتجاهًا قويًا، يمكن لمؤشر RSI تحديد متى دخل السوق إلى منطقة ذروة الشراء أو ذروة البيع. يمكن لـ RSI cBot بعد ذلك التقاط نقاط الانعكاس داخل التماسك.

حالة استخدام

ضع في اعتبارك سيناريو تدخل فيه أسهم الشركات الكبرى في تماسك بعد ارتفاع أو انخفاض كبير. يبدأ سعر السهم في التذبذب ضمن نطاق ضيق. يكتشف cBot بعد ذلك حالات ذروة الشراء (RSI > 70) أو ذروة البيع (RSI < 30) خلال هذه المرحلة ويتداول وفقًا لذلك.

أفضل الممارسات

  • بعد اتجاه قوي، انتظر حتى يبدأ السوق في التماسك قبل تشغيل cBot.
  • راقب مستويات الدعم والمقاومة على المدى الطويل للتأكد من أن السوق قد دخل حقًا في تماسك وليس في مرحلة الاستعداد لاختراق آخر.

الملخص

يعد مؤشر RSI محوريًا لإستراتيجية cBot، وهو يدفع جميع قرارات البيع والشراء. في حين أن cBot فعال في استخدام المؤشر للاستفادة من الانعكاسات في الأسواق ذات ذروة البيع وذروة الشراء، فإن اعتماده على خوارزمية واحدة يأتي مع خطر الإشارات الخاطئة وسياق السوق المحدود.

تتيح القدرة على تحديد قيم للمعلمات الرئيسية واختيار مصدر البيانات للمستخدمين تكييف RSI cBot مع أساليب التداول الفردية الخاصة بهم وتحمل المخاطر وظروف السوق. سواء كنت متداولًا سريعًا أو متداولًا متأرجحًا أو مستثمرًا على المدى الطويل، فإن ضبط معلمات cBot يمكن أن يؤدي إلى توافق أفضل مع إستراتيجيتك وزيادة فرص النجاح.

يمكن للمتداولين إجراء اختبار عكسي لـ cBot باستخدام قيم وإعدادات وبيانات مختلفة للعثور على مجموعة معلمات مثالية أو مربحة للرمز والفترة التي اختاروها. بالإضافة إلى ذلك، يمكن لمستخدمي cTrader تعديل كود cBot وتنفيذ مؤشرات التقلب للحماية من الاتجاهات القوية وتصفية الإشارات غير العكسية.