Hozzászólások
-
SzerzőBejegyzés
-
Hozzászólás: Köt ahol nem szabadna #3527
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.
Hozzászólás: Köt ahol nem szabadna #3525Tesztelj backteszttel! Minden lehetőséget valós időben kivárni és tesztelni lehetetlenség.
Hozzászólás: Köt ahol nem szabadna #3523Temé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.
Hozzászólás: Indicator chartra helyezése #3509Lol, tényleg! Ebből is látszik, hogy mennyire erőlködik a MetaQuotes…
Hozzászólás: Indicator chartra helyezése #3507Nekem is, szólj ha megtaláltad! :)
Komolyra fordítva a szót: lehet, hogy winapiból meg lehet valósítani, ugyanakkor nem találkoztam még ilyen (stabil) megoldással.
Hozzászólás: Kommunikáció webszerverrel #3504Köszi a kódmegosztást!
A hamarosan bejelentésre kerülő új buildben pedig már natív megoldás is lesz.
Hozzászólás: Tickstory probléma #3497A tick az maga az árfolyamváltozás.
Ha a MT4-re bízod a backteszt környezet (=FXT) generálását, akkor ő legjobb esetben is csak az M1 adatokat veszi alapul, és azt véletlenszerűsíti. Míg a Tickstory FXT generálása a konkrét tickeket rögzíti az FXT fájlba, ami így meglehetősen pontos lesz.
Hozzászólás: Tickstory probléma #3495A kizárólag hst fájlokból létrejött backteszt nem lesz tick alapú. Ha erre nincs szükséged, akkor egyébként valóban felesleges számodra legeneráltatni az FXT fájlokat.
Az FXT elhagyását úgy tudod elérni, hogy az idősíkok kiválasztásánál egyet sem jelölsz be. A hst fájlok ettől függetlenül létre fognak jönni.
Hozzászólás: Külső változó intervallumának leszűkítése #3478Igen, ez valóban jó megoldás. Én túlságosan a régi mt4 szolgáltatási körében gondolkodtam:)
Köszönjük, mpeter!
Hozzászólás: Visszafejtés elleni védelem. #3476Az újabb MT4 fordítóval lefordított programkódok visszafejtése egyelőre még nem működik a régebbi ex4tomql decompilerrel, tehát nagyjából védve van a kódod minden egyéb további lépés nélkül is.
Fontos szem előtt tartani, hogy 100%-os védelem nincs, azaz mindig lesz valahol a világban egy olyan szakember, aki vissza tudja majd fejteni a legjobb védelmet is.
Vannak próbálkozások, például az MQL Lock, nézd meg hátha ez fedi az elképzeléseidet.
Hozzászólás: STOP OUT távolság/hely kiszámítása #3471- A MarketInfo() függvénynél a NULL helyett a Symbol() függvényt használd!
- Amennyiben valamelyik oldalon (BUY vagy SELL) nagyobb az össz-lotméret, mint a másikon, akkor számolhatsz kistoppolódási szintet. Ha a két oldal egyenlő, akkor ugye befagyasztott állapot van, aminél soha nem fog kistoppolódás történni (természetesen ha nincsen SL/TP beállítva)
- A kistoppolódás helyét mindig annak a pozíciótípusnak a helytelen iránya adja meg, amelyből több van. Tehát 1 lot BUY és 1.1 lot SELL esetén az emelkedés fogja a kistoppolódást okozni, hiszen lefelé a nagyobb SELL össz-lotméret miatt floating növekedés fog történni.
- Magyarul: csak a különbséget is használhatod a számításhoz, persze a jutalék és a kamat összegének beszámításával. Ha tehát van 1 lot BUY és 1.1 lot SELL pozid (összesen), akkor elég a 0.1 SELL -t alapul venni, mint mennyiséget. Természetesen minden esetben fontos az oldalankénti pontos, súlyozott átlagárat kiszámolni és abból kiindulni a profitszámítás során.
- Amennyiben a kistoppolódást szeretnéd kiszámítani, a fenti alapok figyelembe vételével és ennek a cikkemnek a tanulmányozásával pontosíthatod a kódodat.
- Amennyiben magának a számlának a kistoppolódási helyét akarod kiszámítani (ahol a bróker erőszakkal zárja a pozícióidat a túl nagy kitettség miatt), akkor használd a AccountStopOutMode() és AccountStopOutLevel() függvényeket. Így kiszámolhatod azt az összeget, aminél a stopout meg fog történni, az összeg, a nyitott lotméret és a tickvalue-ticksize alapján pedig ki tudod számolni, hogy ez ár szintjén hol fog bekövetkezni.
- Nyilván ha több instrumentumon vannak nyitva pozícióid vegyesen, akkor a stopout szintjét kiszámolni (ár szintjén) lehetetlen, hiszen az instrumentumok árai össze-vissza mozoghatnak.
A téma rengeteg apró kérdést tartalmaz, így szinte biztos hogy kihagytam valamit, de ha elakadsz, akkor úgyis kérdezel majd :)
Hozzászólás: Külső változó intervallumának leszűkítése #3460Az első kérdésedre a válasz:
Sajnos ilyen korlátozásra nincs lehetőséged. A külső változók értékeit kordában tudod tartani a kódon belül, és módosítani is tudod, azonban ez nem lesz hatással a paraméterablak értékeire. Az régi MT4 változatban ez így van, az új MT4 változatban sem gondolom hogy van változás ezzel kapcsolatban.A második kérdésedre a válasz:
Comment("Első sor\nMásodik sor\nHarmadik sor");
Magyarul a \n sortörő karakterrel tudsz új sort kérni.
Hozzászólás: Függő megbízás adott időben #3457A kiíratott értékek mik? A „TIME HOUR. GMT:” kezdetű kiíratásra gondolok. Jó, ha minden tickben megjeleníted a TimeGMT() -t a backtesztben. Ha annak fix értéke van, akkor nem nálad, hanem a MT4-ben van hiba.
A kód ezen része természetesen nem kéne, hogy állandóan (vagy bármikor) lefusson. A Lejart_az_Ido(); és a Stop_Limitek_Elhelyezese(); fgv mit tartalmaz?
Hozzászólás: Függő megbízás adott időben #3410Látnom kéne a teljes kódot. A Commenttel kiíratott változó egy az egyben az, amivel az ellenőrzést végzed? A két order azért helyeződik ki, mert az if feltételed teljesül. Tehát valami probléma nagy valószínűséggel a feltétellel lesz.
Hozzászólás: Függő megbízás adott időben #3407A TimeGMT() is helyi időt használ, azaz a géped óráját veszi alapul.
Szerintem NE a helyi időt használd, hanem mindig a brókeridőt! Ettől eltérni még mindig el lehet, de a GMT eltolást érdemes bekérned akkor külső paraméterként. A helyi idő ugyanis ha késik, máris kakikban vagy…
Az Hour(), Minute(), stb. az aktuális brókeridőt veszi alapul – nekünk más nem is kell, hiszen a kereskedést, gyertyák ellenőrzését leginkább ez alapján végzed. Ha most felszisszentél, és a bejelentések és egyebek kapcsán a brókered időzónája és a saját időzónád között eltérés van, akkor azt GMT eltolással érdemes kezelned – de semmiképp nem a lokális gép ideje alapján. Hiszen az bármikor eltérhet, késhet, siethet, ráadásul nagyi gépén két napot késik is. Akkor ott mi fog történni az experteddel? Pár perc (vagy akár másodperc) csúszás is felborítja a szükséges periodikusságot, ami kizárólag brókeridő használatával működhet.
A brókeridő mindig megfelelő, dolgozz azzal!
A megoldásod kihelyezős része pedig akkor kerül bajba, ha a kihelyezett megbízások mondjuk röviddel a kihelyezés után teljesülnek.
Ekkor – mivel nincs kint egy megbízás sem, „csak” két aktív pozíciód van, a kihelyezés újra meg fog történni. Az ilyen forgatókönyvek végiggondolása mindenféleképpen fontos, még akkor is, ha relatíve ritka eseménynek számít az adott konfigurációban.Előbb-utóbb kénytelen leszel egy szemafor-megoldáshoz nyúlni, hiszen a logikai felépítésbe nagyon sok minden beleköphet (pl. felhasználói erőszak :) )
-
SzerzőBejegyzés