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

วิธีวาด Fibonacci retracement

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

ในบทความนี้และวิดีโอที่เกี่ยวข้อง คุณจะได้เรียนรู้วิธีสร้าง cBot ที่วาด Fibonacci retracement บนแผนภูมิและเปิดตำแหน่งตาม retracement

วาด Fibonacci retracement บนแผนภูมิ

Fibonacci retracement ใช้ลำดับ Fibonacci ซึ่งเป็นชุดตัวเลขที่แต่ละตัวเลขเป็นผลรวมของสองตัวเลขก่อนหน้า

ตัวอย่าง

นี่คือตัวอย่างลำดับ Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

ระดับ Fibonacci retracement คืออัตราส่วนของตัวเลขที่ต่อเนื่องกันซึ่งได้มาจากลำดับ Fibonacci นี่คืออัตราส่วนยอดนิยมที่ใช้ในการวิเคราะห์ทางเทคนิคและการเทรด: 0.236, 0.382, 0.5, 0.618 และบางครั้งก็ 0.786

เราจะสร้าง cBot ที่วาด Fibonacci retracement บนแผนภูมิ พารามิเตอร์สี่ตัวที่แสดงถึงราคาเริ่มต้น เวลาเริ่มต้น ราคาสิ้นสุด และเวลาสิ้นสุดจะถูกระบุในโค้ด cBot

ใน cTrader Algo คลิกปุ่ม New เพื่อสร้าง cBot และป้อนชื่อเช่น "Fibonaci Retracement Strategy"

ประกาศตัวแปรสำคัญสี่ตัว

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 อนุญาตให้ผู้ใช้กำหนดตำแหน่งเวลาผ่านเวลาสัมบูรณ์หรือดัชนีแท่งเทียนสัมพัทธ์ เราจะใช้ดัชนีแท่งเทียนสัมพัทธ์เพื่อวาด Fibonacci retracement และเขียนโค้ดเพื่อตรวจหาดัชนีของราคาสูงและราคาต่ำ

 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;
}

สุดท้าย สามารถเขียนโค้ดที่วาด Fibonacci retracement บนแผนภูมิได้ ลำดับของราคาสูงและราคาต่ำกำหนดทิศทางของ Fibonacci retracement

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 หรือคลิก Build

เพิ่มอินสแตนซ์ของ cBot ในเครื่อง: คลิก Add instance เลือกตัวเลือก Locally จากนั้นคลิก Add instance

คลิกที่อินสแตนซ์และไปที่แท็บ Backtesting เลือกช่วงเวลาสำหรับการ backtesting แล้วคลิกไอคอน เล่น

คุณควรจะเห็น Fibonacci retracement ถูกวาดบนแผนภูมิ

เทรดด้วย Fibonacci retracement

กลับไปที่โปรแกรมแก้ไขโค้ดเพื่อใช้กลยุทธ์อย่างง่ายที่อิงกับ Fibonacci retracements กลยุทธ์นี้หมุนรอบการเปิดโพสิชันซื้อเมื่อใดก็ตามที่ราคาข้ามระดับ Fibonacci 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 อีกครั้งแล้วทำการทดสอบย้อนหลัง

คุณควรเห็นโพสิชันที่เปิดทุกครั้งที่มีการข้ามระดับ retracement

สรุป

บทความนี้ได้อธิบายวิธีวาด Fibonacci retracements บนกราฟสัญลักษณ์และใช้กลยุทธ์การเทรดที่อิงกับ retracements