Hozzászólások

9 bejegyzés megtekintése - 16-24 / 24
  • Szerző
    Bejegyzés
  • mpeter
    Tag
    Bejegyzések száma: 38

    Szia! Találtam megoldást az első kérdésedre.

    #property script_show_inputs
    
    enum hourOfDay
    {
       H00,     // 0
       H01,     // 1
       H02,     // 2
       H03,     // 3
       H04,     // 4
       H05,     // 5
       H06,     // 6
       H07,     // 7
       H08,     // 8
       H09,     // 9
       H10,     // 10
       H11,     // 11
       H12,     // 12
       H13,     // 13
       H14,     // 14
       H15,     // 15
       H16,     // 16
       H17,     // 17
       H18,     // 18
       H19,     // 19
       H20,     // 20
       H21,     // 21
       H22,     // 22
       H23      // 23
    };
    
    enum minuteOfHour
    {
       M00,     // 0
       M01,     // 1
       M02,     // 2
       M03,     // 3
       M04,     // 4
       M05,     // 5
       M06,     // 6
       M07,     // 7
       M08,     // 8
       M09,     // 9
       M10,     // 10
       M11,     // 11
       M12,     // 12
       M13,     // 13
       M14,     // 14
       M15,     // 15
       M16,     // 16
       M17,     // 17
       M18,     // 18
       M19,     // 19
       M20,     // 20
       M21,     // 21
       M22,     // 22
       M23,     // 23
       M24,     // 24
       M25,     // 25
       M26,     // 26
       M27,     // 27
       M28,     // 28
       M29,     // 29
       M30,     // 30
       M31,     // 31
       M32,     // 32
       M33,     // 33
       M34,     // 34
       M35,     // 35
       M36,     // 36
       M37,     // 37
       M38,     // 38
       M39,     // 39
       M40,     // 40
       M41,     // 41
       M42,     // 42
       M43,     // 43
       M44,     // 44
       M45,     // 45
       M46,     // 46
       M47,     // 47
       M48,     // 48
       M49,     // 49
       M50,     // 50
       M51,     // 51
       M52,     // 52
       M53,     // 53
       M54,     // 54
       M55,     // 55
       M56,     // 56
       M57,     // 57
       M58,     // 58
       M59      // 59
    };
    
    //--- input parameters
    input hourOfDay H; // Óra
    input minuteOfHour M; // Perc
    input minuteOfHour S; // Másodperc
    
    int h;
    int m;
    int s;
    void OnStart()
    {
       h = H;
       m = M;
       s = S;
    }
    
    mpeter
    Tag
    Bejegyzések száma: 38
    Hozzászólás: Hibás gyertyák #3473

    Ha a Tickstory betöltés helyett a csv2fxt scriptet használom, akkor eltűnnek a vasárnapi egy órás gyertyák.

    mpeter
    Tag
    Bejegyzések száma: 38

    A *** al megjelölt sort feljebb kell tenni egy sorral, mert csak így lesz a maximális érték benne. Ahogy az előbb írtam az utolsó gyertya előtti tickek száma lenne benne.

    if( elozo > 0 ) Gyertya++;
    if( Ticks > MaxTick ) MaxTick = Ticks; // ***
    if( Gyertya == TICK_TESZT )

    mpeter
    Tag
    Bejegyzések száma: 38

    Megírtam egy minta kódot. Ebből az is kiderült, hogy a 12 kontroll pontból generált tick nem 12, hanem kb.: háromszor 12 ticket jelent. De így is működik. A TICK_TESZT konstansban lehet beállítani, hogy hány gyertyán teszteljen. Én EURUSD kereszten teszteltem, Más devizapáron esetleg a 100-as küszöb értéket változtatni kell.

    ui: A “kisebb-egyenlő” relációt csak negálva tudtam bemásolni, a html miatt.

    //--- Globális változók
    int      Ticks;
    int      Gyertya;
    int      MaxTick;
    int      Model;
    datetime elozo;
    
    int init()
    {
      Gyertya = 0;
      elozo   = -1;
      MaxTick = 0;
      return(0);
    }
    
    #define TICK_TESZT 5
    int start()
    {
      if( !(Gyertya > TICK_TESZT ))
      {
        if( Time[0] == elozo )
          Ticks++;
        else
        {
          if( elozo > 0 ) Gyertya++;
    
          if( Gyertya == TICK_TESZT )
          {
            if( Ticks > MaxTick ) MaxTick = Ticks;
            
            if     ( MaxTick ==  1 ) Model = 0; // egész gyertya
            else if( MaxTick < 100 ) Model = 1; // kontrol pontok
            else                     Model = 2; // minden tick
            
            Comment( "MaxTick = ", MaxTick, "  Model = ", Model );
          }
    
          Ticks = 1;
          elozo = Time[0];
        }
        
        return(0);
      }
    
      // --- Itt jöhet a tesztelés 
      return(0);
    }
    mpeter
    Tag
    Bejegyzések száma: 38

    Én azt csinálnám, hogy megszámolnám két egymás utáni gyertya között hányszor fut le a start függvény. Vagy egyszer, vagy 12-szer, vagy 12-nél többször. Így két-három gyertya elmegy ennek megállapítására, utána mehet a teszt.

    mpeter
    Tag
    Bejegyzések száma: 38
    Hozzászólás: Érthetetlen hiba #1644

    Nem szeretem az ilyen megmagyarázhatatlan jelenségeket, ezért megpróbáltam rekonstruálni a hibát. Leírom tanulságképpen, hogy fordulhat ilyesmi elő.

    Ezt az indikátort már korábban elkészítettem, két buffert használtam benne. Ma reggel betettem egy harmadik buffert is, na ilyenkor az MT4 nem hajlandó figyelembe venni, hogy változott a bufferek száma, és az új buffernek nem foglal helyet a memóriában. Csak ha újra csatolom a charthoz.

    mpeter
    Tag
    Bejegyzések száma: 38
    Hozzászólás: Érthetetlen hiba #1643

    Szia Radu!

    Megszűnt a hiba, már ne keresd. A kód további tesztelése során ellenőriztem a tömb méretét, és az ArraySize(BufferFuggo) nulla volt. Arra továbbra sem derült fény, hogy mi okozta. De amikor levettem a chartról az indikátort, és visszaraktam, megszűnt a hiba. Úgy látszik az MT4 kavart össze valamit. Mindenesetre sok időm ráment.

    mpeter
    Tag
    Bejegyzések száma: 38

    Szia Radu! Kösz a választ. Egy kiegészítő kérdésem van. Még csak két hónapja kezdtem el foglalkozni az MT4 programozással, 20 év programozási tapasztalattal. Szeretek minden lehetőségről, korlátról magam meggyőződni. Így akadtam ebbe a problémába is. Találtam egy megoldást, csak azt nem tudom, hogy ez mennyire függ az aktuális MT4 klienstől. Az indikátor init() függvényben lekérdezem a gyertyák számát:

    bool tesztmod = false;
    int init()
    {
      if ( Bars == 0 ) tesztmod = true;
      // ...
    }

    Ez az én brókeremnél működik. De vajon szabad ilyesmire alapozni egy kódot? Vagy egy alternatív megoldás lehet, hogy extern paraméterként a felhasználótól kérem be, hogy hol használja az indikátort.

    mpeter
    Tag
    Bejegyzések száma: 38

    Van egy multi timeframe indikátor, ami az iMA(NULL,PERIOD_D1,50,0,MODE_SMA,PRICE_CLOSE,0) értéket használja. Most 2012.08.20 19:40 van. Ha például múlt heti adatokon tesztelek M1-es charton, akkor az iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0) a régi értéket adja, de az iMA(NULL,PERIOD_D1,50,0,MODE_SMA,PRICE_CLOSE,0) a mostani értéket.

    Teszt módban az expert és az indikátor esetében nem egyformán állítja be a gyertya tömböket az MT4. Expert esetén minden idősík gyertya tömbje kb.: 1000-el indul, és mindegyiket aktualizálja a tickek pillanatában. Viszont az indikátorokban csak az aktuális idősík gyertya adatai frissülnek, a többi marad a teszt előtti (kb.:65000)

    Emiatt ha az indikátor egy függvényt nem aktuális idősík paraméterrel használ, teszt módban nem ugyan azt az értéket adja, mint amit ugyanakkor nem teszt módban adott. Lezárt (nem [0] indexü) gyertyák esetén az iBarShift függvénnyel tudom korrigálni. De az utolsó gyertya esetén ez sem jó, itt el kéne a kódnak ágazni teszt módtól függően. pl.: if(isTesting()) { …tesztmód… } else { …éles… }

9 bejegyzés megtekintése - 16-24 / 24