Hogy gondolkodik egy forex robot?

Egy forex robot elkészítése akkor a legkönnyebb, ha a megrendelő tisztában van a stratégiája minden részletével.

Egy félig kidolgozott stratégiát is le lehet programozni, de ekkor a készítőnek saját ötleteivel kell kiegészítenie azt.

Nemrégiben kaptam felkérést, egy olyan stratégia robotosítására, melynek alapját 4 különálló indikátor adta, és a működési elve a következő volt:

Nyitó jel:
– Ha Indikátor-A és Indikátor-B is felfelé mutat, Buy pozíciót kell nyitni
– Ha Indikátor-A és Indikátor-B is lefelé mutat, Sell Pozíciót kell nyitni.

Záró jel:
– Ha Indikátor-C és Indikátor-D lefelé mutat, Buy pozíciót kell zárni.
– Ha indikátor-C és Indikátor-D felfelé mutat, Sell pozíciót kell zárni.

Egyéb megkötés:
– Engedélyezett, hogy egyszerre legyen nyitva Sell és Buy pozíció.

A mivel 4 egymástól független indikátorról van szó, így a rendszer gyenge pontja az az eset, amikor A és B indikátor felfelé, míg C és D indikátor lefelé mutat. Tehát egyszerre van parancsunk arra, hogy Buy pozíciót nyissunk, és hogy Buy pozíciót zárjunk.

Két lehetséges eset van:
– Még nem volt nyitott Buy pozíciónk. Ekkor a kérdés az, most nyissunk pozíciót vagy se?
– Már volt nyitott Buy pozíciónk, így a kérdés: Most akkor bezárjuk vagy se?

Ezt a dilemmát az emberi kereskedő még átvészeli valahogy, és megpróbál „ráérezni”, hogy merre is fog a piac mozdulni. Azonban a robot ettől teljesen megzavarodik, a program felépítéséből következően, meg fog nyitni egy pozíciót, majd rögtön le is zárja azt. Ezt a folyamatot a nyitó és a záró jel együttes fennállásáig akár több-ezerszer is megismételheti. A spread miatt valamennyi pozíciót veszteséggel fog zárni, ezzel elég nagy esélyt adva arra, hogy kinullázza a számlánkat.

A forex robot minden egyes Tick érkezésekor lefut, megvizsgálja az indikátorok pillanatnyi értékeit, és ez alapján dönt a teendőkről:

Érkezett egy új Tick.
– A indikátor iránya? – Felfelé.
– B indikátor iránya? – Felfelé.
– A és B indikátor is lefelé mutat: – Nem.
– A és B indikátor is felfelé mutat: – Igen. -> Akkor BUY pozíciót nyitok!
– C indikátor iránya? – Lefelé.
– D indikátor iránya? – Lefelé.
– C és D indikátor is lefelé mutat: – Igen. -> Akkor BUY pozíciót zárom!
Minden sor lefutott, várakozás egy újabb Tick -re…

Ezzel a módszerrel, egy konzekvens és ellentmondásoktól mentes stratégia alakítható ki.

Lehet, hogy ez azt az érzetet kelti, hogy stratégiánk túlságosan rugalmatlan lesz, de élő kereskedés alkalmával mindig adott a lehetőség, hogy a robotot lekapcsoljuk és manuálisan fejezzük be a tradet.

Ha pedig a backtesztelésnél vagy az optimalizálásánál ez a „rugalmatlan” stratégia jó eredményeket mutatott, valószínűleg sokkal könnyebben fogjuk betartani a szabályokat.

 

2 Comments

  1. Kocsis Balázs
    2014-05-23

    Ennél azért egyszerűbb inkább úgy megírni a kódot, hogy előbb a zárást vizsgálja és zárjon, ha kell, majd csak utána a nyitást. 🙂

    • David
      2014-05-23

      Valóban minden robotban alap feltétel, hogy először a nyitó rész fusson le.

      Jelen esetben azonban sajnos ez nem jelentett megoldást a problémára, ugyanis a nyitó és záró jel együttes fennállása esetén a következő történik:

      Első Tick érkezésekor:
      – Záró rész elindul (nem zár semmit, mert nincs nyitott pozi)
      – Nyitó rész elindul (nyit mert van belépő jel)

      Második Tick érkezésekor:
      – Záró rész elindul (és zár mert van záró jel, és nyitott pozi is)
      – Nyitó rész elindul (nyit mert van belépő jel és nincs nyitott pozi)

      Harmadik Tick érkezésekor:
      – Záró rész elindul (és zár mert van záró jel, és nyitott pozi is)
      – Nyitó rész elindul (nyit mert van belépő jel és nincs nyitott pozi)

      És így tovább, a robot nyit/zár , nyit/zár, nyit/zár
      Vagy, helyesebben megfogalmazva: zár/nyit, zár/nyit, zár/nyit

      Ezt a problémát csak a stratégia átdolgozásával lehet feloldani, pl. azt mondjuk, hogy ha egyszerre áll fen mindkét jel, akkor csak zárunk, de nem nyitunk. Vagy azt is mondhatjuk, hogy akkor nem is zárunk és nem is nyitunk. Azonban ilyen megoldáshoz, ismerni kell a használt indikátorok működési elvét, a gyorsaságát, a beállításokat stb,.. tehát sokkal szerencsésebb ha ilyen kérdésekben nem a programozó hanem a leendő felhasználó dönt.

Drop a comment

Your email address will not be published. Required fields are marked *