Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Köt ahol nem szabadna
-
SzerzőBejegyzés
-
Szia!
Fölmerült egy kérdés, akkor is shortol a program ha az árfolyam az MA50 fölött van, pedig megadtam hogy short csak alatta, long csak fölötte. Lehet ennek valami banális oka vagy hiba van a programban?
Temérdek hibalehetőség van, a program csak akkor köt shortot, ha te azt mondtad neki. Ha ezt egy vagy több feltételhez kötötted, akkor azok vélhetően hibásan teljesülnek, vagy a kontrollhoz használt indikátor beállításai nem egyeznek meg 100%-ig a robotban használt indikátor paraméterezésével.
Szia!
Maga a program elég egyszerű -nek tűnik:)-, ha az aktuális vétel ár a felső Bollinger szalag fölött van ÉS az MA50 alatt, akkor shortol, és fordítva. Többnyire működik, de néha nem. És az MA50 vonala elég messze van az aktuális vételtől a hibás kötéseknél is, ezért nem értem a dolgot, de figyelem. Csak az a baj hogy ritkán köt élőben, azok is sokszor jók, szóval nehezen jutok előre. Kösz a segítséget, később még lehet jelentkezem.
Tesztelj backteszttel! Minden lehetőséget valós időben kivárni és tesztelni lehetetlenség.
A hiba banálisabb mint gondoltam volna: Rossz néven mentettem el egy korábbi, hibásan működő verziót:) Ez a probléma megoldódott, több verzió backtesztjét összevetve kiderült az átverés. Azt nem tudom még, mit lehetne csinálni: Ha optimalizálok egy időszakra és egy utána következőre tesztelek, elég gyenge eredmények jönnek ki. Ha egy évre optimalizálok, nagyon nyereséges, utána következő hónapokban veszteséges. Ha kisebb időszakokra bontom javul egy kicsit, de nagy különbségek vannak. Olvastam erről egy cikket itt: http://articles.mql4.com/622 Szerinted érdemes lehet vele foglalkozni, vagy inkább más stratégiát kéne keresni?
A legtöbb stratégiánál hasonlót fogsz tapasztalni. Sőt: a valós idejű futtatás során sokszor elég különböző eredmények jönnek ki, szemben állva a backtesztben (vagy optimalizációban) tapasztaltakkal. Én anno, mikor saját stratégiát optimalizáltam, kitűztem a következő célokat:
- minél hosszabb legyen a tesztelési periódus
- nem próbálok önmagukban pár hónapokat tesztelni, mert abból nem sül ki semmi jó
- nem próbálok egy-egy időszakra ráilleszteni egy-egy beállítást
El kell fogadni, hogy a legjobb stratégiában is lesznek rossz belépők, amiket le kell kezelni. Hogy stoploss, vagy egyéb megoldás segítségével az már egy következő kérdés. Lehívás és kitettség nélkül, folyamatosan, több éven és több piaci helyzetben folyamatosan helytálló, emelkedő egyenleggrafikonú stratégiát még nem láttam. Ez persze nem azt jelenti, hogy nincs ilyen, de érdemes más irányba is elkezdeni gondolkodni.
Minden stratégiában elő fog fordulni rossz szituáció, a kérdés csak az hogy van-e legalább ezzel ellentétes, úgymond „üzemszerű” szakasz amikor viszont folyamatosan pénzt csinál. Én ezt a tulajdonságot a matematikai alapú rendszerekben találtam meg, ahol a belépésnek kisebb súlya van, a fontos inkább a tőke határvonalainak pontos ismerete. Ha érdekel ez a téma bővebben, akkor keress meg privátban.
Sziasztok
Én is tapasztaltam hasonló „köt ahol nem kéne” dolgot. Milliószor átnéztem a programot, teszt hegyek, de ott mindig jó. Élesben viszont csinált hülyeséget 7 hónap alatt egyszer. Két dolog merült fel megoldásként.
1. Van egy indikátor, ami elég nagy intervallumú (száznál nagyobb) és a VPS-en élőben, hogy kevesebb RAM-ot egyen a program lecsökkentettem a max oszlopok a múltban és max oszlopok a chartban értékeket 1000 alá. (a célt elértem, mert a RAM több százalékponttal csökkent :) viszont amikor elindítom a programot és a robot fut, indikátorok rajta, azt látom, hogy ez az ominózus indikátor mutat egy értéket. Eddig ok. DE nem ott van, ahol az itthoni gépen. NAGYon nem. És ahogy a VPS-en görgetek visszafelé a csharton, úgy ugrik egyre inkább a helyére az indikátor. Mire pár görgetéssel elérek a végére már ott van, ahol lennie kell. De indulásnál nem.
Szóval arra gondoltam és kérdés is egyben, hogy a robot az általam is látott indikátorérték alapján hoz döntést, vagy ettől függetlenül „rálát” távolabbi időpontokra is, mégha az nem is látszik? Ez beleírható vagy álltalános robot tulajdonság?
2. Mivel éles számla, és az indikátor a bid értékét figyeli, létezhet olyen szituáció, amikor elillan a bid oldal és akkor azt érzékeli, hoogy az árfolyam átlépte a megadott értéket, pedig csak nagyon kiszélesedett pár pillanatra a spread. Ezt tartom valószínűtlenebbnek, mivel az ominózus megtörtént esetben ez több száz pontot jelentene.
Vélemény?
Lehet, hogy az adott indikátor úgymond „újrarajzol”, azaz saját értékeit változtatja vagy ahogy te is írod, a kiindulási gyertyától függően ad jeleket. Akárhogy is, én ilyen indikátort nem használnék robot alapjául, mert a leírt jelenségek nem szűnnek meg, hiszen azokat nagy valószínűséggel maga az indikátor viselkedése okozza.
A második pontban leírtaknál ha a Bid (SHORT nyitóár, LONG záróár) mozdult el, akkor azt magán a charton is látnod kell (utólag a gyertyákon). Az Ask ár (LONG nyitóár, SHORT záróár) mozgását és bejárt útját nem fogod tudni utólag látni, a spread tágulás inkább ott szokott probléma lenni.
Az említett indikátor egy mozgóátlag ami a metába beépített és nem valahonnan letöltött vagy kreált.
A meta elvileg a megjelenített chart-tól függetlenül betölti a megadott oszlopszámot, vagy kell hozzá a hátragörgetés? Utóbbi esetben tudom elképzelni a nagy priódusú indikátorok hibás kirajzolását.A másodiknál teljesen igazad van.
A gyári mozgóátlagnak mindig, minden körülmény között ugyanazokat az értékeket kell adnia a lezárt gyertyákra, függetlenül attól hogy mikortól indul a múltbéli adatsor.
A MT4 újabban letölti a hiányzó historikus adatot, de ez nem volt mindig így – már ha erre gondoltál a kérdéseddel.
Csinálok egy videót és elküldöm, hogy lásd mire gondolok. Pár nap, mert telken leszek gép nélkül.
Kb arra gondoltam igen.
OK!
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.