Hozzászólások

15 bejegyzés megtekintése - 346-360 / 651
  • Szerző
    Bejegyzés
  • Radulovic Attila
    Tag
    Bejegyzések száma: 653
    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:

    1. minél hosszabb legyen a tesztelési periódus
    2. nem próbálok önmagukban pár hónapokat tesztelni, mert abból nem sül ki semmi jó
    3. 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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Köt ahol nem szabadna #3525

    Tesztelj backteszttel! Minden lehetőséget valós időben kivárni és tesztelni lehetetlenség.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Köt ahol nem szabadna #3523

    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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Lol, tényleg! Ebből is látszik, hogy mennyire erőlködik a MetaQuotes…

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Nekem 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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Köszi a kódmegosztást!

    A hamarosan bejelentésre kerülő új buildben pedig már natív megoldás is lesz.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Tickstory probléma #3497

    A 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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Tickstory probléma #3495

    A 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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Igen, 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!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Az ú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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    1. A MarketInfo() függvénynél a NULL helyett a Symbol() függvényt használd!
    2. 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)
    3. 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.
    4. 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.
    5. 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.
    6. 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.
    7. 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 :)

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Az 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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    A 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?

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Lá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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    A 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 :) )

15 bejegyzés megtekintése - 346-360 / 651