Langkau tajuk talian

Cara melukis penjejakan semula Fibonacci

Penjejakan Semula Fibonacci adalah alat analisis teknikal popular yang digunakan untuk mengenal pasti tahap sokongan dan rintangan yang berpotensi dalam harga aset. Dengan mengenal pasti tahap sokongan dan rintangan, pedagang mendapat kelebihan strategik dalam mengatur masa dagangan mereka, mengurus risiko, menyelaraskan dengan trend pasaran dan akhirnya meningkatkan peluang keuntungan mereka.

Dalam artikel ini dan video yang berkaitan, anda akan belajar cara membuat cBot yang melukis Penjejakan Semula Fibonacci pada carta dan membuka posisi berdasarkan penjejakan semula.

Lukis penjejakan semula Fibonacci pada carta

Penjejakan Semula Fibonacci melaksanakan jujukan Fibonacci, siri nombor di mana setiap nombor adalah jumlah dua nombor sebelumnya.

Contoh

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

Tahap Penjejakan Semula Fibonacci adalah nisbah nombor berturutan yang diperolehi daripada jujukan Fibonacci. Ini adalah nisbah popular yang digunakan dalam analisis teknikal dan dagangan: 0.236, 0.382, 0.5, 0.618 dan kadang-kadang 0.786.

Kita akan membuat cBot yang melukis Penjejakan Semula Fibonacci pada carta. Empat parameter yang mewakili harga permulaan, masa permulaan, harga akhir dan masa akhir akan disediakan dalam kod cBot.

Dalam cTrader Algo, klik butang New untuk membuat cBot dan masukkan nama seperti "Strategi Penjejakan Semula Fibonacci".

Isytiharkan empat pemboleh ubah penting.

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

private int _highIndex;
private int _lowIndex;

Kod cBot untuk mengesan harga minimum dan maksimum untuk 50 bar terakhir.

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

cTrader Algo membolehkan pengguna menentukan lokasi masa melalui masa mutlak atau indeks bar relatif. Kita akan menggunakan indeks bar relatif untuk melukis penjejakan semula Fibonacci dan menulis kod untuk mengesan indeks harga tinggi dan rendah.

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

Akhir sekali, kod yang melukis Penjejakan Semula Fibonacci pada carta boleh ditulis. Susunan harga tinggi dan rendah menentukan arah penjejakan semula 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 boleh menyalin kod penuh di bawah:

 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 membina cBot, gunakan kekunci pintas Ctrl+B atau klik Build.

Tambah contoh tempatan cBot: klik Add instance, pilih pilihan Locally, kemudian klik Add instance.

Klik contoh tersebut dan navigasi ke tab Backtesting. Pilih tempoh untuk ujian belakang dan kemudian klik ikon main.

Anda sepatutnya melihat Penjejakan Semula Fibonacci dilukis pada carta.

Berdagang penjejakan semula Fibonacci

Kembali ke editor kod untuk melaksanakan strategi mudah berdasarkan penjejakan semula Fibonacci. Strategi ini berkisar tentang memasuki posisi beli apabila harga merentasi aras Fibonacci 0.618 dan lantunan balik dijangka berlaku.

Tulis kod yang melaksanakan strategi tersebut dalam kaedah 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 boleh menyalin kod penuh di bawah:

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

Bina cBot sekali lagi dan kemudian lakukan ujian belakang.

Anda sepatutnya melihat posisi dimasuki apabila aras penjejakan semula direntasi.

Ringkasan

Artikel ini telah menerangkan cara melukis penjejakan semula Fibonacci pada carta simbol dan melaksanakan strategi dagangan yang bergantung pada penjejakan semula tersebut.