Ustawienia bez zmieniania kodu
Dodasz własny parametr wejściowy i zmienisz go w interfejsie Inputs PyneIDE.
Dotąd testowanie długości średniej wymagało zmiany liczby w źródle. Teraz uczynisz z niej ustawienie wskaźnika, by uruchamiać ten sam program z różnymi długościami.
Czym jest input?
Input to nazwane wejście programu, które można zmieniać z zewnątrz. Kod określa jego typ, wartość domyślną i dopuszczalny zakres. Użytkownik wybiera wartość w tych granicach.
Obecne wejście to length, domyślnie 20. Zmienna length określa długość średniej. Potrzebujemy też przestrzeni input z pynecore.lib.
length: int = input.int(20, title="Average length", minval=1, maxval=200)Wiersz należy do parametrów main(). int oznacza liczbę całkowitą: można użyć na przykład 1, 20 lub 200, ale nie 2,5. input.int opisuje wejście całkowitoliczbowe.
20 to wartość domyślna, Average length tytuł w interfejsie. minval i maxval określają najmniejszą i największą dozwoloną wartość. Zerowa długość okna nie ma sensu, więc ją wykluczamy.
Pełny program
Utwórz adjustable_average.py:
"""
@pyne edge
"""
from pynecore.lib import close, color, input, plot, script, ta
@script.indicator("Adjustable Average", overlay=True)
def main(
length: int = input.int(20, title="Average length", minval=1, maxval=200),
):
average = ta.sma(close, length)
plot(average, "Average", color=color.blue, linewidth=2)Po nawiasie otwierającym main rozpisaliśmy parametry na kilka wierszy. ): kończy listę i zaczyna ciało. Obliczenia i rysowanie pod nim mają cztery spacje wcięcia.
Przecinek na końcu wejścia pozwala dopisywać następne parametry. Jest dozwolony również przy jednym. Dwie wcięte części mają inne role: w nawiasach podajemy wejścia, po nich wykonywane instrukcje.
Uruchom na demonstracji. Pierwszy przebieg narysuje niebieską średnią z dwudziestu świec.
Otwórz Inputs
- Uaktywnij
adjustable_average.py. - Kliknij koło zębate w prawym górnym rogu edytora, na pasku obok karty pliku. Po najechaniu pojawi się Edit Inputs….
- Znajdź pole Average length.
- Zmień na 5 i kliknij Save.
Ten sam interfejs otworzysz z grupy Scripts w lewym widoku Pyne: kliknij prawym przyciskiem adjustable_average.py i wybierz Edit Inputs…. Jest też w menu prawego przycisku otwartego kodu.

Po Save PyneIDE automatycznie przelicza otwarty wykres z zapisanym ustawieniem. Poczekaj na odświeżenie: niebieska linia pokaże już średnią pięcioświecową.
W źródle nadal domyślnie stoi 20. Zapisana w Inputs piątka zastępuje ją w tym projekcie.
Ustaw teraz 50 i zapisz ponownie. W tym samym okresie porównaj reakcję linii na cenę. Samo przesunięcie widocznego okresu wykresu nie zmienia wejścia programu.
Gdzie ustawienie jest zapisywane?
Obok programu plik o tej samej nazwie z rozszerzeniem .toml przechowuje ustawienia. Tutaj to adjustable_average.toml.
TOML to tekstowy format konfiguracji. Zarządza nim PyneIDE, więc w ćwiczeniu wystarczy Inputs. Po otwarciu pliku sekcja długości wygląda tak:
[inputs.length]
value = 5Nawiasy kwadratowe oznaczają tu grupę ustawień. Nie jest to historia świec z rozdziału o wcześniejszych wartościach: inny plik używa reguł innego języka.
Nazwa parametru w kodzie i tytuł interfejsu też są różne. Plik zawiera length, interfejs Average length. Dla programu liczy się nazwa kodowa.
Po zmianie nazwy wejścia w źródle wartość zapisana pod starą nazwą nie jest ustawieniem nowego wejścia. Otwórz wtedy Inputs i sprawdź wartość. Kopiując program, kopiuj jego .toml tylko wtedy, gdy chcesz zachować też ustawienia.
Wartość domyślna i rzeczywista
Jeśli zmienisz domyślną długość z 20 na 30, ale wcześniej zapisałeś pięć, program nadal może używać pięciu. Zapisane nadpisanie ma pierwszeństwo.
Opisując wynik, zapisuj więc faktyczne wejście. Sama wartość domyślna w źródle nie opisuje wszystkich ustawień przebiegu.
Spróbuj samodzielnie
Dodaj drugi parametr długości. Krótka średnia ma domyślnie pięć, długa dwadzieścia. Obie dopuszczają od 1 do 200. Narysuj je z różnymi tytułami.
Rozwiązanie zadania
Lista parametrów main():
fast_length: int = input.int(5, title="Fast length", minval=1, maxval=200),
slow_length: int = input.int(20, title="Slow length", minval=1, maxval=200),Ciało:
fast_average = ta.sma(close, fast_length)
slow_average = ta.sma(close, slow_length)
plot(fast_average, "Fast average", color=color.blue, linewidth=2)
plot(slow_average, "Slow average", color=color.orange, linewidth=2)Wejścia zmienia się niezależnie. Granice nie wymagają jeszcze, by szybka długość była mniejsza od wolnej. Ten związek wymaga osobnej kontroli; zajmiemy się nim w projekcie końcowym.
Sprawdź zapis
Ustaw długość jeden. Jednoświecowa SMA jest zamknięciem danej świecy, więc linia ma przechodzić przez zamknięcia. Potem wróć do dwudziestu. Po ponownym otwarciu pliku sprawdź zapisaną dwudziestkę w interfejsie.