Lewati ke isi

Cara menggambar retraksi Fibonacci

Retraksi Fibonacci adalah alat analisis teknikal populer yang digunakan untuk mengidentifikasi level potensial support dan resistance dalam harga aset. Dengan mengidentifikasi level support dan resistance, trader mendapatkan keunggulan strategis dalam menentukan waktu trading mereka, mengelola risiko, menyelaraskan dengan tren pasar, dan pada akhirnya meningkatkan peluang profitabilitas mereka.

Dalam artikel ini dan video yang menyertainya, Anda akan belajar cara membuat cBot yang menggambar retraksi Fibonacci pada grafik dan membuka posisi berdasarkan retraksi.

Gambar retraksi Fibonacci pada grafik

Retraksi Fibonacci menerapkan deret Fibonacci, serangkaian angka di mana setiap angka adalah jumlah dari dua angka sebelumnya.

Contoh

Ini adalah contoh deret Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Level Retraksi Fibonacci adalah rasio angka berurutan yang berasal dari deret Fibonacci. Berikut adalah rasio populer yang digunakan dalam analisis teknikal dan trading: 0,236, 0,382, 0,5, 0,618 dan terkadang 0,786.

Kita akan membuat cBot yang menggambar Retraksi Fibonacci pada grafik. Empat parameter yang mewakili harga awal, waktu awal, harga akhir, dan waktu akhir akan disediakan dalam kode cBot.

Di cTrader Algo, klik tombol New untuk membuat cBot dan masukkan nama seperti "Strategi Retraksi Fibonacci".

Deklarasikan empat variabel penting tersebut.

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

private int _highIndex;
private int _lowIndex;

Kodekan cBot untuk mendeteksi harga minimum dan maksimum untuk 50 bar terakhir.

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

cTrader Algo memungkinkan pengguna untuk menentukan lokasi waktu melalui waktu absolut atau indeks bar relatif. Kita akan menggunakan indeks bar relatif untuk menggambar retraksi Fibonacci dan menulis kode untuk mendeteksi indeks harga tertinggi dan terendah.

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

Akhirnya, kode yang menggambar Retraksi Fibonacci pada grafik dapat ditulis. Urutan harga tertinggi dan terendah menentukan arah retraksi Fibonacci.

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

Anda dapat menyalin kode lengkapnya di bawah ini:

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

Untuk membangun cBot, gunakan hotkey Ctrl+B atau klik Build.

Tambahkan instance lokal dari cBot: klik Add instance, pilih opsi Locally, lalu klik Add instance.

Klik instance tersebut dan navigasikan ke tab Backtesting. Pilih periode untuk backtesting dan kemudian klik ikon play.

Anda seharusnya melihat Retraksi Fibonacci tergambar pada grafik.

Trading retraksi Fibonacci

Kembali ke editor kode untuk menerapkan strategi sederhana berdasarkan retraksi Fibonacci. Strategi ini berpusat pada memasuki posisi beli setiap kali harga melewati level Fibonacci 0,618 dan diharapkan terjadi pantulan kembali.

Tulis kode yang mengeksekusi strategi tersebut dalam metode 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);
}

Anda dapat menyalin kode lengkapnya di bawah ini:

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

Bangun cBot lagi dan kemudian lakukan backtesting.

Anda seharusnya melihat posisi dimasuki setiap kali level retraksi terlewati.

Ringkasan

Artikel ini telah menjelaskan cara menggambar retraksi Fibonacci pada grafik simbol dan menerapkan strategi trading yang bergantung pada retraksi tersebut.