Beállítások a kód átírása nélkül
Saját bemenetet adsz az indikátorhoz, és a PyneIDE Inputs felületén módosítod.
Az átlag hosszának kipróbálásához eddig a forráskódban írtad át a számot. Most ezt a számot az indikátor beállításává teszed. Ugyanazt a programot más-más hosszal tudod futtatni.
Mi az input?
Az input a program egy névvel ellátott, kívülről módosítható bemenete. A forráskód meghatározza a bemenet típusát, alapértékét és megengedett tartományát. A felhasználó ezek között választ értéket.
A mostani bemenet neve length, alapértéke 20. A length változó a mozgóátlag hossza lesz. A kódhoz a pynecore.lib modulból az input névtér is kell.
length: int = input.int(20, title="Average length", minval=1, maxval=200)Ez a sor a main() paraméterei közé kerül. Az int egész számot jelent: itt például 1, 20 vagy 200 használható, 2,5 nem. Az input.int egy egész számú bemenetet ír le.
A 20 az alapérték, az Average length a felületen megjelenő cím. A minval és maxval a legkisebb és legnagyobb megengedett érték. A nullás hossz nem értelmes átlagablak, ezért kizárjuk.
A teljes program
Hozd létre az adjustable_average.py fájlt:
"""
@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)A main nyitó zárójele után több sorba írtuk a paraméterlistát. A ): zárja le ezt a listát, és indítja el a függvény törzsét. Az alatta álló számítás és rajzolás négy szóközzel beljebb kezdődik.
Az input sorának végén álló vessző megengedi, hogy további paramétereket is hozzáadj. Egyetlen paraméternél is használható. A kétféle behúzott rész szerepe eltér: a zárójeleken belül a bemeneteket adjuk meg, utánuk a futtatott utasítások következnek.
Futtasd a programot a demóadaton. Első futtatáskor húsz gyertyából készül a kék átlag.
Nyisd meg az Inputs felületet
- Legyen aktív az
adjustable_average.pyfájl. - A szerkesztő jobb felső sarkában, a fájl füle melletti eszköztáron kattints a fogaskerék ikonra. Ha fölé viszed az egérmutatót, az Edit Inputs… felirat jelenik meg.
- A megjelenő felületen keresd meg az Average length mezőt.
- Írd át az értékét 5-re, majd kattints a Save gombra.
Ugyanezt a felületet a bal oldali Pyne nézet Scripts csoportjából is megnyithatod: kattints jobb gombbal az adjustable_average.py fájlra, majd válaszd az Edit Inputs… menüpontot. A megnyitott kódban jobb gombbal elérhető menüben is megtalálod.

A Save gombra kattintva a PyneIDE automatikusan újraszámolja a megnyitott grafikont a mentett beállítással. Várd meg a frissítést: a kék vonal ekkor már öt gyertyából számított átlagot mutat.
A forrásban továbbra is 20 áll alapértékként. Az Inputs felületen mentett 5 felülírja ezt az adott projektben.
Most állítsd 50-re, és mentsd újra. Ugyanazon időszakon hasonlítsd össze, hogyan reagál a vonal az ár változására. Ha csak az időszakot mozgatod a grafikonon, az nem változtatja meg a program inputját.
Hol marad meg a beállítás?
A program mellett egy azonos nevű .toml fájl tárolja a mentett beállításokat. Ennél a példánál ez az adjustable_average.toml.
A TOML egy szöveges beállítási formátum. Ezt a fájlt a PyneIDE kezeli, ezért a gyakorlathoz elég az Inputs felületet használnod. Ha megnyitod a fájlt, a hosszhoz tartozó rész ilyen alakú:
[inputs.length]
value = 5A szögletes zárójel itt egy beállításcsoportot jelöl. Ez nem az előzményeket bemutató fejezetben tanult gyertyaelőzmény: más fájlban, más nyelv szabályai szerint szerepel.
A paraméter kódbeli neve és a felületi címe sem ugyanaz. A fájlban length, a felületen Average length szerepel. A program működésében a kódbeli név számít.
Ha egy inputot átnevezel a forrásban, a régi névhez mentett érték nem az új input beállítása. Ilyenkor nyisd meg újra az Inputs felületet, és ellenőrizd az értéket. Egy program másolásakor a mellette levő .toml fájlt csak akkor másold át, ha a mentett beállításokat is meg akarod tartani.
Alapérték és tényleges érték
Ha átírod a kódbeli alapértéket 20-ról 30-ra, de már mentettél egy ötös értéket, a futtatás ötöt használhat. A mentett felülírás elsőbbséget élvez.
Egy eredmény leírásakor ezért a tényleges inputot jegyezd fel. A forrásban látható alapérték önmagában nem írja le a futás összes beállítását.
Próbáld ki önállóan
Adj egy második hosszparamétert az indikátorhoz. A rövid átlag alapértéke legyen 5, a hosszúé 20. Mindkettő legalább 1, legfeljebb 200 lehet. Rajzold ki őket külön címmel.
A feladat megoldása
A main() paraméterlistája:
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),A törzs:
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)A két input külön módosítható. A megadott határok még nem kötik ki, hogy a gyors hossz kisebb legyen a lassúnál. Ezt a kapcsolatot külön kell ellenőrizni; a záróprojektben foglalkozunk vele.
Ellenőrizd a mentést
Állítsd a hosszt egyre. Az egygyertyás SMA az adott gyertya záróára, ezért a vonalnak a záróárakon kell haladnia. Ezután állítsd vissza húszra. A fájl újranyitásakor ellenőrizd, hogy a felület a mentett húszas értéket mutatja-e.