Variabel dan perhitungan sendiri
Menghitung rentang dan titik tengah harga dari data candle, lalu menampilkan hasilnya.
Jika harga tertinggi sebuah candle adalah 108 dan harga terendahnya 101, selisihnya adalah 7. Kita akan menghitung dan menggambar rentang harga ini untuk setiap candle.
Program kedua menghitung titik tengah kedua harga. Kedua contoh menggunakan variabel dan operasi aritmetika sederhana.
Apa yang diwakili sebuah candle?
Satu candle merangkum data dalam satu periode. Panjang periode ditentukan oleh kerangka waktu. Misalnya, pada data per jam, satu candle mewakili satu jam.
Ada lima data dasar:
open: harga pembukaan periode;high: harga tertinggi periode;low: harga terendah periode;close: harga penutupan periode;volume: volume periode, dalam satuan yang digunakan sumber data.
Huruf awal nama bahasa Inggrisnya membentuk singkatan OHLCV. Contoh awal buku menggunakan data contoh candle yang sudah selesai.
close selalu berarti harga penutupan candle yang sedang diproses program. Pada candle berikutnya, program menggunakan harga penutupan candle itu. Hal yang sama berlaku untuk data dasar lainnya.
Sedikit sejarah: dari mana asal candle Jepang?
Akar penggambaran candle berasal dari pasar beras Jepang pada abad ke‑18. Metode analisis harga yang berkembang di sana melahirkan grafik candle pada abad ke‑19. Steve Nison memperkenalkannya kepada pembaca Barat yang lebih luas melalui buku Japanese Candlestick Charting Techniques yang terbit pada 1991.
“Badan” candle yang tebal menunjukkan bagian antara harga pembukaan dan penutupan, sedangkan “sumbu” yang tipis menunjukkan harga tertinggi dan terendah dalam periode tersebut.
Latar sejarah dan ilustrasi: AAII Journal (bahasa Inggris).
Menghitung rentang
Jika harga tertinggi 108 dan harga terendah 101, harga bergerak dalam rentang 7 satuan:
108 − 101 = 7
Dalam kode, kita menulisnya seperti ini:
candle_range = high - lowhigh - low adalah ekspresi: program mengevaluasinya dan menghasilkan nilai. - berarti pengurangan.
candle_range adalah nama variabel. = memberikan hasil ekspresi di sebelah kanan kepada nama itu. Operasi ini disebut penugasan nilai.
Baca baris tersebut sebagai: “Hitung selisih high dan low, lalu beri hasilnya nama candle_range.” Baris program berikutnya bisa menggunakan nilai tersebut melalui nama ini.
Memilih nama yang jelas
candle_range menjelaskan bahwa nilainya adalah rentang sebuah candle. Nama seperti x kurang membantu saat membaca kode.
Buku ini menggunakan nama variabel berbahasa Inggris dengan huruf kecil dan garis bawah di antara kata. Nama tidak boleh diawali angka atau berisi spasi. candle_range dan Candle_range merupakan nama yang berbeda.
Mengapa menggunakan nama berbahasa Inggris tanpa aksen?
Kata kunci bahasa dan nama dalam pustaka Pyne juga berasal dari bahasa Inggris, seperti def, close, atau plot. Nama variabel berbahasa Inggris selaras dengannya dan memudahkan pembaca dari berbagai negara memahami kode sumber. Ini berguna ketika kamu membagikan program atau mengerjakannya bersama orang lain.
Pyne code mengizinkan huruf beraksen dan huruf selain alfabet Inggris dalam nama variabel. Jadi, penggunaan nama Inggris tanpa aksen merupakan anjuran penamaan. Nama tersebut lebih mudah diketik dengan papan ketik berbagai bahasa dan memudahkan berbagi kode secara internasional. Karena itu, buku ini menggunakannya secara konsisten.
Membuat indikator dalam panel terpisah
Buat file bernama candle_range.py dalam folder scripts, lalu tulis program berikut:
"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script
@script.indicator("Candle Range", overlay=False)
def main():
candle_range = high - low
plot(candle_range, "Range", color=color.orange, linewidth=2)Baris pertama main() menghitung nilai, lalu baris kedua memberikannya kepada plot melalui nama candle_range. Penugasan nilai harus dilakukan sebelum nilai tersebut digunakan.
overlay=False meminta panel terpisah. Dengan begitu, rentang memiliki skalanya sendiri: rentang 7 satuan dan harga sekitar 100, misalnya, memiliki besaran yang berbeda.
Simpan dan jalankan program pada data demo yang sama.

Membaca hasilnya
Titik yang lebih tinggi berarti selisih harga lebih besar. Titik yang lebih rendah menandai rentang yang lebih kecil. Perhitungan menggunakan harga tertinggi dan terendah seluruh candle, termasuk sumbunya.
Candle naik dan turun bisa memiliki rentang yang sama, sehingga nilai ini tidak menunjukkan arah pergerakan harga. high setidaknya sama dengan low, jadi hasilnya tidak negatif jika data candle benar.
Apa yang terjadi pada variabel di candle berikutnya?
Program mengulang dua langkah ini pada setiap candle yang diproses:
- Menghitung
candle_rangedarihighdanlowcandle tersebut. plotmenampilkan nilainya pada posisi candle tersebut.
Misalnya:
- Candle pertama:
high= 108,low= 101, sehinggacandle_range= 7. - Candle kedua:
high= 110,low= 106, sehinggacandle_range= 4. - Candle ketiga:
high= 109,low= 103, sehinggacandle_range= 6.
Grafik menghasilkan tiga titik dengan nilai 7, 4, dan 6. Pada setiap candle, variabel menerima hasil perhitungan saat itu.
Akses nilai candle sebelumnya dan penyimpanan status akan dibahas nanti.
Penjumlahan, perkalian, dan pembagian
Kode menggunakan tanda berikut untuk perhitungan sederhana:
+: penjumlahan;-: pengurangan;*: perkalian;/: pembagian.
Perkalian dan pembagian dilakukan sebelum penjumlahan dan pengurangan. Tanda kurung bisa menentukan bagian yang dihitung lebih dahulu.
Titik tengah rentang harga:
midpoint = (high + low) / 2Kedua harga dijumlahkan lebih dahulu, lalu hasilnya dibagi dua. Jika high = 108 dan low = 101, titik tengahnya adalah 104,5.
Perhatikan tanda desimalnya: kode menggunakan 104.5, sedangkan penulisan bahasa Indonesia menggunakan 104,5. Koma memiliki fungsi lain dalam kode, misalnya memisahkan parameter fungsi.
Menggambar titik tengah harga
Buat file bernama candle_midpoint.py:
"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script
@script.indicator("Candle Midpoint", overlay=True)
def main():
midpoint = (high + low) / 2
plot(midpoint, "Midpoint", color=color.purple, linewidth=2)Di sini kita kembali menggunakan overlay=True. Kita ingin melihat titik tengah harga pada skala harga yang sama dengan candle.

Setelah menjalankannya, pilih sebuah candle dan lihat titik garis pada posisi candle tersebut. Titik ini berada di tengah seluruh rentang candle, termasuk sumbunya. Letaknya bisa berbeda dari tengah badan candle yang ditentukan oleh harga pembukaan dan penutupan.
Mengapa tanda kurung penting?
Dua ekspresi berikut menjelaskan perhitungan yang berbeda:
(high + low) / 2
high + low / 2Baris kedua hanya membagi low dengan dua terlebih dahulu, lalu menambahkannya ke high. Dengan nilai 108 dan 101 tadi, hasilnya 158,5. Ini bukan titik tengah kedua harga.
Kedua ekspresi memiliki sintaks yang sah, tetapi memberikan hasil berbeda. Contoh yang bisa dihitung dengan tangan memudahkanmu memeriksa apakah kode sesuai maksudmu.
Coba sendiri
Gambarkan perubahan berarah pada badan candle: kurangi harga penutupan dengan harga pembukaan.
- Beri file nama
candle_change.py. - Beri indikator judul
"Candle Change"dan tampilkan dalam panel terpisah. - Beri hasil perhitungan nama
candle_change. - Beri gambar nama
"Change".
Sebelum menjalankannya, hitung hasil yang diharapkan dalam tiga kasus:
open= 100,close= 104;open= 100,close= 97;open= 100,close= 100.
Solusi latihan
Ketiga hasilnya adalah 4, −3, dan 0. Nilai positif berarti harga penutupan lebih tinggi, nilai negatif berarti lebih rendah, dan nol berarti harga pembukaan dan penutupan sama.
"""
@pyne edge
"""
from pynecore.lib import close, color, open, plot, script
@script.indicator("Candle Change", overlay=False)
def main():
candle_change = close - open
plot(candle_change, "Change", color=color.blue, linewidth=2)Membandingkan ketiga program
Buka program rentang, titik tengah, dan perubahan secara bergantian. Masing-masing menghitung satu variabel dari data OHLC, lalu menggambarnya pada baris berikutnya. Data diproses per candle. Perbedaannya terletak pada perhitungan dan pengaturan overlay.
Dalam bab berikutnya, kita membandingkan nilai dua candle dan mempelajari cara mengakses data candle sebelumnya.