Érthetetlen hiba 2013-09-05T17:31:58+00:00
4 bejegyzés megtekintése - 1-4 / 4
  • Szerző
    Bejegyzés
  • mpeter
    Tag
    Bejegyzések száma: 38

    Szia Radu!

    Egy indikátorban három közül az egyik értékek nem jelenik meg. Hosszas nyomozás után megtaláltam a hiba helyét. Az indikátor tömb értékadás után nulla marad, de azt már nem tudom, hogy miért. A teszt kód részlet most így néz ki:

                BufferFuggo[i] = limit;
                if ( BufferFuggo[i] != limit )
                {
                  Comment( "völgy ", i, " ", BufferFuggo[i], " ", limit );
                }

    Normális esetben nem szabadna a commentet kiírnia, mégis kiírja. Pl.: ezt: “völgy 5 0 1.2486”

    Elküldöm a teljes forráskódot a címedre. Segítesz megtalálni a hiba okát?

    mpeter
    Tag
    Bejegyzések száma: 38

    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

    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.

    Radulovic Attila
    Tag
    Bejegyzések száma: 644

    A #property indicator_buffers -zel meg kell adnod a pufferek számát. Amennyiben tömböt használsz adatfeldolgozásra, akkor annyiszor kell végigmenned a tömbökön, ahányszor az adott tömbből dolgozni akarsz.

    counted_bars = IndicatorCounted();
    
       limit = Bars - counted_bars;
    
       for(int i = 0; i < limit; i++) {
         Buffer.MAFast[i] = iMA(Symbol(), MA.TF, MA.Period, MA.Shift, MA.Method, MA.Price, e);
       }

    Ha ezek után a a Buffer.MAFast[i] adatai alapján egy másik puffer tömböt akarsz kiszámítani/feltölteni, akkor azt egy újabb for ciklussal kell megtenned. Én ezt a furcsaságot tapasztaltam.

    Ameddig az újra chartra csatolás probléma fennáll, addig valami nem jó!

4 bejegyzés megtekintése - 1-4 / 4

A hozzászóláshoz jelentkezz be!

Adhatok Neked még több ingyenes tartalmat?

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