Langkau tajuk talian

Pengurusan programatik indikator teknikal

Pedagang sering bergantung pada beberapa kombinasi dagangan manual dan pembantu dagangan automatik, terutamanya indikator tersuai. Walau bagaimanapun, dalam banyak kes, pembantu ini sama sekali tidak menyedari antara satu sama lain dan tidak dapat bertindak balas terhadap tindakan dan output satu sama lain.

Mujurlah, cTrader menawarkan cara yang mudah untuk menguruskan indikator carta secara programatik. Menggunakan ciri ini, anda boleh membina pembantu dinamik yang membaca data daripada indikator yang ditambah oleh pengguna pada carta.

Anda juga boleh membuatnya supaya algo menambah, membuang atau mengubah tetapan indikator berdasarkan beberapa syarat, membolehkan anda menawarkan lebih banyak nilai kepada pengguna anda dan membuka peluang baharu untuk penjanaan pendapatan.

Panduan API ini menerangkan bagaimana anda boleh menguruskan indikator carta secara programatik dalam keadaan yang berbeza.

Pengurusan indikator carta dalam satu minit!

  • Dengan menguruskan indikator carta secara programatik, anda boleh melaraskan tetapan indikator (contohnya, ketebalan garis) bergantung pada keadaan tertentu.
  • cBot boleh mengakses mana-mana indikator yang anda lampirkan secara manual pada carta, membaca data mereka dan berdagang dengan sewajarnya.
  • Algo anda boleh menambah indikator pada atau membuangnya daripada carta secara automatik, menjimatkan masa anda.
  • Pengurusan indikator carta secara programatik boleh dilakukan untuk semua indikator tersuai.

Tambah dan buang indikator secara programatik

Anda boleh menambah dengan mudah mana-mana indikator yang anda ada akses kepadanya dengan memanggil kaedah berikut.

1
ChartIndicator ChartIndicators.Add(string name, params object[] parameterValues)

Kaedah ini mengambil nama indikator sebagai parameter pertama dan kemudian mengambil semua parameter indikator tersebut secara berurutan (contohnya, "Simple Moving Average", "High", 25).

Nota

Kaedah ini akan menerima nama mana-mana indikator yang anda ada akses kepadanya.

Nota

Sebarang parameter DataSeries mesti dinyatakan sebagai rentetan dalam hujah kaedah.

Nota

Jika beberapa parameter tidak dinyatakan, kaedah akan menggunakan nilai lalai. Jika beberapa parameter tidak sah, kaedah akan memanggil pengendali OnException untuk algo anda.

Selepas kaedah dilaksanakan, indikator yang diminta akan segera ditambah pada carta dan anda akan dapat menguruskannya menggunakan nilai yang dikembalikan oleh kaedah tersebut. Contohnya, anda boleh membuangnya dengan memanggil kaedah ChartIndicators.Remove().

1
2
3
var newIndicator = ChartIndicators.Add("Simple Moving Average", "High", 25);
...
ChartIndicators.Remove(newIndicator);

Berikut ialah cBot ringkas yang menggunakan kedua-dua kaedah untuk menambah indikator Bollinger Bands tersuai pada carta apabila nilai Average True Range (ATR) melepasi ambang tertentu. Jika nilai ATR jatuh di bawah ambang, indikator dibuang.

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

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class ChartIndicatorsTest : Robot
    {

        private AverageTrueRange _aTR;
        private ChartIndicator _customBollingerBands;

        protected override void OnStart()
        {
            _aTR = Indicators.AverageTrueRange(14, MovingAverageType.Exponential);
            ChartIndicators.Add("Average True Range");
        }

        protected override void OnBar()
        {
            if (_aTR.Result[Bars.Count - 1] >= 0.0002) 
            {
                _bollingerBands = ChartIndicators.Add("Custom BB");
            } else if (_bollingerBands != null)
            {
                ChartIndicators.Remove(_bollingerBands);
            }
        }

    }
}

Ubah suai tetapan indikator

Antara muka ChartIndicator menyediakan akses langsung kepada semua tetapan utama indikator melalui sifat berikut:

  • ChartIndicator.Type, yang mendapatkan jenis indikator.
  • ChartIndicator.Parameters, yang mendapatkan senarai semua parameter indikator.
  • Lines, yang mendapatkan senarai semua garis yang dihasilkan oleh indikator.

Memandangkan indikator adalah alat bantuan visual, anda boleh meningkatkannya dengan mengubah suai tetapannya bergantung pada keadaan pasaran. Indikator berikut cuba melakukan perkara tersebut.

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

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]
    public class ColourMovingAverage : Indicator
    {

        private MovingAverage _fastMA;
        private ChartIndicator _chartMA;
        private const int __lineThickness = 4;


        protected override void Initialize()
        {
            _fastMA = Indicators.MovingAverage(Bars.OpenPrices, 10, MovingAverageType.Exponential);
            _chartMA = ChartIndicators.Add("Exponential Moving Average", "Open", 10);
        }

        public override void Calculate(int index)
        {
            var line = _chartMA.Lines[0];

            if (Symbol.Bid > _fastMA.Result[index]) 
            {
                line.Color = Color.Green;
                line.Thickness = __lineThickness;
            } else 
            {
                line.Color = Color.Red;
                line.Thickness = __lineThickness;
            }
        }
    }
}

Bergantung pada sama ada harga semasa simbol berada di atas atau di bawah purata bergerak eksponen, garis indikator berubah warna dan ketebalan. Dalam sesetengah kes (contohnya, bertindak balas dengan cepat terhadap trend yang berubah), bantuan visual tambahan boleh membuat perbezaan besar.

Kendalikan peristiwa tambahan

Antara muka ChartsIndicators juga mendedahkan beberapa peristiwa yang boleh anda kendalikan untuk mengurus indikator carta secara programatik:

  • IndicatorAdded, yang dicetuskan setiap kali indikator baharu ditambahkan pada carta.
  • IndicatorRemoved, yang dicetuskan setiap kali indikator dikeluarkan daripada carta.
  • IndicatorModified, yang dicetuskan setiap kali tetapan indikator dilaraskan.

Peristiwa ini berharga untuk pembangun plugin. Melalui plugin, anda boleh mencipta elemen baharu antara muka pengguna cTrader yang mengubah kandungannya bergantung pada sama ada pengguna menambah, mengeluarkan atau mengubah suai indikator.

Pengurusan indikator dalam mod berbeza

Berikut ialah cara pengurusan indikator berfungsi merentasi mod dan alat cTrader yang berbeza.

Mod/alat Cara ia berfungsi
Ujian belakang bukan visual Semua indikator yang ditambah melalui ChartIndicators akan ditunjukkan pada carta apabila ujian belakang selesai.
Ujian belakang visual dan Ulangan Pasaran Semuanya berfungsi dalam masa nyata seperti yang dimaksudkan.
Pengoptimuman Semua operasi akan berfungsi tetapi tiada perubahan pada carta akan dibuat apabila ujian belakang selesai.
cTrader CLI Semua operasi berfungsi seperti yang dimaksudkan tetapi tiada perubahan dibuat pada mana-mana carta.

Mengurus indikator carta secara programatik adalah ideal untuk mana-mana pembangun yang ingin menawarkan algo yang meningkatkan atau memudahkan kerja dengan indikator. Dengan memanfaatkan ciri ini, anda boleh menyampaikan produk berkualiti tinggi dan bernilai kepada pengguna anda.

Image title