Ana içeriğe geç

Fibonacci geri çekilme seviyeleri nasıl çizilir

Fibonacci Geri Çekilme Seviyeleri, bir varlığın fiyatında potansiyel destek ve direnç seviyelerini belirlemek için kullanılan popüler bir teknik analiz aracıdır. Destek ve direnç seviyelerini belirleyerek trader'lar, işlemlerini zamanlamada, riski yönetmede, piyasa trendleriyle uyum sağlamada ve nihayetinde kârlılık şanslarını artırmada stratejik bir avantaj elde ederler.

Bu makale ve ilgili videosunda, grafiğe Fibonacci Geri Çekilme Seviyelerini çizen ve geri çekilme seviyelerine göre pozisyon açan bir cBot'un nasıl oluşturulacağını öğreneceksiniz.

Grafiğe Fibonacci geri çekilme seviyesi çizin

Fibonacci Geri Çekilme Seviyeleri, her sayının kendinden önceki iki sayının toplamı olduğu bir sayı dizisi olan Fibonacci dizisini uygular.

Örnek

Bu bir Fibonacci dizisi örneğidir: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Fibonacci Geri Çekilme seviyeleri, Fibonacci dizisinden türetilen ardışık sayıların oranlarıdır. Bunlar, teknik analiz ve işlem yapmada kullanılan popüler oranlardır: 0.236, 0.382, 0.5, 0.618 ve bazen 0.786.

Grafiğe Fibonacci Geri Çekilme Seviyelerini çizen bir cBot oluşturacağız. cBot kodunda başlangıç fiyatı, başlangıç zamanı, bitiş fiyatı ve bitiş zamanını temsil eden dört parametre sağlanacaktır.

cTrader Algo'da, bir cBot oluşturmak için Yeni düğmesine tıklayın ve "Fibonacci Geri Çekilme Stratejisi" gibi bir ad girin.

Dört önemli değişkeni tanımlayın.

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

private int _highIndex;
private int _lowIndex;

Son 50 çubuk için minimum ve maksimum fiyatları tespit edecek şekilde cBot'u kodlayın.

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

cTrader Algo, kullanıcıların zaman konumunu mutlak zaman veya göreceli çubuk endeksi aracılığıyla tanımlamasına olanak tanır. Fibonacci geri çekilme seviyesini çizmek için göreceli çubuk endeksini kullanacağız ve yüksek ve düşük fiyatların endeksini tespit etmek için kodu yazacağız.

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

Son olarak, grafiğe Fibonacci Geri Çekilme Seviyelerini çizen kod yazılabilir. Yüksek ve düşük fiyatların sırası, Fibonacci geri çekilme seviyesinin yönünü belirler.

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

Aşağıdaki kodun tamamını kopyalayabilirsiniz:

 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'u oluşturmak için Ctrl+B kısayolunu kullanın veya Oluştur'a tıklayın.

cBot'un yerel bir örneğini ekleyin: Örnek ekle'ye tıklayın, Yerel olarak seçeneğini seçin, ardından Örnek ekle'ye tıklayın.

Örneğe tıklayın ve Geriye Dönük Test sekmesine gidin. Geriye dönük test için bir dönem seçin ve ardından oynat simgesine tıklayın.

Grafiğe çizilmiş Fibonacci Geri Çekilme Seviyelerini görmelisiniz.

Fibonacci geri çekilme seviyesi ile işlem yapın

Fibonacci geri çekilme seviyelerine dayalı basit bir strateji uygulamak için kod düzenleyiciye geri dönün. Strateji, fiyat 0.618 Fibonacci seviyesini her geçtiğinde bir alış pozisyonu açmayı ve bir geri sıçrama beklenmesini içerir.

Stratejiyi yürüten kodu OnTick() yöntemine yazın.

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

Aşağıdaki kodun tamamını kopyalayabilirsiniz:

 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'u tekrar derleyin ve ardından geriye dönük test edin.

Geri çekilme seviyesi her aşıldığında pozisyonların girildiğini görmelisiniz.

Özet

Bu makale, bir sembol grafiğine Fibonacci geri çekilme seviyelerinin nasıl çizileceğini ve geri çekilme seviyelerine dayalı bir işlem stratejisinin nasıl uygulanacağını açıklamıştır.