PDA

Zobacz pełną wersję : Problem EA



Migwlipk84
12-23-2006 06:43, 06:43
Mam stworzony niestandardowy kryty w oparciu o RSI, daje wyższą wartość RSI z wyższej ramy czasowej ...
I chcę stworzyć na nim bazę EA.
Tak więc w EA używam iCustom do pobierania informacji z tego ...

Problem jest ten:

- Wartość otrzymana z iCustom nie jest dokładna

jeśli ustawię niestandardowe wnętrze na wykresie w trybie wizualnym, poda wartość zgodnie z oczekiwaniami. Ale nie w EA to ja ...

Postanowiłem więc użyć standardowego RSI (może to mój CI).
Ale okazuje się, że robi to samo ....

więc jest tutaj kod, którego używam:
w EA umieściłem to
___
double rsi = iRSI (Symbol (), PERIOD_H4,14, PRICE_CLOSE, getBarShift (PERIOD_H4,0));

Komentarz (rsi:, rsi);
___
//z funkcją

int getBarShift (int timeeframe, int shift) {
podwójny czas = iTime (NULL, 0, shift);
return (iBarShift (NULL, timeeframe, time));
}

A jeśli utworzysz salę z tym ...
powinien dać taki sam wynik ....

Przy okazji korzystam z wykresu 1-godzinnego do przetestowania.

Ale zauważam, że w Komentarzu wartość zmienia się na każdym pasku (ale powinna zmieniać się co 4 takty jak CI)
ale nie na indior (działa świetnie) ...

Wygląda na to, że EA nie jest w stanie dokładnie pobrać wartości RSI 4h ...

jakaś wskazówka na ten temat .....

Dzięki

iresepgycho
02-03-2022 19:59, 19:59
int getBarShift (int timeeframe, int shift) {podwójny czas = iTime (NULL, 0, shift); return (iBarShift (NULL, timeeframe, time)); }
Nie mam czasu, aby przetestować siebie dzisiaj, ale oto co widzę na pierwszy rzut oka ... Dane są przechowywane jako 4-bajtowa liczba całkowita, prawda? Twoja zmienna jest zdefiniowana jako podwójna, więc w rezultacie tracisz dane. Spróbuj zdefiniować czas jako datetime i zobaczyć, co otrzymasz.

Migwlipk84
02-03-2022 21:20, 21:20
Umieściłem tylko to w EA: double rsi = iRSI (NULL, PERIOD_H4, RsiPeriod, PRICE_CLOSE, 0); Komentarz (rsi:, rsi); I tylko to w jednym niestandardowym indiorie podwójnym rsi = iRSI (NULL, PERIOD_H4, RsiPeriod, PRICE_CLOSE, 0); Bufor [0] = rsi; IndiorShortName (rsi); Indior niestandardowy nie pokazuje niczego ... (Bez linii), więc muszę umieścić podwójne rsi = iRSI (NULL, PERIOD_H4, RsiPeriod, PRICE_CLOSE, getBarShift (PERIOD_H4,0)); aby móc zobaczyć linię (I dane są poprawne) Więc jestem pewien, że jest problem z EA, kiedy próbujesz uzyskać dostęp do wyższych ram czasowych (lub jestem w błędzie i kod jest zły) .. Indior robi pracę, ale nie EA ... Czy znasz jakiś problem dotyczący tego rodzaju problemu? Jeśli tak ... to jest duży problem ... wiele EA używa wyższej wartości ramki czasowej ... Więc testowanie nie będzie na pewno ...

Migwlipk84
02-03-2022 22:41, 22:41
Nie mam czasu, aby przetestować siebie dzisiaj, ale oto co widzę na pierwszy rzut oka ... Dane są przechowywane jako 4-bajtowa liczba całkowita, prawda? Twoja zmienna jest zdefiniowana jako podwójna, więc w rezultacie tracisz dane. Spróbuj zdefiniować czas jako datetime i zobaczyć, co otrzymasz.
Twoje prawo, nie powinno być podwójne, ale datetime, ponieważ iTime zwraca datetime ... Pracowałem ciężko ostatniej nocy :-) Ale to niczego nie zmienia ... Dlaczego? Obaj dają tę samą wartość i tak (dobrze lub źle)! są budowane w ten sam sposób ... Będę pisać zarówno EA, jak i CI ... Jeśli ktoś może mi pomóc ... lub powiedzieć, czy jest to normalne zachowanie dla MT4 EA .... Wygląda na to, że EA nie odzyskaj wartość RSI w taki sam sposób jak niestandardowy indior ...

Migwlipk84
02-04-2022 00:02, 00:02
2 Załącznik (-i) Musi zostać przetestowany na wykresie 1,5,15 lub godzinowym ... Dane RSI powinny w każdym momencie dać wartość świecy 4H. Ale nie w tym przypadku ... Tajemnica ...
https://www.forex-instant.com/attachments/1529228730.pngPomóżcie mi ..... Ps .: zauważyłem, że kiedy dojdziemy do końca wykresu, widzimy dobrą wartość RSI ...
https://www.forex-instant.com/attachments/15292287341140873215.mq4
https://www.forex-instant.com/attachments/15292287361044165411.mq4

Migwlipk84
02-04-2022 01:22, 01:22
1 Attachment (s) Jak widzisz EA pokaż mi 60 ... The indoor show me 62 i wiem, że pokaz kryty dobry wynik ...
https://www.forex-instant.com/attachments/1529228730.png

Migwlipk84
02-04-2022 02:43, 02:43
Znaleziono odpowiedź Ponieważ RSI używa PRICE_CLOSE, nie możemy użyć aktualnej wartości świecy, ponieważ zamknięcie nie istnieje i podczas działania EA nie podaje aktualnej wartości tak jak na żywo. Używałem świecy 4H, aby uzyskać wartość rsi na 15 minut, więc jedyną ważną świecą jest 4x4 (15mx4h) 16 lub druga świeca 4H ...

carleta931
02-04-2022 04:04, 04:04
Witaj Zeuzere, Jeśli chcesz użyć poprzedniej wartości na pasku 4h, możesz po prostu użyć: double rsi = iRSI (Symbol (), PERIOD_H4, RsiPeriod, PRICE_CLOSE, 1); a numer rsi powinien być taki sam we wszystkich ramach czasowych, w których umieszczasz swój wykres. (Zasadniczo uruchamiam swoje EA na wykresie 1M, aby uzyskać wszystkie dane) Niestety nie mogłem ci pomóc z aktualną wartością paska, którą chcesz zobaczyć na wykresie ..... Może możesz spróbować użyć Odśwież () .. ... ale nie jestem pewien, czy to zadziała, czy nie. Nadzieja, która pomaga.

Migwlipk84
02-04-2022 05:25, 05:25
Jeśli chcesz użyć poprzedniej wartości na pasku 4h
Nie, to był mój problem ... W prawdziwym ruchu na żywo, muszę użyć aktualnego paska 4h, ale ponieważ nie dałoby to poprawnej wartości w Expert Adviser podczas testowania systemu, to był mój problem ... muszę używać go inaczej w EA, więc muszę użyć Opóźnionego paska lub da fałszywy wynik ... I to jest smutne ... Wyobraź sobie, jak dużo ludzi buduje EA (Każdy wskaźnik, którego użycie blisko obliczone daje fałszywy wynik). Kiedy testujesz, chcesz symulować bazę kupna i sprzedaży w twoim systemie ... W EA, nie mam wyboru, aby zrobić mały offset, aby uzyskać dobry wynik. Więc muszę użyć funkcji isTesting (), aby wiedzieć, czy jestem na żywo, czy testowałem i używam podwójnego rsi = iRSI (Symbol (), PERIOD_H4, RsiPeriod, PRICE_CLOSE, 0 Offset); Ps .: Wszyscy, którzy budują EA, zachowajcie ostrożność, jeśli użyjecie bliskiej wartości ... Istnieją również inne funkcje, więc bieżąca wartość nie jest dokładna.