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.

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 - low

high - 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.

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.

Di samping kode candle_range.py, panel Range terpisah terlihat di bawah candle.
Garis Range menunjukkan selisih high dan low dalam panel terpisah. Nilai yang lebih besar berarti rentang harga dalam candle lebih besar.

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:

  1. Menghitung candle_range dari high dan low candle tersebut.
  2. plot menampilkan nilainya pada posisi candle tersebut.

Misalnya:

  • Candle pertama: high = 108, low = 101, sehingga candle_range = 7.
  • Candle kedua: high = 110, low = 106, sehingga candle_range = 4.
  • Candle ketiga: high = 109, low = 103, sehingga candle_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) / 2

Kedua 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.

Di samping candle_midpoint.py, grafik menampilkan garis Midpoint yang menghubungkan titik tengah harga candle.
Garis Midpoint menandai titik tengah antara high dan low pada setiap 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 / 2

Baris 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.

  1. Beri file nama candle_change.py.
  2. Beri indikator judul "Candle Change" dan tampilkan dalam panel terpisah.
  3. Beri hasil perhitungan nama candle_change.
  4. 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.