Ebben a posztban igyekszem ismét segíteni egy hasznos kis szkripttel.

Bizonyára sok kezdő kereskedő számára gondot okoz az, hogy kiszámolja: az éppen nyitott pozíciói egy bizonyos jövőbeli árfolyamértéken mekkora profitot/veszteséget jelentenek majd. Ennek kiszámításához nyújt segítséget a ProfitCalculator nevű szkriptem.

Eredetileg a szkript csak az éppen nyitott pozíciók jövőbeli nyereségét/veszteségét írta ki, de úgy gondoltam ez így nem elég, így nekiültem és sikerült jó pár funkcióval kiegészítenem a szkriptet. Fontos ugyanis az, hogy a kalkulátort így olyanok is tudják használni akik egyszerre csak egy irányba kereskednek, és olyanok is akiknek mindkét típusú pozíciójuk van egy időben.

Telepítés

A zip fájl tartalmát a választott terminál Rendszermappa\MQL4\Scripts\ könyvtárába másoljátok be. (A Rendszermappáról és annak szerepéről korábbi bejegyzésemben olvashatsz bővebben.) Ha a terminált fut, szükséges azt újraindítani! Az újraindítás után a Navigátorban a Scriptek résznél találjátok majd a szkriptet ProfitCalculator néven.

Használat

A szkriptet először – mint minden expertet és szkriptet – demó környezetben próbáljátok ki. Válasszatok ki egy tetszőleges chartot, majd az instrumentumon nyissatok egy buy vagy sell pozíciót!

A Navigátorból a Scriptek résznél kattintsatok duplán a ProfitCalculator sorra! Ezt követően a chart bal alsó sarkában megjelenik pár sornyi szöveg sárga színnel, valamint egy sárga szaggatott vonal az éppen aktuális árfolyamnál. A vonal kijelölésével (alapbeállítás szerint dupla klikk) és arrébb húzásával tudjátok megadni a kívánt jövőbeli árfolyamot, amely alapján a szkript ki fogja tudni számolni, hogy az adott árfolyamon milyen floating értéket látnátok az instrumentum nyitott pozícióinak nyereség/veszteség értékei alapján.

Értelemszerűen ha nincs egyetlen nyitott pozíciótok sem, a szkript okafogyottá válik és minden kiírt értéke nulla lesz. Amennyiben azonban van nyitott pozíciótok, körülbelül a következőt kell látnotok:

ProfitCalculator szkript működés közben

ProfitCalculator szkript működés közben

Nézzük, mit is jelentenek a kiírt szövegcímkék!

Összes / BUY / SELL lot:

Az instrumentum összes (lot + sell) nyitott lotjainak összértéke / instrumentum nyitott buy pozícióinak összértéke / instrumentum nyitott sell pozícióinak összértéke

SELL P/L:

Az instrumentum nyitott sell pozíciói profitjainak / veszteségeinek összege.

BUY P/L:

Az instrumentum nyitott buy pozíciói profitjainak / veszteségeinek összege.

Távolság:

Távolság pipben az aktuális árfolyamtól. Pozitív érték ha az aktuális árfolyam felett és negatív ha az aktuális árfolyam alatt van a sárga vonal.

P/L pipenként:

Megmutatja, hogy egy pip elmozdulás a számla bázisdevizája szerint mekkora nyereséget/veszteséget jelent az aktuális pozíciók nagyságára vetítve. A példában egy pont elmozdulás 6 USD nyereséget vagy veszteséget jelent. Következésképp a floatingunk – természetesen csak az adott instrumentum nyitott pozícióira származtatva – csak 6 többszöröse lehet, dollárban.

Amennyiben értéke nulla, egyenlő mennyiségű sell és buy lotunk van nyitva – vagyis az általuk képviselt floating érték csak a swapok kapcsán változhat hosszabb távon.

P/L GBPUSD:

Az aktuális instrumentum összes nyitott pozíciójának floatingja a sárga szaggatott vonal által meghatározott árfolyamérték alapján. A példában az aktuális árfolyamtól felfelé 42 pipre 174 USD hasznunk lesz, mivel 0.5 buy pozíciónk van nyitva 0.1 sell ellenében.

A szkript nem csak keresztárfolyamokra, hanem CFD és FUTURES instrumentumokra is működik, mivel mindig az adott instrumentum paraméterei alapján számol. A program a spreadet is figyelembe veszi.

A szkript a távolságot mindig a chart lehető legkisebb ábrázolt egységében (azaz pontban)  méri, és a számításokat is ezen adat alapján végzi el. Így ne lepődjetek meg, ha bizonyos instrumentumok esetében – ahol egy tick árváltozás nem  egyezik meg a chart skálájának legkisebb egységével – olyan profit/loss értékeket is kaptok, amelyek egyébként biztosan nem jelennek meg soha floatingként.

Például az arany (a legtöbb brókernél GOLD) esetében az árfolyam mindig x.10 -re, x.20-ra, stb.  végződik, azaz nincsen x.11, x.12, stb. árfolyamérték – annak ellenére, hogy a terminálban jelölhetőek. Nyilván a vonal húzogatásakor figyelni kell arra, hogy csak a legkisebb árfolyamelmozdulással (0.1) osztható árfolyamértéken helyezzük el a vonalat.

Ismétlem, ez csak azon instrumentumoknál lényeges, ahol egy árváltozás minimális értéke nem egy, hanem több pip. A számolás minden esetben helyes, de az adott értékek előfordulása már csak a megfelelő oszthatóság esetén lesz lehetséges. Példa: 0.1 lot méretű GOLD esetében egy 1 pip árfolyamelmozdulás 10 cent árváltozást jelentene, azonban mivel a legkisebb valós árfolyamelmozdulás legkevesebb 10 pip, a floatingunk mindig csak minimum 1 dollárral csökkenhet vagy növekedhet. A szkript ennek ellenére kiírhat például 1.10, 1.20, 1.30, stb. értékeket a fent taglalt jelenség miatt.

A keresztárfolyamok esetében a fenti jelenség tárgytalan, hiszen ott általában a legkisebb árelmozdulás egy pip. (EURUSD esetében 0.0001 pont – azaz 1 pip –  a legkisebb árfolyamelmozdulás, és minden árfolyam maradék nélkül osztható ezzel a számmal)

Ráadásul a legkisebb elmozdulási egység nem mindig egyezik meg 1 pipnyi elmozdulással – erre a legegyszerűbb példa az, amikor brókerünk a szokásos 4 tizedesjegy helyett 5 tizedesjegy pontosságot szolgáltat. Az EURUSD esetében itt 0.00001 elmozdulás 1 „igazi” pipnek csupán a tized része.

Leírva bonyolultabban hangzik, próbálgassátok a szkriptet és megértitek miről van szó.

Paraméterek

A szkript a következő lehetséges beállításokat rejti magában (a C0, C01, stb. paraméterek csak magyarázatként funkcionálnak) :

MagicNumber

A megadott magic számú pozíciókat veszi csak alapul. Amennyiben a paraméter értéke 0, akkor minden pozícióval számolunk

Frissítve: a 0.5-ös új verzióban a MagicNumber paraméter működése egy kicsit megváltozott. Ha -1 (alapértelmezés), akkor az összes pozíciót alapul veszi az adott instrumentumon belül; ha 0 akkor pedig csak azokat, amelyeknek nincsen magic száma. Így egy robot futtatása mellett nyitott kézi menedzselő pozícióinkat is külön vizsgálhatjuk.

OverrideCalcMode

Ritkán előfordulhat, hogy bizonyos instrumentumokra helyezve a szkript nem számol pontosan. Ezeknél az instrumentumoknál érdemes kipróbálni, hogy megjavul-e a számítás, ha ezen paraméter értéke true.

Az esetek 99%-ban ehhez a paraméterhez nem kell nyúlni, értéke mindig lehet false.

LabelFontColor

Frissítve: A szövegcímkék színe, hogy ne csak fekete alapszínű chartokon lehessen használni a szkriptet.

Frissítve: A letölthető fájlban van egy alapból kék színnel ellátott változat is, a fehér háttérrel kereskedők számára (hogy ne kelljen mindig állítgatni)

Letöltés

Visszajelzés

Természetesen várom visszajelzéseiteket és kommentjeiteket a szkripttel, illetve a paraméterek magyarázatával kapcsolatban! Túl sokat nem teszteltem a CFD és FUTURES instrumentumok kapcsán, így ha azok esetében esetleg hibás számítást tapasztaltok, mindenképpen írjátok meg!

Akinek pedig tetszik a cucc, az nyomjon Like-ot és kommenteljen! Nem nagy kérés egy jó kis szkriptért cserébe:)

Frissítés

2012. 02. 28 – javítva egy spread okozta eltérés sell pozíciók számítása esetén

2010. 12. 06 – javítva egy hiba; függő megbízásokat többé nem számolja bele a lotokba a szkript

2011. 07. 20 – a szkript pontosabban számol CFD és FUTURES instrumentumokon, illetve a P/L pipenként számítása is javítva lett