Lewati ke isi

Pengelolaan programatik indikator teknikal

Trader sering mengandalkan kombinasi trading manual dan pembantu trading otomatis, terutama indikator kustom. Namun, dalam banyak kasus, pembantu ini sama sekali tidak mengetahui satu sama lain dan tidak dapat bereaksi terhadap tindakan dan output satu sama lain.

Untungnya, cTrader menawarkan cara yang nyaman untuk mengelola indikator grafik secara programatik. Dengan menggunakan fitur ini, Anda dapat membangun asisten dinamis yang membaca data dari indikator yang ditambahkan pengguna ke grafik.

Anda juga dapat membuat algo yang menambahkan, menghapus, atau mengubah pengaturan indikator berdasarkan kondisi tertentu, memungkinkan Anda untuk menawarkan lebih banyak nilai kepada pengguna Anda dan membuka peluang baru untuk monetisasi.

Panduan API ini menjelaskan bagaimana Anda dapat mengelola indikator grafik secara programatik dalam berbagai kondisi.

Pengelolaan indikator grafik dalam satu menit!

  • Dengan mengelola indikator grafik secara programatik, Anda dapat menyesuaikan pengaturan indikator (misalnya, ketebalan garis) tergantung pada kondisi tertentu.
  • cBot dapat mengakses indikator apa pun yang Anda tambahkan secara manual ke grafik, membaca datanya, dan melakukan trading sesuai dengan itu.
  • Algo Anda dapat menambahkan indikator ke atau menghapusnya dari grafik secara otomatis, menghemat waktu Anda.
  • Pengelolaan indikator grafik secara programatik dimungkinkan untuk semua indikator kustom.

Menambahkan dan menghapus indikator secara programatik

Anda dapat dengan mudah menambahkan indikator apa pun yang Anda miliki akses dengan memanggil metode berikut.

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

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

Catatan

Metode ini akan menerima nama indikator apa pun yang Anda miliki akses.

Catatan

Parameter DataSeries apa pun harus ditentukan sebagai string dalam argumen metode.

Catatan

Jika beberapa parameter tidak ditentukan, metode akan menggunakan nilai default. Jika beberapa parameter tidak valid, metode akan memanggil penangan OnException untuk algo Anda.

Setelah metode dijalankan, indikator yang diminta akan segera ditambahkan ke grafik dan Anda akan dapat mengelolanya menggunakan nilai yang dikembalikan oleh metode tersebut. Misalnya, Anda dapat menghapusnya dengan memanggil metode ChartIndicators.Remove().

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

Berikut adalah cBot sederhana yang menggunakan kedua metode untuk menambahkan indikator Bollinger Bands kustom ke grafik setiap kali nilai Average True Range (ATR) melewati ambang batas tertentu. Jika nilai ATR turun di bawah ambang batas, indikator dihapus.

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

    }
}

Memodifikasi pengaturan indikator

Antarmuka ChartIndicator memberikan akses langsung ke semua pengaturan utama indikator melalui properti berikut:

  • ChartIndicator.Type, yang mendapatkan tipe indikator.
  • ChartIndicator.Parameters, yang mendapatkan daftar semua parameter indikator.
  • Lines, yang mendapatkan daftar semua garis yang dihasilkan oleh indikator.

Karena indikator adalah alat bantu visual, Anda dapat meningkatkannya dengan memodifikasi pengaturannya tergantung pada kondisi pasar. Indikator berikut mencoba melakukan hal 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;
            }
        }
    }
}

Tergantung pada apakah harga saat ini dari simbol berada di atas atau di bawah rata-rata bergerak eksponensial, warna dan ketebalan garis indikator berubah. Dalam beberapa kasus (misalnya, bereaksi cepat terhadap tren yang berubah), bantuan visual tambahan dapat membuat perbedaan besar.

Menangani event tambahan

Antarmuka ChartsIndicators juga mengekspos beberapa event yang dapat Anda tangani untuk mengelola indikator grafik secara programatik:

  • IndicatorAdded, yang dipicu setiap kali indikator baru ditambahkan ke grafik.
  • IndicatorRemoved, yang dipicu setiap kali indikator dihapus dari grafik.
  • IndicatorModified, yang dipicu setiap kali pengaturan indikator disesuaikan.

Event-event ini berharga bagi pengembang plugin. Melalui plugin, Anda dapat membuat elemen baru dari UI cTrader yang mengubah kontennya tergantung pada apakah pengguna menambahkan, menghapus, atau memodifikasi indikator.

Pengelolaan indikator dalam mode berbeda

Berikut adalah cara pengelolaan indikator bekerja di berbagai mode dan alat cTrader.

Mode/alat Cara kerjanya
Backtesting non-visual Semua indikator yang ditambahkan melalui ChartIndicators akan ditampilkan di grafik ketika backtesting selesai.
Backtesting visual dan Market Replay Semuanya berfungsi secara real-time sesuai yang diinginkan.
Optimisasi Semua operasi akan berfungsi tetapi tidak ada perubahan pada grafik yang akan dibuat ketika backtesting selesai.
cTrader CLI Semua operasi berfungsi sesuai yang diinginkan tetapi tidak ada perubahan yang dibuat pada grafik mana pun.

Mengelola indikator grafik secara programatik ideal untuk pengembang yang ingin menawarkan algo yang meningkatkan atau menyederhanakan penggunaan indikator. Dengan memanfaatkan fitur ini, Anda dapat memberikan produk berkualitas tinggi dan bernilai kepada pengguna Anda.

Image title