Skrip atau strategi memberikan hasil yang berbeza setelah menyegarkan halaman (repainting)

Data sejarah tidak termasuk catatan pergerakan harga intra-bar; hanya data pergerakan harga buka, tinggi, rendah dan dekat (OHLC). Ini membawa kepada skrip yang kadang-kadang berfungsi secara berbeza pada data sejarah dan dalam masa nyata, di mana hanya harga buka yang diketahui dan di mana harga biasanya akan bergerak berkali-kali sebelum nilai akhir tinggi, rendah dan tutup bagi bar masa nyata ditetapkan setelah bar masa nyata ditutup.

Sekiranya kita menambahkan skrip pada carta, tunggu sehingga ia mengira pada sebilangan bar masa nyata dan kemudian muatkan semula halaman. Anda kadang-kadang akan melihat plot skrip berubah sedikit. Perkara ini adalah salah satu daripada beberapa jenis kelakuan yang biasa disebut sebagai 'indicator repainting'. Ini adalah jenis repanting yang menjadi perhatian kita di sini dan ia adalah apa yang akan kita kenal ketika menggunakan repanting. Disebabkan apabila ciri-ciri tertentu digunakan dalam skrip, mereka akan menghitung secara berbeza pada bar sejarah dan masa nyata.

Jenis kelakuan lain, yang betul atau yang salah, yang dikenali sebagai repainting, adalah termasuk memplot dengan pengimbangan negatif pada bar masa lalu dan menggunakan maklumat masa depan yang tidak tersedia yang diterima melalui panggilan yang salah difahami ke fungsi request.security. Hal ini dapat mengakibatkan data tidak tersedia dalam masa nyata, ke dalam pengiraan skrip.

Tidak semua petunjuk merujuk  kepada jenis 'repainting' yang kita bincangkan di sini. Dalam kebanyakan kes, ia bergantung pada apakah fungsi atau konstruk bahasa tertentu digunakan atau tidak digunakan dalam kod tersebut. Sebagai makluman tindak balas repainting ini bukan pepijat, tetapi ia terhasil dari perbezaan yang wujud antara bar bersejarah dan maklumat bar masa nyata di TradingView.

Kita dapat melihat 'repainting' dalam kes berikut:

1. Strategi menggunakan calc_on_every_tick = true. Strategi dengan parameter calc_on_every_tick = false juga mungkin terdedah kepada 'repainting', tetapi pada tahap yang rendah.

2. Menggunakan kod request.security untuk meminta data dari resolusi yang lebih tinggi daripada resolusi simbol utama carta:

// Add this indicator on 1 minute chart
//@version=5
indicator("My Script")
c = request.security(syminfo.tickerid, "5", close)
plot(close)
plot(c, color=color.red)

Kajian ini akan mengira secara berbeza pada data masa nyata dan sejarah, tanpa mengira nilai parameter lookahead (lihat Understanding lookahead).

3. Menggunakan request.security untuk meminta data dari resolusi yang lebih rendah daripada resolusi simbol utama carta (maklumat tambahan di sini):

// Add this indicator to a 5 minute chart
//@version=5
indicator("My Script")
c = request.security(syminfo.tickerid, "1", close, lookahead=barmerge.lookahead_off)
plot(close)
plot(c, color=color.red)

Sekiranya lookahead=barmerge.lookahead_off, repainting akan berlaku. Apabila lookahead=barmerge.lookahead_on, kemungkinan 'repainting' adalah kurang. Ia mungkin berlaku apabila kemas kini 1 dan 5 minit saling bertemu antara satu sama lain.

4. Semua pengiraan skrip bergantung pada starting point nya. Data intrahari diselaraskan dengan awal minggu, bulan atau tahun, bergantung pada resolusi. Oleh sebab itu, hasil akhir yang dihasilkan oleh skrip tersebut adalah berbeza dari semasa ke semasa. Terdapat kes di mana skrip akan bergantung pada titik permulaan:

  • apabila mereka menggunakan fungsi valuewhen, barsince atau ema (kerana keunikan di dalam algoritma mereka)
  • sebarang strategi pengujian semula (tidak kira bagaimana parameter calc_on_every_tick ditentukan)

Terdapat saling bergantungan antara resolusi dan penjajaran titik permulaan:

  • 1–14 minit - sejajar dengan permulaan minggu
  • 15-29 minit - sejajar dengan awal bulan
  • dari 30 minit dan lebih tinggi - sejajar dengan awal tahun

Berikut adalah batasan pada panjang sejarah yang diambil kira semasa memproses data:

  • 10000 bar sejarah untuk semua Plan Pro
  • 5000 bar sejarah untuk pelan lain

5. Perubahan data sejarah, misalnya, kerana pecahan.

6. Kehadiran pembolehubah berikut dalam skrip biasanya membawa kepada repainting :