Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Veszteség, külső input
Címkézve: külső input, Veszteség
-
SzerzőBejegyzés
-
Szia Radu
Két kérdésben szeretném a segítségedet kérni. Többször belefutottam abba, hogy egy adott időintervallumon történő tesztelés során végig pozitívan kereskedik a robot de a legvégén mindent elveszít. Ha csak erre a veszteséges időtartamra futtatom le újra akkor megint pozitívan kereskedik. Több robotnál is belefutottam ebbe. Mitől van ez? Mennyire kell komolyan venni ezt a jelenséget?
A másik kérdés, hogy szeretnék futás közben (kereskedés alatt) leállítani egy robotot billentyűvel. Ennek az lenne a célja, hogy az eseményre már nem köt új ügyletet csak szépen megvárja, hogy a többi lezárásra kerüljön a program szerint. Ezt hogyan lehet megoldani? Esetleg valami egyszerű programrészt be tudnál-e másolni vagy linkelni.
Előre is köszönöm.
GáborSzia Gábor!
Az első kérdésed kapcsán:
Milyen stratégiáról van szó? Ha pl. ellentrendben/trendben építkezős, akkor a problémád onnan ered, hogy nem mindegy az első kötés helye, ami alapján a többi kötés majd datálódik. A bővebb válaszhoz ismernem kéne a stratégiát – így látatlanban a pozícióhalmozódás, és az ezzel kapcsolatos elszállás/túlzott kitettség lehet az ok (sok más egyéb mellett).A második kérdésed kapcsán:
A kérdésed vizuál tesztben, manuális megállításra vonatkozik? Mert ott a Pause/Break feliratú gomb használható a billentyűzeten.Amennyiben programkódon belül szeretnél ilyen megoldást eszközölni, ott én az úgynevezett „szemafor” módszert javaslom. Azaz kell hogy legyen egy szemaforod (jelződ), amely megakadályozza a robotot az új pozíciónyitásban (többpozíciós rendszer esetén építkezés indításában), azonban a meglévő pozíciót/pozíciókat lemenedzseli. Szemafornak használhatsz egy fájlt, vagy akár egy globális változót – én jellemzően az utóbbiakat veszem igénybe.
Az így elhelyezett szemaforokat természetesen majd kézzel kell törölni, mert a robot nem mindig tudhatja, hogy az adott szemafor érvényben van-e még, vagy csak egy korábbi futtatás eredményeként maradt ott.
A jelző elhelyezése történhet pl. az első pozíció megnyitásakor, vagy egy más esemény bekövetkeztekor – ez teljes mértékben rád van bízva.
Programkódot azért nem írnék most első körben, mert egyelőre megvárom hogy kifejtsd hogy pontosan mire is gondolsz.
Szia,
A tesztelésnél igazán nem tudok mondani stratégiát mert többnyire ingyenes robot tesztelésénél találkoztam ezzel. Esetleg egy tesztelési eredményt tudnám átküldeni vagy a tőkés grafikont.
A program megállítását én elsőre úgy képzelném el, hogy van egy sima 0/1-es változó ami alap esetben mondjuk 0 ekkor kereskedhet (az egyéb feltételek mellett persze), és ha futás közben pl. ctr+q nyomok akkor átvált 1-re, ekkor már új pozíciót nem nyit de a meglévőket még szépen bezárja a stratégia szerint. Ennek az lenne az értelme, hogy amikor fut a program (élesben) és le akarom állítani pár napra vagy hétre nyaralás vagy bármi miatt, akkor a nyitott pozíciókat de jelenleg veszteségeseket ne egyből realizáljam.
Ellenőrizd le, hogy van-e elegendő pénz a tesztben (induló tőke).
A 0/1-es változód kapcsán: a billentyűre reagálás megoldható, de rendkívül körülményes. Az egyszerűbb jobb alapján inkább egy külső változót javaslok, amely a meglévő kereskedések menedzselését engedi, míg az új pozíció nyitást tiltja. Pl.: TradeEnabled = true/false.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.