Warunki i oznaczenia
Porównaniami wybierzesz kolor i oznaczysz tylko świece spełniające warunek.
Teraz zbudujesz program odróżniający świece wzrostowe od spadkowych. Sprawdzi relację otwarcia i zamknięcia, a wynik pokaże kolorem i symbolem.
Prawda czy fałsz
close > open daje True, gdy zamknięcie jest większe od otwarcia, w przeciwnym razie False. To wartość logiczna typu bool.
Porównanie nie zmienia żadnej ceny. Odpowiada tylko na pytanie.
| Znak | Znaczenie | Przykład |
|---|---|---|
> | Większe | close > open |
< | Mniejsze | close < open |
>= | Większe lub równe | close >= open |
<= | Mniejsze lub równe | close <= open |
== | Równe | close == open |
!= | Różne | close != open |
= przypisuje, == porównuje. bullish = close > open umieszcza wynik porównania w bullish.
Przy identycznym otwarciu i zamknięciu ani close > open, ani close < open nie jest prawdą. Uwzględnimy też ten przypadek.
if, elif i else
Warunek po if rozstrzyga wykonanie wciętej części:
if bullish:
line_color = color.green
elif bearish:
line_color = color.red
else:
line_color = color.grayNajpierw sprawdzamy if. Gdy prawdziwy, wybieramy zielony, a pozostałe gałęzie pomijamy. W przeciwnym razie sprawdzamy elif. else działa, gdy żaden wcześniejszy warunek nie był prawdziwy.
Początek gałęzi kończy dwukropek, a wnętrze ma kolejne cztery spacje. W main() wiersz if ma więc cztery, a przypisanie wewnątrz osiem spacji.
Pełny program
Utwórz 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)Uruchom na demonstracji. Kolor linii zamknięcia zmienia się ze świecami. Pod wzrostowymi pojawiają się zielone trójkąty.

Pierwszy argument plotshape określa, kiedy pokazać symbol. style ustala kształt, location położenie wobec świecy. Oznaczenie mówi tylko, że świeca zamknęła się wyżej od własnego otwarcia. Nie jest instrukcją kupna.
Parametrów nie musisz pamiętać: najedź na plotshape w kodzie i przeczytaj pomoc. Kroki i przejście do definicji znajdziesz w Pomocy podczas pisania kodu.
Miejsce obliczenia ma znaczenie
plot i plotshape wykonują się na każdej świecy. Zmieniamy wartość, kolor lub warunek, dzięki czemu wyświetlanie ma wynik dla każdej świecy.
Taką kolejność stosuj też do średniej:
average = ta.sma(close, 20)
above_average = close > averageNajpierw liczymy średnią na każdej świecy, potem warunek jej używa. Nie wkładaj ta.sma do if bullish:, bo wykona się tylko na świecach wzrostowych.
Przy początkowej brakującej SMA close > average nie daje prawdziwego sygnału. Osobną reakcję na brak opisz przez na(average). average == na nie jest poprawnym sprawdzeniem.
Łączenie warunków
and jest prawdziwe, gdy obie strony są prawdziwe. or gdy co najmniej jedna. not odwraca wartość logiczną.
strong_bullish = close > open and close > close[1]Warunek wymaga jednocześnie świecy wzrostowej i zamknięcia powyżej poprzedniego zamknięcia. Świeca wzrostowa nadal może zamknąć się poniżej poprzedniej, stąd dwie osobne kontrole.
and i or stosują skróconą ewaluację: gdy pierwszy człon rozstrzyga wynik, drugi nie jest obliczany. Dla and dzieje się to, gdy pierwszy jest fałszywy, dla or, gdy prawdziwy. Obliczenia ze stanem uruchamiaj więc w osobnych wierszach i dopiero łącz ich wyniki logiczne.
Krótki wybór wartości
Wybór między dwiema wartościami można opisać jednym wyrażeniem:
line_color = color.green if bullish else color.redWybiera zielony przy prawdziwym bullish, inaczej czerwony. Dla identycznych otwarcia i zamknięcia także wybrałby czerwony. Jeśli ten przypadek ma być szary, zachowaj pełną decyzję z trzema gałęziami.
Spróbuj samodzielnie
Narysuj czerwony trójkąt skierowany w dół nad świecami spadkowymi. Zachowaj zielony. Następnie zaostrz oba warunki o porównanie z poprzednim zamknięciem.
Rozwiązanie zadania
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)Zastąp oryginalne zielone plotshape dwoma nowymi wywołaniami. Wybór koloru nadal sprawdza tylko otwarcie i zamknięcie świecy. Oznaczenia porównują też poprzednie zamknięcie.
Znajdź pominiętą świecę
Znajdź wzrostową świecę bez zielonego znaku w zaostrzonej wersji. Sprawdź jej otwarcie i poprzednie zamknięcie. Wyjaśnij, na którym członie and warunek przestał być spełniony.