Tőzsdei Oktatóközpont kezdőknek - Huntraders.com

Közlemény

Collapse
No announcement yet.

Általánosságok

Collapse
X
  • Szűrés
  • Idő
  • Mutat
Clear All
new posts

  • #31
    Szuper, én is kifogom próbálni!

    Hozzászólás


    • #32
      nlot eredeti hozzászólása Hozzászólás megtekintése
      Úgy gondolom, itt az ideje, hogy mutassak valami hasznosat is, ne csak a szám járjon folyton. Sokat gondolkoztam, mi legyen az, ami ér is valamit, de annyit azért nem, hogy előbb lőljenek le, amiért megosztottam, minthogy az első komment megérkezne.

      Meg is találtam a szerintem ideális jelöltet.

      Szerintem ez a világon a legegyszerűbb megoldás, amivel paraméter- és variáció-limit nélkül lehet robotot optimalizálni mt4-ben. Persze csak olyat, aminek megvan a forráskódja is. Eddig 800 paraméter volt a maximum, amivel próbáltam, neuronháló súlyait optimalizáltam vele, ahol mindegyik súly -1 és 1 között vehetett fel értéket 6 digites pontossággal, és ott is hibátlanul működött. Ki lehet számolni, ez összesen hány variáció

      Ez a kódocska egy szokványos expert optimalizálását próbálja bemutatni nem szokványos módon. Maga a rendszer annyira egyszerű, hogy a faék ehhez képest SkyNet, szóval nem kell semmi bonyolultra készülni.

      Good Luck!

      Ezt kíváncsiságból én is kipróbálnám, de mivel nem értek a programozáshoz ezért kellene egy használati utasítás is hozzá mert nem tudom mit kell csinálni vele és az expertel (esetleg egy videó hangal). Ha bonyolultabb és szükséges hozzá programozási ismeret akkor hagyátok figyelmen kívül az üzenetet
      köszi

      Hozzászólás


      • #33
        Dzsabba eredeti hozzászólása Hozzászólás megtekintése
        Ezt kíváncsiságból én is kipróbálnám, de mivel nem értek a programozáshoz ezért kellene egy használati utasítás is hozzá mert nem tudom mit kell csinálni vele és az expertel (esetleg egy videó hangal). Ha bonyolultabb és szükséges hozzá programozási ismeret akkor hagyátok figyelmen kívül az üzenetet
        köszi
        Alapvetően nagyon egyszerű, de egy minimális programozási ismeret azért kell hozzá.
        Csináltam egy sablont, ezzel kell kiegészíteni a tesztelni szándékozott EA-t.
        1./ Be kell másolni a megfelelő részeket a megfelelő részekre (a sablonból az EA-ba).
        2./ Átnevezni a változókat (Variable) az EA eredeti változói szerint.
        Csatolt fájlok

        Hozzászólás


        • #34
          nlot eredeti hozzászólása Hozzászólás megtekintése
          Még egy dolog eszembe jutott ezzel kapcsolatban. A teszter nem mindig érzékeli, ha az időszak megadása mellől kiveszem a pipát, és ugyanazon az időszakon optimalizál tovább, mintha még a pipa ott lenne. De

          amint az optimalizációt megállítom, és indítok egy tesztet, akkor már érzékeli a változtatást, és az egész adatsoron futtatja le a tesztet. Ez is okozhat olyan jelenséget, amit írtál.

          Jól mondod, ennek pontosan a rátermettségi függvény a legbonyolultabb része, magyarul annak számszerűsítése, hogy mi magunk mi alapján választanánk ki a legjobb beállítást, ha az optimalizáció befejeztével minden eredmény a

          birtokunkban volna. Ez minél pontosabban definiálva van, annál valószínűbb, hogy a program olyan beállítást fog találni, amilyet szeretnénk, és annál kevésbé van szükség az eredmények fájlba írására.
          Sziasztok!
          Először is köszi a kódot nlot -nak és Bill -nek jelentős időt lehet vele megtakarítani!

          Még az elején megemlíteném nem vagyok programozó csak időtöltés és megtérülés reményében szoktam magamnak expertet/indikátort készíteni, kérem a hozzászólásomat aszerint kezelni.

          A kóddal kapcsolatosan lenne észrevételem/javaslatom a használatához.
          Hiányoltam, hogy a függvényben nem lehet megadni a lépésközöket és így double érték esetén számomra teljesen haszontalan számokkal futtat tesztet. Függvényeket megtekintve arra jutottam, hogy felesleges a w_double() és w_bool() mivel az említett két függvényt kilehet váltani a w_int() függvénnyel. w_bool() helyet a w_int() minimum érték 0 a maximum érték 1 pl.: w_int(0,0,1). w_double() helyet ha 1-20 -ig 0.1 -es lépésközzel közzel akarok optimalizálni akkor w_int() bemeneti érték*10 és w_init() *0.1 pl.: w_int(0,10,200)*0.1
          Szerintem így használva további felesleges köröket lehet spórolni.

          Továbbá azt tapasztaltam, hogy kb. 100 000 -es variációra 1-2500 -ig iterációs értékkel optimalizálva 600 körüli iterációnál elérte a profit "maximumot" az expert és a továbbiakban az optimalizálás ugyanazokat az eredményeket hozta, illetve több teljesen azonos eredmény is található. Jó lenne ha kilehetne zárni az azonos értékek újra futtatását illetve ha nincs további variációs lehetőség állítsa le az optimalizálást.

          Hozzászólás


          • #35
            CR4ZYFR0G eredeti hozzászólása Hozzászólás megtekintése
            Jogos amit írsz, a rendszer sebességén és hatékonyságán valóban rengeteget lehet még javítani. Leginkább azzal, ha az adott típusú optimalizálási probléma megoldására finomítod. Ilyenkor az univerzalitás általában csökken, vagyis más típusú optimalizálási problémák esetén lassabb lesz és/vagy gyakran ragad lokális optimumokba, de azt az egy fajtát, amire hangoltad, sokkal gyorsabban fogja megoldani.

            Ehhez a mini demonstrációhoz több okból és szándékosan választottam az első működőképes verziók közül is az egyik legalapabb, legnyersebb változatot. Ez kicsi és egyszerű, mindenki úgy szabhatja személyre és robotra, ahogy tetszik. Az újabbak sok paraméterrel és speciális eredmény-kiértékelő megoldással dolgoznak, hibát minimalizálnak, nem profitot maximalizálnak mint ez. Ha egy ilyet dobok fel, akkor használati utasítást kellett volna írnom hozzá, és azután is még hetekig magyarázni az optimális beállításokat a különböző típusú optimalizálási feladatokhoz. Ehhez nyilván sem időm, sem kedvem nem volt.

            Ezt a verziót több népszerű tesztfüggvénnyel is kipróbáltam, lokális optimumokba igen ritkán ragadt be, és akkor is csak maximum néhány ezer iterációig. Egyszerű neurális háló esetén, ismeretlen targetet szimulálva néha még gyorsabb is volt, mint annak az eredeti tréningelő rendszere (ezen az oldalon a C/C++ menüpont alatt található kód a legegyszerűbb példa erre, mivel a régi strukturált mq4 is szinte egy az egyben megeszi, csak minimális változtatások szükségesek).

            Az azonos kombinációk többszöri teszteléséről: ki lehet küszöbölni, és bizonyos esetekben érdemes is lenne. Nekem eddig eszembe se jutott, mindig elég sok paraméterrel és variációval dolgozom, ezért két egyforma kombináció előfordulásának az esélye igen kicsi.

            Az optimalizálás automatikus leállítása: jó ötlet ez is, kár hogy mql4-ben nincs valami gyári stop függvény erre. DLL hívással meg lehet oldani, csak számolni kell hozzá az eddigi legjobb eredmény megtalálása óta lefutott iterációkat a robotban, és menteni globális változóba. Azután meg lehet adni például külső változóban, hogy mennyi olyan iteráció után álljon meg, amiben a legjobb eredmény nem változott. Sokat tesztelek olyan szkriptekkel robotok helyett, amiknek saját beépített tesztere van, azokban is így oldottam meg ezt (csak nyilván ott globális változókat felesleges használni).

            Érdekes, hogy metáék gyakorlatilag már az egész platformot átdolgozták programnyelvestül, de a teszter variáció-limitjének megszüntetése valamiért eddig mindig kimaradt. Szerintem mindenki boldogabb lenne, ha nem ilyen barkácsmegoldásokkal kellene szórakozni. Egyelőre vagy ez, vagy másik platform, jelenleg egyéb lehetőségről nincs tudomásom.

            Hozzászólás


            • #36
              Találtam egy igen egyszerű megoldást az optimalizálás automatikus leállítására, és úgy döntöttem leírom hátha érdekel valakit. Csak létre kell hozni hozzá még néhány hamis külső változót, amit a robot szintén nem használ. Az iterációhoz hasonlóan ezeknek is meg kell adni szélsőértékeket és lépésközt, majd bekapcsolni a teszter gyári öröklődő algoritmusát. Ez érzékelni fogja, ha már nem érdemes tovább futnia, és le fogja állítani az optimalizálást. Csak azt kell kikísérletezni, hogy összesen mennyi legyen a hamis paraméterekkel megadott kombináció-szám, mert ha túl kevés akkor le fog állni idő előtt, ha túl sok akkor pedig tovább fog futni mint szükséges. Erre csak most jöttem rá, de az eddigi néhány teszt alapján úgy látom, hogy működik.

              Hozzászólás

              Working...
              X