Saya berjaya menambahkan strategi pada carta saya, tetapi ia tidak menjana pesanan
Jika dalam tab "Senarai Dagangan" dan "Gambaran Keseluruhan" pada Penguji Strategi memaparkan "Tiada data" selepas anda menambahkan satu strategi kepada carta, berkemungkinan ia tidak menjalankan apa-apa pesanan, yang menyebabkan tiada data untuk mengisi tab-tab. Jika skrip anda tidak menjana pesanan, ia mungkin kerana sebab-sebab berikut:
Skrip tidak diklasifikasikan sebagai satu strategi atau tidak menggunakan perintah yang mencipta pesanan
Ujian Belakang dengan Penguji Strategi hanya berfungsi dengan strategi Skrip Pine™, yang menggunakan fungsi `strategy()` di dalam pernyataan pengisytiharannya. Skrip diisytiharkan dengan `indicator()` atau `library()` tidak boleh berinteraksi dengan modul Penguji Strategi.
Skrip yang diisytiharkan sebagai satu strategi hendaklah menggunakan perintah penempatan pesanan 'strategy.*` (cth., `strategy.order()` atau `strategy.entry()`) untuk melakukan simulasi pesanan dan memaparkan data di dalam Penguji Strategi, tidak mengira mana-mana isyarat jual/beli yang penulis skrip mungkin telah isikan di dalam kod.
Strategi tidak mempunyai modal yang cukup untuk membuka satu posisi
Untuk satu strategi memasuki satu posisi, ia mestilah mempunyai cukup wang untuk membeli satu bilangan tertentu kontrak/lot/saham/unit. Ia tidak akan melakukan satu dagangan sekiranya ia tidak mempunyai modal yang cukup. Sebagai contoh, jika modal awalan satu strategi ialah 1000 USD dan saiz pesanan ialah satu kontrak, ia tidak boleh memasuki posisi sehinggalah harga aset jatuh di bawah 1000 USD kerana ia tidak mempunyai cukup wang untuk melakukan keseluruhan dagangan. Strategi akan sentiasa cuba membeli satu bilangan tertentu kontrak/saham/lot/unit dan tidak kurang dari itu.
Nota penting dalam melakukan ujian belakang untuk pasaran hadapan:
Simbol-simbol hadapan selalunya mempunyai apa yang dikenali sebagai satu Unit Kontrak (diwakili oleh Nilai Titik (Point Value) di TradingView dan boleh diakses di Pine melalui pembolehubah `syminfo.pointvalue`). Seperti simbol-simbol lain, harga mentah (raw price) pada carta mewakili harga satu unit komoditi yang didagangkan. Akan tetapi, kontrak hadapan mempunyai satu set bilangan yang setiap satunya diwakilkan, jadi satu belian tunggal selalunya tidak dibenarkan. Untuk mengira jumlah modal yang diperlukan untuk satu-satu kontrak, darabkan harga carta dengan Nilai Titik.
Untuk mewakili kesan Nilai Titik kepada strategi-strategi yang beroperasi pada simbol-simbol hadapan, mari kita lihat pada simbol CME_MINI:ES1!, yang mewakili kontrak hadapan ES dengan kecairan yang bagus dan mempunyai satu Nilai Titik 50:
Di dalam contoh di bawah, strategi yang kami telah tambahkan kepada carta telah memasuki satu posisi pada harga 4000 USD dan keluar pada harga 4500 USD. Jumlah sebenar wang yang digunakan pada kontrak pada harga masukan adalah 4000 USD darab Nilai Titik 50, iaitu 200,000 USD. Apabila strategi menutup posisinya pada harga keluar, jumlah yang diterima adalah 4500 USD * 50 = 225,000 USD, yang menghasilkan keuntungan 25,000 USD, yang mana kita boleh sahkan dengan melihat lajur "Untung" pada tab "Senarai Dagangan" di dalam Penguji Strateg:
Jika dalam kes ini, strategi mempunyai satu Modal Awalan bernilai di bawah 200,000 USD, ia tidak boleh membuat pesana kerana ia tidak mempunyai cukup wang untuk membeli harga masukan, yang mana adalah 50 kali harga yang ditunjukkan di atas carta. Untuk melakukan simulasi posisi ini, kita perlu menaikkan nilai Modal Awalan atau Margin Panjang/Singkat untuk membolehkan strategi untuk membelinya.
Strategi yang memulangkan satu ralat masa jalan
Jika satu strategi menghadapi masalah semasa pengiraanya, ia akan memberikan satu ralat masa jalan (runtime error) dan memaparkan satu tanda seru merah di bahagian bucu atas kiri pada panel carta yang mengandungi strategi. Ralat masa jalan menghentikan skrip daripada meneruskan pengiraan, jadi ia tidak dapat melakukan pesanan. Ralat masa jalan berbeza di dalam Pine mempunyai beberapa sebab dan potensi pembaikan. Dengan mengklik pada tanda seru, mesej ralat skrip akan dipaparkan.
Situasi yang diperlukan untuk meletakkan pesanan strategi tidak dipenuhi
Satu sebab yang berkemungkinan menyebabkan satu strategi tidak menunjukkan apa-apa data adalah tiada situasi yang mencetus satu pesanan menerusi julat pengujian. Dalam kes ini, tiada masukan (entries) pada carta kerana tiada pesanan untuk dipenuhi. Pengguna boleh membaiki keadaan ini dengan menukar situasi di dalam kod sumber strategi. Ia selalunya berguna untuk memeriksa secara visual sejarah keadaan pesanan strategi dengan memplotkan mereka di atas carta.
Skrip di bawah menggunakan fungsi Pine `plotshape()` untuk memplot tanda silang biru dan merah di atas bar-bar semasa terjadinya keadaan panjang dan singkat, yang membenarkan kita untuk memeriksa sejarah mereka di atas carta.
//@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 maklumat lanjut berkaitan topik ini, slla lihat halaman Manual Pengguna mengenai Nyahpepijat.
Sifat strategi adalah tidak betul
Setiap strategi mempunyai beberapa parameter yang menjaga peraturannya untuk melakukan pesanan. Penulis boleh menetapkan parameter ini dari satu kod sumber strategi dan pengguna boleh mengatasi mereka dengan memberikan input di dalam tab "Sifat" pada tetapan strategi.
NOTA: Ada beberapa tempat di dalam kod sumber strategi di mana pengguna boleh menetapkan bilangan kontrak/saham/lot/unit untuk pesanannya:
- Parameter dalam fungsi `strategy()` membenarkan pengguna menetapkan bilangan dan jenis lalai dagangan, yang menetapkan nilai-nilai lalai di dalam tab "Sifat". Pengguna boleh mengatasi (override) nilai-nilai ini dengan mengubah input "Saiz pesanan".
- Perintah penempatan pesanan yang menghasilkan pesanan masukan, seperti `strategy.entry()`, boleh menetapkan kuantiti dagangan pada satu keadaan pesanan dengan pesanan (order-by-order basis). Dalam kes ini, perubahan kepada input dalam tab "Sifat" tidak akan mempengaruhi saiz pesanan strategi.
Pengguna hendaklah memastikan mereka memberikan saiz tertentu untuk pesanan strategi mereka berjalan dengan betul. Untuk menambahkan kepada bahagian '"Strategi tidak mempunyai modal yang cukup untuk membuka satu posisi" di atas, anda hendaklah maklum bahawa:
- Jika satu "Jenis pesanan" strategi ditetapkan kepada "Kontrak" (bersamaan dengan `strategy.fixed` seperti default_qty_type dalam kod sumber), saiz pesanan hendaklah lebih besar daripada 1 untuk kebanyakan simbol. Beberapa mata wang kripto membenarkan saiz-saiz pecahan (fractional size). Sebagai contoh, satu saiz pesanan 0.1 adalah sah untuk BTCUSD tetapi tidak dibenarkan untuk AAPL atau EURUSD.
- Saiz pesanan hendaklah positif, bilangan negatif akan mengakibatkan ralat masa jalan dan satu nilai 0 tidak akan mempunyai kesan.
- Jumlah saiz posisi (bilangan kontrak) tidak boleh melebihi 1e12. Strategi tidak akan menjalankan pesanan baru jika saiz posisi melebih bilangan ini.