Optimalizáció 2012-08-12T21:03:41+00:00
15 bejegyzés megtekintése - 1-15 / 16
  • Szerző
    Bejegyzés
  • COF258
    Tag
    Bejegyzések száma: 30

    Szia Radu!

    Azon kezdtem el agyalni, hogy nagyon sokat tesztelünk és optimalizálunk, viszont az optimalizálás során közel sem ad elég információt az egyes lefutásokról.

    Azt szeretném megtudni, hogy van-e olyan lehetőség MT4-ben, hogy a tesztelés során megkapott összesítést (vagy még többet is) kinyerjük optimalizáció során is? Sokkal jobban el lehetne dönteni az egyes beállítások eredményét.

    Előre is nagyon szépen köszönöm a segítséged!

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    Sajnos az MT4 egyáltalán nem kényezteti el a tesztert ilyen szempontból. A legjobb esetben is csak a CSV táblázatok mentése, vagy a copy-paste marad: nincsen megfelelő (előre beépített) funkció az optimalizálás során kapott eredmények kultúrált és egyszerű kinyerésére.

    Sajnos ez a platform kötöttsége – ezt áthidalni meglehetősen körülményes, nekem még nem volt annyi életkedvem hogy megoldjam.

    COF258
    Tag
    Bejegyzések száma: 30

    Tehát akkor csak úgy oldható meg, hogy optimalizáció közben egyes lefutott tesztek adatainak kinyerésére meg kell írni a kódot és külön-külön fájlban tárolni? Akkor is csak úgy lehet megoldani, ha teszt időszak utolsó vagy utolsó előtti napján kiírom a globális változókból az általam gyűjtött adatokat? Nem lehet hozzáférni a MT bizonyos számításaihoz?

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    Az MT saját számításaihoz nem férsz hozzá. Lehet, hogy Win32 trükkökkel igen de az már nem natív megoldás.

    A deinit() részben a saját kigyűjtött adataidat természetesen eléred, hiszen minden egyedi teszt végén a deinit le fog futni.

    COF258
    Tag
    Bejegyzések száma: 30

    Ohh tényleg! Nagyon sokat segítettél, köszönöm szépen! 🙂

    COF258
    Tag
    Bejegyzések száma: 30

    Elhatároztam, hogy megcsinálom. Elképzelésem az, hogy egy csv file-ba írja ki. A számításokat a gyertyák utolsó percében hajtsák végre. És mivel az optimalizálás során az éppen aktuális teszt sorszámát nem ismerem, a lokális idővel lehet majd sorba állítani. A szokásos teszt-végi adatok lesznek kiszámoltatva. Egyetlen függvény lesz külön headerben+a deinit().
    Amennyiben elkészül meg szeretném osztani itt, ha van rá mód (az egyértelmű bemásoláson kívül).
    Ez a terv, de ötleteket és tanácsokat szívesen veszek bárkitől. 🙂

    COF258
    Tag
    Bejegyzések száma: 30

    Az alapot meg is csináltam…kiírja, minden tesztet (optimalizáció közben is) új sorba. Jöhetnek az új ötletek. 🙂

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    Van egy rossz hírem: a lokális idő backtesztben megegyezik a szimulált szerveridővel, így az mindig ugyanaz lesz a deinitkor.

    Folyamatosan növekvő szám a fájlnévben megteszi, amit a fájlnévből kiolvasva tudsz ellenőrizni és növelni.

    Vendégposzt lehet belőle, ha gondolod – egyelőre nézzük meg, hogy mennyire univerzális amit kreálsz 😉

    COF258
    Tag
    Bejegyzések száma: 30

    Hát igen, én is megfigyeltem a teszt során, ezért inkább kihagytam míg találok rá megoldást. A fájlnévben nem akarok számolni, mert az azt jelenti, hogy optimalizáció során minden egyes lefutott teszt új fájlt hoz létre. Az elképzelés, hogy dátum alapján hozza létre a fájlokat, esetleg kiegészítve az EA nevével (ez utóbbi EA név megint segítségednek köszönhetően pattant ki a fejemből: köszi!) .
    Viszont úgy gondolom az beválhatna, ha (mivel sorokat számoló függvény nincs) csinálnék egy olyat, hogy az első sor a ‘0’ és ezt a sor végére írnám. Amúgy is a sor végére kell ugorni ahhoz, hogy a soron következő teszt eredményeit beírjam, így a végén ki is tudom olvasni, majd egyet felléptetni.
    Amúgy eddig úgy fest, hogy nem a gyertyák végén számolgattam, hanem mindent a deinit()-ben. Így csak egyszer fut le és még véletlenül sem zavarja a kereskedést. Globális és külső változókat nem használ, hogy bármelyik EA-ba beilleszthető legyen.
    Van esetleg ötlet, hogy mit lehetne még kiszámoltatni az alap tesztadatokon kívül, vagy esetleg hogyan lehetne a már meglévőeket jól kiértékelni? Esetleg van valakinek ilyenben tapasztalata? (gondolok grafikon, stb.)

    COF258
    Tag
    Bejegyzések száma: 30

    Nagyjából testet öltött külalakra is. A várt eredménynél valami nem jó, de még nem foglalkoztam vele.
    A dátum a fájlnévnek dolgot is kipróbáltam többféleképpen, de létrejöttek olyan fájlok is, amik nem a szimuláció végén jöttek létre, így az adatok nem egyazon fájlba kerültek. Érdekes jelenség, nem tudom miért lehet. Szerintem marad az expert neve fájlnévnek. Csak ezzel az a baj, hogy ha az optimalizáció után módosítunk valamit és megint optimalizálni akarunk, akkor folytatja az előző szimulációs adatbázist. Jó lenne valami megoldás erre, ugyanis az emberi feledékenység (hogy átnevezze, vagy kimentse az előző optimalizáló eredményeit) miatt sok gondot okozhatunk magunknak.

    COF258
    Tag
    Bejegyzések száma: 30

    Elakadtam. Hogyan tudnám kiolvasni az utolsó sor végére kiírt integert? Sok mindent kipróbáltam már, de valahogy nem látom át, hogy ezek a fajta műveletek hogyan is működnek.
    Köszi!

    sikeresotto
    Tag
    Bejegyzések száma: 1

    Az MT a backtest során (nekem) 2-3 évre visszamenőleg végzi el a tesztet.
    Kérdés:
    Van-e mód arra, hogy a történelmi adatokat kibővítsem?
    vagy
    Van-e olyan internetes(web) szolgáltatás, ahova az [ea]-t feltöltöm, és leteszteli megadott paraméterekkel?

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    COF258:
    Milyen utolsó sor milyen integerére gondolsz?

    sikeresotto:
    Nem tudok az általad leírt webes szolgáltatásról. A történelmi adatok bővítéséről itt olvashatsz.

    COF258
    Tag
    Bejegyzések száma: 30

    Tehát létrehozza a fájlt, a tesztelési adatokat az adott tesztidőszak végén írja ki, egy sorban pontosvesszővel elválasztva. Létre akartam hozni egy utolsó bejegyzést a sor végére az éppen aktuális tesztelés sorszámával. Ezt az optimalizálás során a MT saját magának generálja és nem is lehet hozzáférni. Én úgy kívántam megoldani, hogy a címsorban elhelyezem a nullát, és mivel csak a tesztelés végén fut le, ezért kiolvassa az utolsó bejegyzést az utolsó sorban és azt megnöveli egyel. Az aktuális teszt sorszáma ez lenne.

    A probléma ott kezdődik, hogy akárhogyan próbálkoztam, nem sikerült kiolvasnom az adott bejegyzést és nem is látom, hogy hogyan lehetne megtenni. Reméltem, esetleg te mint tapasztaltabb, tudsz ebben is segíteni nekem. 🙂

    Jelenleg ezt a részét hanyagoltam. Úgy áll, hogy a dátum a fájl névben azért volt jó ötlet, mert így csak azok kerülnek be a tesztidőszak utolsó napján amelyik rendesen végig tudott futni. Így véleményem szerint egy csomó negatív és fals pozitív eredménytől meg lehet óvni a létrehozandó fájlunkat. Ennek hátránya, hogy amikor össze kéne illeszteni a statisztikai adatokat az optimalizáció során változtatott bemenő adatokkal, akkor nem lehet pontosan megállapítani, hogy melyik-mihez tartozik. Ezért lenne fontos a sorszámozás.

    más: Esetleg van rá mód, hogy az optimalizáció során változtatott bemeneteket kinyerjük? Ha jól sejtem nem, és marad a ctrl+c/ctrl+v.

    más: A relative DD számítása a leírásod alapján nem volt egyértelmű (máshol nem igazán találtam képletet), ezért nem tettem bele. Ezt hogy is lehet pontosan meghatározni? A maximális lehívás leírásánál is túl bonyolult volt a képlet – sokat lehet egyszerűsíteni rajta. (már, ha jól értelmeztem a képlet elemeit)

    Bocsi, hogy megint ilyen hosszú voltam!
    Előre is köszi mindent!

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    A fájlnévben szereplő szám automatikus növelését javaslom, a következő módon:

    – a fájlneved utolsó eleme legyen a counter, a kiterjesztés előtt (tesztelesi_adataim-0.csv, tesztelesi_adataim-1.csv, stb.)
    – egy ciklussal nullától leellenőrzöd, hogy az adott fájl létezik-e. Ha igen, akkor mész tovább, ha nem akkor pedig ez a szám lesz az aktuális fájlnévben és megszakítod a ciklust.

    Természetesen ebbe a megoldásba is bőven bele lehet kötni, de alapvetően szerintem a célnak bőségesen megfelel.

    Az optimalizáció során változtatott bemeneti paraméterekkel kapcsolatos kérdésedet helyesen megválaszoltad 🙂

    A maximális lehívás képletének egyszerűsítését megosztanád velem? Lehet, hogy kicserélném a cikkben is.

    A relatív DD kiszámítása kapcsán: a lényeg, hogy az aktuális rel. lehívási százalékod a mindenkori egyenleg alapján számolódik, ily módon pozitív és negatív irányba is változhat.

15 bejegyzés megtekintése - 1-15 / 16

A hozzászóláshoz jelentkezz be!

Adhatok Neked még több ingyenes tartalmat?

Értesítelek hetente megjelenő új tartalmaimról.