Saya berhasil menambahkan strategi pada chart namun strategi tersebut tidak membuat order apapun

Jika tab "Daftar Trade" dan "Ikhtisar" dari Penguji Strategi menampilkan "Tidak ada data" setelah anda menambahkan strategi ke chart, kemungkinan itu tidak mensimulasikan order apa pun, sehingga tidak ada data untuk diisi pada tab. Jika skrip anda tidak menghasilkan order, kemungkinan disebabkan salah satu alasan berikut:

Skrip tidak diklasifikasikan sebagai strategi atau tidak menggunakan perintah yang membuat order

Backtesting dengan menggunakan Penguji Strategi hanya bekerja dengan strategi Skrip Pinet™, yang menggunakan fungsi `strategy()` untuk pernyataan deklarasi mereka. Skrip yang dideklarasikan dengan `indicator()` atau `library()` tidak dapat berinteraksi dengan modul Penguji Strategi.

Skrip yang dideklarasikan sebagai strategi harus menggunakan perintah penempatan order `strategy.*` (misalnya, `strategy.order()` atau `strategy.entry()`) untuk mensimulasikan order dan menampilkan data pada Penguji Strategi, terlepas dari sinyal buy/sell yang mungkin telah dimasukkan oleh penulis skrip ke dalam kode.

Strategi tidak memiliki modal yang cukup untuk membuka posisi

Agar strategi dapat membuka posisi, ia harus memiliki cukup dana untuk membeli sejumlah kontrak/lot/saham/unit yang ditentukan. Ia tidak akan memasuki sebuah trader jika tidak memiliki modal yang cukup untuk melakukannya. Misalnya, jika modal awal strategi adalah 1.000 USD dan ukuran order adalah satu kontrak, strategi tersebut tidak dapat memasuki posisi kecuali harga aset turun di bawah 1.000 USD karena tidak mampu memenuhi harganya. Strategi akan selalu mencoba untuk membeli jumlah kontrak/saham/lot/unit yang ditentukan dan tidak kurang.

Catatan penting tentang backtesting ke depan:

Simbol kontrak berjangka umumnya memiliki apa yang dikenal sebagai Unit Kontrak (diwakili sebagai Nilai Poin di TradingView dan dapat diakses di Pine melalui variabel `syminfo.pointvalue`). Seperti simbol lainnya, harga mentah pada chart mewakili harga satu unit komoditas yang diperdagangkan. Namun, kontrak berjangka memiliki jumlah tertentu yang diwakili masing-masing, sehingga pembelian satu unit biasanya tidak mungkin dilakukan. Untuk menghitung modal yang diperlukan untuk sebuah kontrak, kalikan harga pada chart dengan Nilai Poin.

Untuk mendemonstrasikan efek Nilai Poin pada strategi yang beroperasi pada simbol kontrak berjangka, mari kita lihat simbol CME_MINI:ES1!, yang mewakili kontrak berjangka ES dengan likuiditas terbaik dan memiliki Nilai Poin 50:

Pada contoh di bawah ini, strategi yang kami tambahkan ke chart memasuki posisi tepat di 4000 USD dan exit di 4500 USD. Jumlah uang aktual yang digunakan untuk kontrak pada harga entri adalah 4000 USD dikalikan Nilai Poin 50, yaitu 200.000 USD. Ketika strategi menutup posisinya pada harga keluar, jumlah yang diterima adalah 4500 USD * 50 = 225.000 USD, menghasilkan keuntungan sebesar 25.000 USD, yang dapat kami konfirmasikan dengan melihat kolom "Profit" di tab "Daftar Trade" pada Penguji Strategi:

Jika strategi memiliki nilai Modal Awal di bawah 200.000 USD dalam kasus ini, strategi tersebut tidak akan dapat melakukan menempatkan order karena strategi tersebut tidak mampu membayar harga entri, yaitu 50 kali lipat dari harga yang ditunjukkan pada chart. Untuk mensimulasikan posisi, kita harus menaikkan Modal Awal atau menurunkan nilai Margin Buy/Sell agar strategi dapat memenuhinya.

Strategi mengembalikan runtime error

Jika suatu strategi menemui masalah selama perhitungannya, maka akan menimbulkan runtime error dan menampilkan tanda seru merah di sudut kiri atas panel chart yang berisi strategi. Runtime error menghentikan skrip dari melanjutkan perhitungan, sehingga tidak dapat mensimulasikan order. Runtime error yang berbeda di Pine memiliki berbagai penyebab dan potensi perbaikan. Melakukan klik pada tanda seru akan menampilkan pesan error skrip.

Kondisi yang diperlukan untuk menempatkan order strategi tidak terpenuhi

Salah satu kemungkinan penyebab strategi tidak menampilkan data apa pun adalah karena tidak ada kondisi yang memicu order selama rentang pengujian. Dalam hal ini, tidak akan ada entri pada chart karena tidak ada order yang harus dipenuhi. Pengguna dapat memperbaikinya dengan mengubah kondisi dalam kode sumber strategi. Itu sering kali berguna untuk memeriksa secara visual riwayat kondisi order strategi dengan memplotnya pada chart.

Skrip di bawah ini menggunakan fungsi `plotshape()` dari Pine untuk memplot persilangan biru dan merah di atas bar setelah terjadinya kondisi buy dan sell, memungkinkan kita untuk memeriksa riwayatnya pada chart:

//@version=5
strategy('My Strategy', overlay = true)

longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))

if longCondition
    strategy.entry('Long', strategy.long)

plotshape(longCondition, color=color.new(color.blue, 0))

shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))

if shortCondition
    strategy.entry('Short', strategy.short)

plotshape(shortCondition, color=color.new(color.red, 0))

Untuk informasi tambahan mengenai topik ini, lihat halaman Panduan Pengguna kami pada bagian Debugging.

Kesalahan pada Properti strategi

Setiap strategi memiliki beberapa parameter yang mengatur persyaratan untuk membuka order. Penulis dapat mengatur parameter ini dari kode sumber strategi, dan pengguna dapat menggantinya dengan input pada tab "Properti" di pengaturan strategi.

CATATAN: Terdapat beberapa tempat dalam kode sumber strategi di mana pengguna dapat mengatur jumlah kontrak/saham/lot/unit untuk ordernya:

  • Parameter dalam fungsi `strategi()` memungkinkan pengguna untuk mengatur jumlah dan jenis trade bawaan , yang menetapkan nilai bawaan pada tab "Properti". Pengguna dapat mengganti nilai ini dengan menyesuaikan input "Ukuran order".
  • Perintah penempatan order yang menghasilkan order entri, seperti `strategy.entry()`, dapat mengatur kuantitas trade berdasarkan order demi order. Dalam hal ini, mengubah input pada tab "Properti" tidak akan memengaruhi ukuran order strategi.

Pengguna harus memastikan mereka menentukan ukuran order strategi mereka dengan benar. Untuk menambahkan bagian "Strategi tidak memiliki cukup modal untuk membuka posisi" di atas, anda harus memperhatikan bahwa:

  • Jika "Jenis order" strategi disetel ke "Kontrak" (setara dengan `strategy.fixed` sebagai default_qty_type dalam kode sumber), ukuran order harus lebih besar dari 1 untuk sebagian besar simbol. Beberapa mata uang crypto memfasilitasi ukuran pecahan. Misalnya, ukuran order 0,1 berlaku untuk BTCUSD namun tidak untuk AAPL atau EURUSD.
  • Ukuran order harus positif; angka negatif akan menyebabkan runtime error, dan nilai 0 tidak akan berpengaruh.
  • Ukuran posisi total (jumlah kontrak) tidak boleh melebihi 1e12. Strategi tidak akan mensimulasikan order baru jika ukuran posisi melebihi angka ini.