Lewati ke isi

Cara menggunakan indikator dalam cBot

Dalam artikel ini dan video terkaitnya, kami akan mendemonstrasikan bagaimana Anda dapat mereferensikan dan menggunakan indikator kustom dalam cBot Anda. Untuk melakukannya, kita akan mengembangkan algoritma trading yang menggunakan output dari indikator kustom sampel untuk melakukan operasi trading.

Membuat cBot baru

Untuk melihat semua indikator kustom yang saat ini terinstal di mesin Anda, beralih ke aplikasi Algo dan lanjutkan ke tab Indikator.

Jika Anda melihat satu atau lebih indikator kustom di sini, itu berarti Anda dapat dengan bebas menggunakannya di algo Anda yang lain. Untuk tutorial ini, kita akan menggunakan indikator Sample SMA dan mengembangkan cBot yang melakukan trading berdasarkan arah simple moving average.

Pertama, kita akan membuat cBot baru dan menamainya dengan sesuatu yang informatif seperti "Robot SMA". cBot kita akan memasuki trading beli ketika SMA menjadi bullish dan memasuki trading jual ketika SMA menjadi bearish. cBot kita tidak akan melakukan hedging posisinya, artinya posisi yang berlawanan akan ditutup pada setiap sinyal baru.

Menginisialisasi indikator

Ketika berkaitan dengan indikator kustom, langkah pertama kita adalah menambahkan referensi ke indikator kustom. Untuk mereferensikan indikator kustom kita perlu melakukan langkah-langkah berikut:

  1. Klik tombol Kelola referensi.
  2. Temukan indikator yang ingin kita referensikan di jendela yang baru dibuka.
  3. Centang kotak centang di sebelah indikator yang ingin kita referensikan.
  4. Klik Terapkan.

Setelah indikator direferensikan, kita dapat membuat variabel instance dari tipenya.

1
SampleSMA _sma;

Catatan

Tipe indikator harus sama dengan nama kelas indikator. Ini bisa berbeda dari nama file indikator.

Langkah selanjutnya adalah menginisialisasi indikator dalam metode OnStart() kita. Namun, sebelum kita melakukannya, kita akan menambahkan parameter ke cBot yang akan memungkinkan kita untuk mengkonfigurasi periode yang digunakan oleh indikator SMA kustom.

1
2
[Parameter(DefaultValue = 14)]
public int Periods { get; set; }

Kita dapat menggunakan metode Indicators.GetIndicator<>() untuk menginisialisasi indikator kustom apa pun yang kita referensikan. Kita perlu mendefinisikan tipe indikator dan melewatkan parameter indikator yang dipisahkan dengan koma.

Catatan

Parameter perlu dilewatkan dalam urutan yang dideklarasikan dalam kelas indikator.

Dalam kasus kita, tipenya adalah SampleSMA dan kita akan melewatkan nilai sumber indikator ini, yang dalam hal ini adalah harga penutupan bar dan parameter Period.

1
_sma = Indicators.GetIndicator<SampleSMA>(Bars.ClosePrices, Periods);

Implementasikan logika trading

Dengan indikator kita yang sudah diinisialisasi, kita dapat mengimplementasikan logika trading kita. Indikator SMA kustom kita menyimpan nilai-nilai moving average dalam koleksi Results. Koleksi Results memiliki dua metode yang berguna, IsRising() dan IsFalling(). Metode-metode ini memungkinkan kita untuk mengetahui apakah hasil indikator sedang naik atau turun.

Kita akan menggunakan metode-metode ini untuk mengimplementasikan kondisi trading kita.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {        

    }
    else if(_sma.Result.IsFalling())
    {

    }
}

Sekarang kita akan mengisi pernyataan if kita. Ketika moving average sedang naik, kita akan menutup semua posisi jual dan membuka posisi beli. Sebaliknya, ketika moving average sedang turun, kita akan menutup semua posisi beli dan membuka posisi jual.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {
        Close(TradeType.Sell);
        Open(TradeType.Buy);
    }
    else if(_sma.Result.IsFalling())
    {
        Close(TradeType.Buy);
        Open(TradeType.Sell);            
    }
}

Dalam kode kita, kita telah menggunakan dua metode baru yang tidak disediakan oleh API secara default. Metode Open() membuka posisi baru berdasarkan arah dan kuantitas yang ditentukan. Metode Close() menutup semua posisi dengan arah yang ditentukan.

Berikut adalah cara metode Open() didefinisikan.

1
2
3
4
5
private void Open(TradeType tradeType)
{
    if(Positions.Count == 0)
        ExecuteMarketOrder(tradeType, SymbolName, Volume, InstanceId);
}

Untuk mengeksekusi order di dalam metode Open(), kita juga perlu menambahkan parameter Volume.

1
2
[Parameter(DefaultValue = 10000)]
public int Volume { get; set; }

Yang tersisa hanyalah mendefinisikan metode Close().

1
2
3
4
5
private void Close(TradeType tradeType)
{
    foreach (var position in Positions.Where(p => p.TradeType == tradeType))
        position.Close();
}

Lakukan backtesting

Seperti biasa, sebelum kita membiarkan cBot melakukan trading atas nama kita, kita akan melakukan backtesting secara menyeluruh. Untuk melakukan hal yang sama, tambahkan sebuah instance dan kemudian beralih ke tab Backtesting.

Untuk menguji cBot kita lebih lanjut, kita menambahkan indikator kustom yang kita referensikan ke grafik di mana sebuah instance terpasang dan memeriksa apakah titik-titik masuk posisi cocok dengan output indikator.

Untuk mempelajari lebih lanjut tentang penggunaan dan pengembangan cBot, silakan jelajahi bagian-bagian lain dari dokumentasi dan berlangganan channel YouTube kami untuk mendapatkan notifikasi ketika kami mempublikasikan video baru.

Dalam artikel ini dan video yang menyertainya, kami akan menunjukkan bagaimana Anda dapat mereferensikan dan menggunakan indikator kustom dalam cBot Anda. Untuk melakukannya, kami akan mengembangkan algoritma trading yang menggunakan output dari indikator kustom yang sudah dibuat sebelumnya untuk melakukan operasi trading.

Membuat cBot Baru

Untuk melihat semua indikator kustom yang saat ini terinstal di mesin Anda, beralih ke aplikasi Algo dan lanjutkan ke 'Indikator'