Open turbaszek opened 5 years ago
Proponuję też na początek zostać przy 3 wskaźnikach:
Oprócz RSI dałbym jeszcze coś drugiego co można na dolnym wykresie rysować (np MACD), żeby nie było nudno
Gdy stary wedge robi się nieaktualny to szukany jest nowy który może nie mieć sensu tak jak tu:
Wystarczy chyba pilnować, żeby nowy nie szukał się "wcześniej" niż stary - jeżeli już coś było to w sumie nas nie boli jak przez jakiś czas nic nowego się nie pojawi. Można też dodać jakiś warunek, żeby nie szukać trójkątów w przeszłości - bo taki co na tym drugim obrazku jest to można było rysować na początku marca, a nie teraz 😄
Zrobiłem wstępną wersją trójkątów z jedną krawędzią poziomą.
Dla przykładu sposób szukania AscendingTriangle
:
_cross_after_last_candle
- sprawdź czy przecinają się za ostatnią świecą (szukamy patternów tylko na przyszłość)_include_enough_points
- sprawdź czy między liniami zawiera się ponad 85% punktów = score
score
Trzeba się zastanowić nad dodatkowym ocenianiem tych setupów np. z użyciem metryki R2.
Plus generowanie info i sprawdzanie starych zapisanych patternów (ale to jak już będą wszystkie trójkąty)
Oprócz tego co zrobiłem to już nic więcej tu nie muszę robić? W sensie nadal rysuję wedge
i to będzie działać?
Tak, będzie tylko jeden pattern typu wedge. Przynajmniej przez najbliższy czas.
@Bombasarkadian pamiętasz o co chodziło z tą całką? Bo teraz jak o tym myślę, to to nie ma sensu xD
Ja policzymy pole od dołu i pole od góry (puste przestrzenie) i je zsumujemy to dostaniemy zawsze to samo (sumę szerokości). A branie średniej z z dwóch sum mnie nie przekonuje 🤔
Chyba chodziło o porównywanie tej przestrzeni między kilkoma potencjalnymi trójkątami
Czyli np. tutaj byśmy chcieli niebieski bo jest "ciaśniej"
Te nazwy coraz bardziej szalone się robią 😃
Te nazwy coraz bardziej szalone się robią 😃
Na szczęście od razu dodaję je do admina, żeby nie trzeba było pamiętać :D
Zmieniłem metryki:
peaks_fit_value: float
= suma odległości górnej lini od 4 ostatnich maksimów + suma odległości dolnej lini od 4 ostatnich minimów
empty_field_value: float
= wspomniana wyżej całka
length: int
= długość od początku do przecięcia się linii
points_between: float
= procent punktów między liniami patternu
I zasada wybierania jest mniej więcej tak:
@staticmethod
def _select_best_setup(setups: [Setup]) -> Setup:
# Sort by number of points between bands
setups.sort(key=lambda s: s.points_between, reverse=True)
setups = setups[:20]
# Sort by fit to peaks
setups.sort(key=lambda s: s.peaks_fit_value)
setups = setups[:4]
# Sort by empty value
setups.sort(key=lambda s: s.empty_field_value)
setups = setups[:2]
# Sort by length
setups.sort(key=lambda s: s.length)
return setups[-1]
Charting
Zamiast jednego ogólnego wedge wyróżnimy: 1) trójkąt górno-prostokątny
up_right_triangle
2) trójkąt dolno-prostokątnydown_right_triangle
3) flagaflag
4) wedgewedge
co więcej powyższa kolejność w pewnym stopniu definiuje już priorytet rysownia.
Szukanie patternu powinno mieć następujący proces:
Tym samym całe analizowanie ceny i jej opis będzie po stronie Core.
Wskaźniki
Ostatni punkt można rozszerzyć również na wskaźniki. Głównie chodziło by o ujednolicenie tokenów do postaci: