Kondisi dan penanda
Memilih warna melalui perbandingan dan menandai hanya candle yang memenuhi kondisi.
Sekarang kamu membuat program yang membedakan candle naik dan turun. Program memeriksa hubungan harga pembukaan dan penutupan, lalu menunjukkan hasilnya melalui warna dan penanda.
Benar atau salah
Perbandingan close > open menghasilkan True jika harga penutupan lebih tinggi daripada harga pembukaan, dan False jika tidak. Ini adalah nilai logika bertipe bool.
Perbandingan tidak mengubah kedua harga. Operasi ini hanya menjawab sebuah pertanyaan.
| Tanda | Arti | Contoh |
|---|---|---|
> | Lebih besar | close > open |
< | Lebih kecil | close < open |
>= | Lebih besar atau sama | close >= open |
<= | Lebih kecil atau sama | close <= open |
== | Sama | close == open |
!= | Tidak sama | close != open |
= memberikan nilai kepada variabel, sedangkan == membandingkan dua nilai. Baris bullish = close > open menyimpan hasil pemeriksaan dalam variabel bullish.
Jika harga pembukaan dan penutupan sama, baik close > open maupun close < open tidak benar. Kasus ini juga ditangani agar keputusan mencakup semua kemungkinan.
if, elif, dan else
Kondisi setelah if menentukan apakah bagian yang menjorok akan dijalankan:
if bullish:
line_color = color.green
elif bearish:
line_color = color.red
else:
line_color = color.grayKondisi if diperiksa terlebih dahulu. Jika benar, warna hijau dipilih dan cabang lainnya dilewati. Jika salah, pemeriksaan berlanjut ke elif. else dijalankan jika tidak ada kondisi sebelumnya yang benar.
Setiap cabang diakhiri titik dua. Isi cabang ditandai indentasi empat spasi tambahan. Jadi, dalam main(), baris if diawali empat spasi dan penugasan di dalamnya delapan spasi.
Program lengkap
Buat file candle_conditions.py:
"""
@pyne edge
"""
from pynecore.lib import close, color, location, open, plot, plotshape, script, shape
@script.indicator("Candle Conditions", overlay=True)
def main():
bullish = close > open
bearish = close < open
if bullish:
line_color = color.green
elif bearish:
line_color = color.red
else:
line_color = color.gray
plot(close, "Close", color=line_color, linewidth=2)
plotshape(bullish, "Bullish candle", style=shape.triangleup,
location=location.belowbar, color=color.green)Jalankan pada data demo. Warna garis harga penutupan berubah pada setiap candle. Segitiga hijau muncul di bawah candle naik.

Argumen pertama plotshape menentukan kapan penanda muncul. style mengatur bentuknya dan location mengatur posisinya terhadap candle. Di sini candle yang ditandai hanya berarti harga penutupannya lebih tinggi daripada harga pembukaannya sendiri. Penanda tersebut bukan instruksi beli.
Kamu juga tidak perlu menghafal parameternya: arahkan mouse ke nama plotshape dalam kode dan baca bantuannya. Langkahnya tersedia dalam bab Bantuan saat menulis kode, termasuk cara menuju definisi.
Letak perhitungan berpengaruh
plot dan plotshape berjalan pada setiap candle. Kita mengubah nilai, warna, atau kondisi yang digambar. Dengan begitu, tampilan memiliki hasil untuk setiap candle.
Urutan yang sama juga tepat untuk moving average:
average = ta.sma(close, 20)
above_average = close > averageRata-rata dihitung pada setiap candle terlebih dahulu. Setelahnya, kondisi menggunakan hasil itu. Jangan meletakkan pemanggilan ta.sma di dalam cabang if bullish: karena fungsi hanya akan dijalankan pada candle naik.
Selama nilai awal SMA belum tersedia, kondisi close > average tidak menghasilkan sinyal benar. Jika kode perlu merespons nilai yang tidak tersedia secara khusus, gunakan pemeriksaan na(average). average == na bukan pemeriksaan nilai hilang yang tepat.
Menggabungkan beberapa kondisi
and bernilai benar jika kedua sisinya benar. or bernilai benar jika setidaknya salah satunya benar. not membalik nilai logika.
strong_bullish = close > open and close > close[1]Kondisi ini mensyaratkan dua hal sekaligus: candle harus naik, dan harga penutupannya harus lebih tinggi daripada penutupan sebelumnya. Candle naik masih bisa ditutup di bawah harga penutupan candle sebelumnya, sehingga kedua pemeriksaan merupakan kondisi yang berbeda.
and dan or menggunakan evaluasi hubung singkat: jika bagian pertama sudah menentukan hasil, bagian kedua tidak dievaluasi. Untuk and, ini terjadi jika bagian pertama salah; untuk or, jika bagian pertama benar. Karena itu, jalankan perhitungan yang menggunakan status pada baris tersendiri, lalu gabungkan nilai logika hasilnya.
Memilih nilai secara ringkas
Kamu juga bisa memilih di antara dua nilai dalam satu ekspresi:
line_color = color.green if bullish else color.redIni memilih hijau jika bullish benar, dan merah jika tidak. Harga pembukaan dan penutupan yang sama juga akan mendapat merah. Jika ingin menandai kasus tersebut dengan abu-abu, gunakan keputusan tiga cabang lengkap.
Coba sendiri
Gambar segitiga merah yang menunjuk ke bawah di atas candle turun. Pertahankan penanda hijau. Lalu perketat kondisi kedua penanda dengan perbandingan terhadap harga penutupan sebelumnya.
Solusi latihan
bullish_signal = bullish and close > close[1]
bearish_signal = bearish and close < close[1]
plotshape(bullish_signal, "Bullish signal", style=shape.triangleup,
location=location.belowbar, color=color.green)
plotshape(bearish_signal, "Bearish signal", style=shape.triangledown,
location=location.abovebar, color=color.red)Ganti pemanggilan plotshape hijau semula dengan dua pemanggilan baru. Pemilihan warna tetap hanya melihat harga pembukaan dan penutupan candle. Penanda kini juga membandingkan harga penutupan sebelumnya.
Mencari candle yang tidak ditandai
Cari candle naik yang tidak mendapat penanda hijau pada versi dengan kondisi lebih ketat. Periksa harga pembukaannya sendiri dan harga penutupan sebelumnya. Jelaskan bagian and mana yang tidak terpenuhi.