Nie widzę problemu w moim ruchomym średnim kodzie
Pokaż wyniki od 1 do 2 z 2

Wątek: Nie widzę problemu w moim ruchomym średnim kodzie

  1. #1
    1 Załączniki Wstawiono kod #property indior_chart_window/ ------------------------------------- ----------------------------- /| Niestandardowa funkcja inicjalizacji/ ----------------------------------------------- ------------------- zewnętrzny int HMA_Period = 21; extern int History = 500; podwójna hma # 91; # 93 ;; int init () {IndiorBuffers (1); SetIndexBuffer (0, hma); SetIndexStyle (0, DRAW_LINE, STYLE_SOLID, 2); return (0); }/ ---------------------------------------------- -------------------- /| Niestandardowa funkcja deinicjalizacji |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Niestandardowa funkcja iteracji |/ ----------------------------------------------- ------------------- int start () {int counted_bars = IndiorCounted (), i = Bary - counted_bars - 1; podwójna temperatura; if (i gt; History - 1) i = History - 1; while (i gt; = 1) {hma # 91; i # 93; = iMA (NULL, 0, MathFloor (HMA_Period2), 0, MODE_LWMA, PRICE_CLOSE, i) * 2 iMA (NULL, 0, HMA_Period, 0, MODE_LWMA, PRICE_CLOSE, i); ja--; } i = Bary - counted_bars - 1; while (i gt; = 1) {temp = iMAOnArray (hma, 0, MathFloor (MathSqrt (HMA_Period)), 0, MODE_LWMA, i); hma # 91; i # 93; = temp; ja--; } return (0); }/ ---------------------------------------------- --------------------
    Problem w średniej ruchomej kadłuba polega na tym, że niektóre paski pokazują te szczyty, jak na zdjęciu, i wynika to z problemu w kodzie, którego nie mogę znaleźć ... Jeśli wstawię inny kadłub poruszający się przeciętnie, pasuje do mojego kadłuba średnia ruchoma, z wyjątkiem tego paska, w którym szczyt się dzieje ...

  2. #2
    może mieć coś wspólnego z faktem, że modyfikujesz tablicę hma, jednocześnie nawiązując do niej za pomocą wywołania imaonarray. Zgaduję, że twój kod wykonuje dość czysty przebieg na początek ... ustawia tablicę hma, wykonuje wywołanie imaonarray do temp. kalcowej, a następnie modyfikuje tablicę hma ... ale wtedy polegasz na indiorcounted aby poradzić sobie tylko z ostatnimi paskamisłupkami, więc od tego momentu (po pierwszym uruchomieniu kodu) twoja tablica hma przechowuje uszkodzone dane, do których odnosi się każde kolejne wywołanie imonararray. nigdy nie zostanie poprawnie ustawiony, tak jak przy pierwszym uruchomieniu, i przechodzi przez całą historię (lub od miejsca, w którym ją otworzymy, z ustawionym wcześniej zestawem historii). lub mówiąc inaczej, myślę, że po zainicjowaniu i uruchomieniu, gdy trochę zakodowałeś tablicę hma, mt4 pobiera kilka nowych pasków, aby zaktualizować historię do aktualnego czasu, wtedy możesz polegać na tablicy szyfrowanej hma dla twoich dalszych obliczeń, ale tylko dla najnowszych barów. działa po raz pierwszy, ponieważ wykonujesz nieco pełną inicjalizację tablicy hma, zanim zepsujesz ją po wywołaniach imaonarray, więc pierwszy zestaw obliczeń jest poprawny, ale kolejne uruchomienia nie resetują danych hma. po pierwszym uruchomieniu kodu tablica hma jest pomieszana przez twoje wywołanie hma [i] = temp, więc wszystkie przyszłe wywołania imaonarray odnoszą się do brzydkich danych hma w tablicy hma od pierwszego uruchomienia kodu. funkcja imaonarray odnosi się do większej liczby ”pasków” w macierzy hma niż tylko do najnowszego paska, ale nigdy nie wrócisz do naprawy danych w tablicy hma, która znajduje się przed pozycją w hierarchii w tablicy hma. po pierwszym przeboju tworzysz pochodną pochodnej.

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Używamy cookies
Używamy cookies, aby jak najlepiej dostosować witrynę do Twoich potrzeb. Kontynuowanie przeglądania tej strony, oznacza zgodę na używanie plików cookies. Aby uzyskać więcej informacji zapoznaj się z naszą Polityką Prywatności.