Langkau tajuk talian

Cara mencipta cBot untuk cTrader dalam 5 Minit

Dalam artikel ini dan video yang berkaitan, kami akan menerangkan cara pantas untuk mencipta cBot dalam cTrader Algo. cBot yang akan kita cipta akan melaksanakan strategi dagangan mudah yang dipanggil Three white soldiers dan three black crows. Anda boleh mengetahui lebih lanjut tentang strategi ini dalam pangkalan pengetahuan kami.

Sebelum mengikuti arahan kami, pastikan anda telah memuat turun dan memasang aplikasi cTrader Windows atau Mac dari laman web rasmi. Lancarkannya, dan navigasi ke bahagian cTrader Algo. Anda boleh menemuinya di panel kiri. Klik tab Algo, dan bahagian cTrader Algo akan muncul.

Tambah cBot baharu

Klik butang New dalam cTrader Algo untuk memulakan penciptaan cBot baharu. Masukkan nama, pilih bahasa pengaturcaraan antara C# dan Python dan teruskan sehingga editor kod dibuka.

Tambah tetapan cBot

Sebelum kita mula melaksanakan strategi dagangan, kita akan melihat parameter dan kaedah asas cBot. Anda juga boleh merujuk dokumentasi kami untuk membiasakan diri dengan apa yang dilakukan oleh parameter dan kaedah yang berbeza.

  • Parameter cBot – membolehkan anda menentukan atribut yang boleh dikonfigurasi seperti volum dagangan atau jarak henti rugi/ambilan untung.

  • Kaedah cBot – menentukan bagaimana cBot anda bertindak apabila peristiwa tertentu berlaku. Terdapat empat peristiwa utama yang perlu anda kendalikan semasa membangunkan cBot cTrader, dan setiap satu diuruskan oleh kaedah yang sepadan yang disediakan oleh cTrader. Kaedah ini ialah OnStart(), OnTick(), OnBar(), OnStop() dalam C# dan on_start(), on_tick(), on_bar_closed(), on_stop() dalam Python. Perhatikan bahawa kaedah OnBar() dalam C# dan on_bar_closed() dalam Python tidak termasuk dalam templat kod lalai.

Jadual berikut mentakrifkan keempat-empat kaedah ini secara terperinci.

C# Python Tujuan
OnStart() on_start() Dicetuskan apabila contoh cBot mula beroperasi. Ia digunakan untuk memulakan sebarang pemboleh ubah yang anda rancang untuk digunakan dalam cBot anda seperti penunjuk, pembilang, pengendali peristiwa atau pemasa.
OnTick() on_tick() Dicetuskan pada setiap tik (kemas kini harga) pada carta dagangan di mana contoh cBot sedang berjalan. Biasanya digunakan untuk logik kemasukan atau keluar pantas berdasarkan data masa nyata. Di dalam kaedah ini, anda boleh mengaturcarakan syarat kemasukan dan keluar tersuai serta sebarang fungsi tambahan lain yang anda perlukan untuk dijalankan apabila tik baharu tiba.
OnBar() on_bar_closed() Dicetuskan pada penutupan setiap bar. Di dalam kaedah ini, anda boleh mengaturcarakan syarat kemasukan dan keluar tersuai atau sebarang fungsi lain yang perlu dijalankan pada pembentukan setiap bar baharu.
OnStop() on_stop() Dipanggil apabila cBot berhenti. Digunakan untuk melaksanakan operasi akhir seperti menutup posisi, menyimpan keadaan dan banyak lagi

Tambah logik dagangan

Kita akan menambah kod untuk strategi dagangan kita sekarang. cBot kita harus membuka posisi beli apabila tiga bar hijau terbentuk pada carta dan posisi jual apabila terdapat tiga bar merah berturut-turut.

Pertama, kita perlu menentukan parameter cBot kita. Parameter ini akan boleh disesuaikan sepenuhnya dari UI cTrader. Kita akan menentukan tiga parameter dalam cBot kita.

  1. Volum setiap dagangan.
  2. Henti rugi dalam pip.
  3. Ambilan untung dalam pip.

Tampal kod berikut ke dalam penyunting kod anda tepat di bawah kurungan kerinting selepas pengisytiharan kelas (public class NewcBot : Robot)

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Nota

cBot Python menggunakan parameter yang boleh disesuaikan yang diisytiharkan dalam fail .cs mereka.

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Kita kini perlu melaksanakan logik di sebalik strategi dagangan kita. Tampal kod berikut dalam kaedah OnBar() atau on_bar_closed() anda. Ingat bahawa kaedah ini dipanggil setiap kali bar baharu terbentuk.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//Three White Soldiers
if(Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) > Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume, "", StopLoss, TakeProfit);
}
            
//Three Black Crows
if(Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) < Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, "", StopLoss, TakeProfit);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Three White Soldiers
if (close.Last(1) > open_.Last(1) and
    close.Last(2) > open_.Last(2) and
    close.Last(3) > open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

# Three Black Crows
elif (close.Last(1) < open_.Last(1) and
      close.Last(2) < open_.Last(2) and
      close.Last(3) < open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

Sekarang kita akan memeriksa kod dengan lebih teliti. cTrader menyediakan akses kepada bar sejarah carta, membolehkan kita memeriksa sama ada tiga bar terakhir semuanya hijau atau semuanya merah. Dalam kaedah OnBar() C# dan on_bar_closed() Python di atas, kami pertama kali menyemak sama ada tiga bar terakhir semuanya hijau. Kemudian kita menilai sama ada bar-bar ini semuanya merah.

Jika salah satu daripada dua syarat ini benar, kami menempatkan pesanan pasaran menggunakan kaedah ExecuteMarketOrder(). Ia mengambil beberapa input (hujah), dengan yang paling penting adalah arah dagangan, simbol, volum dagangan, henti rugi, dan ambilan untung.

Dalam kes kami, arah pesanan (TradeType.Buy, TradeType.Sell) ditentukan oleh syarat strategi dagangan. Nama simbol diambil terus dari carta di mana cBot kami sedang berjalan SymbolName. Volum dagangan, henti rugi, dan ambilan untung (C#'s Volume, StopLoss, TakeProfit dan Python's VolumeInLots, StopLossInPips, TakeProfitInPips) semuanya diambil dari parameter cBot yang kami tentukan.

Bina dan jalankan cBot

Kita kini perlu memeriksa sama ada cBot kita berjaya dibina. Secara lalai, tetingkap hasil pembinaan terletak tepat di bawah penyunting kod. Jika anda tidak melihatnya, klik pada butang Layout di bar paling atas UI cTrader dan pilih Build Result. Pintasan papan kekunci untuk tindakan ini ialah Ctrl + W

Selepas itu, klik butang Build yang terletak di bar paling atas UI cTrader. Sebagai alternatif, klik kanan cBot anda dan klik Build dalam menu yang baru muncul, atau hanya tekan Ctrl + B.

Image title

Jika pembinaan berjaya, anda akan melihat mesej hijau di kawasan Build Result di bahagian bawah penyunting kod.

Image title

Sebagai alternatif, jika terdapat masalah dengan kod anda, anda akan melihat mesej merah dan ringkasan terperinci semua ralat pembinaan.

Image title

Selepas cBot anda telah berjaya dibina, anda boleh mula menggunakannya. Semua yang anda perlu lakukan ialah menambah contoh pada carta dagangan. Untuk berbuat demikian, hanya klik ikon + di sebelah kanan nama cBot anda. Anda akan melihat senarai semua simbol yang anda boleh jalankan cBot anda.

Image title

Kami akan memilih EURUSD. Selepas anda memilih simbol, contoh cBot baharu akan ditambah. Anda akan melihat item baharu dalam senarai cBot dengan nama simbol dan tempoh masa yang anda ingin berdagang.

Anda juga harus melihat parameter yang telah anda kodkan dalam tab Parameters tepat di bawah carta dagangan.

Image title

Anda boleh mengubah parameter ini mengikut kehendak anda atau hanya membiarkannya pada nilai lalai.

Selain itu, anda akan melihat butang Main di bahagian atas carta EURUSD.

Image title

Untuk melancarkan contoh anda, tekan butang ini. Sebagai alternatif, salinan butang ini juga terletak di sebelah kanan contoh anda dalam senarai cBot di sebelah kiri. Mana-mana satu butang ini akan memulakan cBot.

Selepas mengklik salah satu butang, anda akan melihatnya bertukar menjadi jingga, bermakna contoh cBot kita kini sedang berjalan. Dalam tab Log, anda juga akan melihat baris baharu yang menyatakan bahawa cBot kini telah bermula.

Ujian belakang cBot

cBot kita mungkin mengambil masa yang lama untuk membuka posisi pada carta dagangan sebenar. Kita akan menjalankan ujian belakang pantas untuk melihatnya dalam tindakan pada data sejarah. Untuk melakukan ini, buka tab Ujian Belakang.

Image title

Gunakan penggelongsor kalendar yang lebih dekat ke bahagian atas skrin untuk memilih julat tarikh yang anda ingin gunakan untuk ujian belakang. Dayakan bendera Mod visual untuk menjejaki hasil ujian belakang semasa ia berlaku.

Kita akan menggerakkan penggelongsor ke belakang satu bulan. Klik butang Main untuk melancarkan cBot pada data sejarah yang dipilih.

Selepas itu, anda akan dapat melihat posisi baharu dibuka dan/atau ditutup dalam tab yang terletak betul-betul di bawah carta dagangan dan di sebelah kanan bahagian Parameter. Secara khususnya, selepas mengesan salah satu daripada dua corak yang telah kita kodkan, cBot akan meletakkan pesanan beli atau jual.

Menjalankan ujian belakang adalah cara yang berguna untuk menganalisis sama ada cBot anda berfungsi dengan betul.

Ringkasan

Kami berharap artikel ini telah membantu dalam menunjukkan bagaimana anda boleh mencipta robot dagangan automatik menggunakan cTrader.

Image title