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

كيفية رسم تصحيحات فيبوناتشي

تصحيحات فيبوناتشي هي أداة تحليل فني شائعة تُستخدم لتحديد المستويات المحتملة للدعم والمقاومة في سعر الأصل. من خلال تحديد مستويات الدعم والمقاومة، يكتسب المتداولون ميزة إستراتيجية في توقيت صفقاتهم، وإدارة المخاطر، والتوافق مع اتجاهات السوق، وفي النهاية تحسين فرصهم في الربحية.

في هذا المقال والفيديو المصاحب له، ستتعلم كيفية إنشاء cBot يرسم تصحيحات فيبوناتشي على الرسم البياني ويفتح مراكز بناءً على التصحيحات.

رسم تصحيح فيبوناتشي على الرسم البياني

تطبق تصحيحات فيبوناتشي متتالية فيبوناتشي، وهي سلسلة من الأرقام حيث يكون كل رقم هو مجموع الرقمين السابقين له.

مثال

هذا مثال على متتالية فيبوناتشي: 0، 1، 1، 2، 3، 5، 8، 13، 21، 34، 55، 89، 144، ...

مستويات تصحيح فيبوناتشي هي نسب الأرقام المتتالية المشتقة من متتالية فيبوناتشي. هذه هي النسب الشائعة المستخدمة في التحليل الفني والتداول: 0.236، 0.382، 0.5، 0.618 وأحيانًا 0.786.

سننشئ cBot يرسم تصحيحات فيبوناتشي على الرسم البياني. سيتم توفير أربعة معلمات تمثل سعر البداية، ووقت البداية، وسعر النهاية، ووقت النهاية في كود cBot.

في cTrader Algo، انقر فوق زر جديد لإنشاء cBot وأدخل اسمًا مثل "إستراتيجية تصحيح فيبوناتشي".

قم بتعريف المتغيرات الأربعة المهمة.

1
2
3
4
5
private double _max;
private double _min;

private int _highIndex;
private int _lowIndex;

قم ببرمجة cBot لاكتشاف الأسعار الدنيا والقصوى لآخر 50 شريطًا.

1
2
_max = Bars.HighPrices.Maximum(50);
_min = Bars.LowPrices.Minimum(50);

يسمح cTrader Algo للمستخدمين بتحديد الموقع الزمني من خلال الوقت المطلق أو مؤشر الشريط النسبي. سنستخدم مؤشر الشريط النسبي لرسم تصحيح فيبوناتشي ونكتب الكود لاكتشاف مؤشر أسعار القمة والقاع.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
for (int i = 0; i <= 50; i++)
{
     if (Bars.HighPrices.Last(i) == _max)
          _highIndex = Bars.Count - i - 1;
}

for (int i = 0; i <= 50; i++)
{
     if (Bars.LowPrices.Last(i) == _min)
          _lowIndex = Bars.Count - i - 1;
}

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

1
2
3
4
if (_highIndex > _lowIndex)
     Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
else
     Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);

يمكنك نسخ الكود الكامل أدناه:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class FibonacciRetracementStrategy : Robot
    {
        private double _max;
        private double _min;

        private int _highIndex;
        private int _lowIndex;

        protected override void OnStart()
        {
            _max = Bars.HighPrices.Maximum(50);
            _min = Bars.LowPrices.Minimum(50);

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.HighPrices.Last(i) == _max)
                    _highIndex = Bars.Count - i - 1;
            }

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.LowPrices.Last(i) == _min)
                    _lowIndex = Bars.Count - i - 1;
            }

            if (_highIndex > _lowIndex)
                Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
            else
                Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);
        }

        protected override void OnTick()
        {
            // Handle price updates here
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

لبناء cBot، استخدم اختصار لوحة المفاتيح Ctrl+B أو انقر فوق بناء.

أضف نسخة محلية من cBot: انقر فوق إضافة نسخة، حدد خيار محليًا، ثم انقر فوق إضافة نسخة.

انقر فوق النسخة وانتقل إلى علامة التبويب الاختبار العكسي. اختر فترة للاختبار العكسي ثم انقر فوق أيقونة التشغيل.

يجب أن ترى تصحيحات فيبوناتشي مرسومة على الرسم البياني.

تداول تصحيح فيبوناتشي

عُد إلى محرر الأكواد لتنفيذ إستراتيجية بسيطة تعتمد على تصحيحات فيبوناتشي. تدور الإستراتيجية حول الدخول في مركز شراء كلما عبر السعر مستوى فيبوناتشي 0.618 ويُتوقع حدوث ارتداد.

اكتب الكود الذي ينفذ الإستراتيجية في طريقة OnTick().

1
2
3
4
5
protected override void OnTick()
{
     if (Positions.Count == 0 && Bid < _min + ((_max - _min) * 0.618))
          ExecuteMarketOrder(TradeType.Buy, SymbolName, 1000);
}

يمكنك نسخ الكود الكامل أدناه:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class FibonacciRetracementStrategy : Robot
    {
        private double _max;
        private double _min;

        private int _highIndex;
        private int _lowIndex;

        protected override void OnStart()
        {
            _max = Bars.HighPrices.Maximum(50);
            _min = Bars.LowPrices.Minimum(50);

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.HighPrices.Last(i) == _max)
                    _highIndex = Bars.Count - i - 1;
            }

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.LowPrices.Last(i) == _min)
                    _lowIndex = Bars.Count - i - 1;
            }

            if (_highIndex > _lowIndex)
                Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
            else
                Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);
        }

        protected override void OnTick()
        {
            if (Positions.Count == 0 && Bid < _min + ((_max - _min) * 0.618))
                ExecuteMarketOrder(TradeType.Buy, SymbolName, 1000);
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

قم ببناء cBot مرة أخرى ثم اختباره عكسيًا.

يجب أن ترى المراكز يتم الدخول فيها كلما تم عبور مستوى التصحيح.

الملخص

شرح هذا المقال كيفية رسم تصحيحات فيبوناتشي على الرسم البياني للرمز وتنفيذ إستراتيجية تداول تعتمد على التصحيحات.