A záróár vonala minden gyertya ármozgását követi. Ha több egymást követő záróárból átlagot számítasz, kevésbé szaggatott vonalat kapsz. Ebben a fejezetben tíz gyertya alapján készítesz két mozgóátlagot.

Az átlag számítása

Három érték egyszerű átlaga az összegük osztva hárommal. Ha az értékek 100, 103 és 101, az átlag:

(100 + 103 + 101) / 3 = 101.333...

A mozgóátlag ablakának mérete állandó, de az ablak a gyertyákkal együtt lép tovább. Egy háromgyertyás ablakba a következő gyertyán bekerül az új záróár, a legrégebbi pedig kiesik.

Ha az új záróár 105, a következő átlag már (103 + 101 + 105) / 3, vagyis 103. Az első 100-as záróár ebben az ablakban már nincs benne.

Egy tízgyertyás egyszerű mozgóátlaghoz a mostani és az előző kilenc záróár kell. Nem a mostani és még tíz korábbi gyertyát használjuk: a tíz az összes figyelembe vett érték száma.

A ta függvényei

A ta névtér kész számításokat tartalmaz. A ta.sma(close, 10) tíz záróár egyszerű mozgóátlagát adja. Az SMA a „simple moving average” rövidítése.

A hívás két argumentuma:

  • close: az a forrás, amelyből átlagot számítunk;
  • 10: az ablak mérete gyertyákban.

Az első kilenc gyertyán még nem áll rendelkezésre tíz záróár. Az SMA ott na, a tizedik gyertyán jelenik meg az első érvényes értéke. Ezt a kezdeti szakaszt bemelegedésnek is nevezik.

Az ablak mérete nem időtartam másodpercben. Tíz napi gyertya és tíz egyórás gyertya eltérő időszakot fed le.

SMA és EMA egymás mellett

Az EMA, azaz exponenciális mozgóátlag a frissebb értékeknek nagyobb súlyt ad. A ta.ema(close, 10) szintén tízgyertyás hosszparamétert használ, de más képlettel számol.

Az EMA az első teljes ablak egyszerű átlagából indul. Tízes hossznál tehát mindkét vonal a tizedik gyertyán jelenik meg. Ezután az EMA az előző értékéhez hozzáadja az új ár és az előző EMA különbségének egy részét. A rész aránya 2 / (10 + 1).

Hozd létre a moving_averages.py fájlt:

"""
@pyne edge
"""
from pynecore.lib import close, color, plot, script, ta


@script.indicator("Two Moving Averages", overlay=True)
def main():
    simple_average = ta.sma(close, 10)
    exponential_average = ta.ema(close, 10)
    plot(simple_average, "SMA 10", color=color.blue, linewidth=2)
    plot(exponential_average, "EMA 10", color=color.orange, linewidth=2)

Futtasd a demóadaton. A kék SMA és a narancssárga EMA az árgyertyák mellett jelenik meg. Az árfolyamgrafikont mozgatva figyeld meg azokat a szakaszokat, ahol az ár hirtelen irányt vált. A két átlag nem feltétlenül azonos ütemben reagál.

A PyneIDE-ben a moving_averages.py futása után kék SMA- és narancssárga EMA-vonal látható a gyertyákon.
Ugyanazon záróárakból tízes hosszúságú SMA és EMA készül.

Az átlag egy múltbeli értékekből számított vonal. A simább alakból önmagában nem következik, hogy az ár merre mozdul majd.

Miért minden gyertyán számolunk?

A ta.sma és a ta.ema az egymást követő végrehajtások között számítási állapotot is használ. A példában mindkét hívás minden gyertyán lefut.

Később olyan kódot is írunk, amely csak bizonyos esetekben végez el egy műveletet: például akkor rajzol jelölést, ha a záróár az átlag fölött van. Ezt a Feltételek és jelölések fejezetben tanulod meg.

Az átlagot ilyenkor is minden gyertyán számítsd ki, és csak utána döntsd el, mire használod. Ha például csak az emelkedő gyertyákon hívod meg a ta.sma függvényt, a számítása kimarad a többi gyertyán, így az eredmény eltérhet a teljes gyertyasoron számított átlagtól. Most azt tartsd szem előtt, hogy a két átlagszámítás minden gyertyán lefusson.

Ehhez a két vonalhoz nincs szükség Series jelölésre a saját változókon: a mostani értékeket rajzoljuk ki, és nem használunk simple_average[1] kifejezést. Ha később közvetlenül a saját változó előzményét indexelnéd, akkor add meg a Series[float] jelölést.

Hosszabb és rövidebb ablak

A hossz növelésével több korábbi ár befolyásolja az átlagot. A vonal általában simább lesz, és később követi az ár változását. Rövidebb hossznál a friss ármozgások erősebben látszanak.

Próbáld ki ezt ugyanazon az adaton:

  1. Futtasd a két tízes átlagot, és figyelj meg egy jól felismerhető árfordulót.
  2. Mindkét hívásban írd át a hosszt 30-ra.
  3. A vonalak címét is módosítsd SMA 30 és EMA 30 értékre.
  4. Futtasd újra, és keresd meg ugyanazt az időpontot.

Azért módosítjuk a címet is, mert a "SMA 10" csak felirat. A benne szereplő szám nem módosítja a számítást. A hívás második argumentuma szabályozza az ablakot.

Próbáld ki önállóan

Készíts két egyszerű mozgóátlagot: az egyik öt, a másik húsz gyertyából számoljon. A rövid legyen kék, a hosszú narancssárga. Mindkettőhöz írj megfelelő címet.

A feladat megoldása

A main() törzsében cseréld a két számítást és a rajzolást erre:

fast_average = ta.sma(close, 5)
slow_average = ta.sma(close, 20)
plot(fast_average, "SMA 5", color=color.blue, linewidth=2)
plot(slow_average, "SMA 20", color=color.orange, linewidth=2)

Az ötnél az első négy, a húsznál az első tizenkilenc gyertya értéke hiányzik. A bemelegedés után mindkét vonal ugyanazon záróársort használja, eltérő ablakmérettel.

Ellenőrizd az ablakot

Egy háromgyertyás SMA-t kézzel is ellenőrizhetsz. Állítsd a hosszt háromra, válassz három egymást követő záróárat, majd számítsd ki az átlagukat. A harmadik gyertyán a grafikon ugyanazt az értéket mutatja. Az első két gyertyán nincs teljes ablak.