Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Mistyfikator pisze:
28 kwie 2022, 11:43
ninjaproject pisze:
28 kwie 2022, 08:19
Mistyfikator pisze:
28 kwie 2022, 01:08

Kod: Zaznacz cały


while(OrdersTotal<1)
{//tu zaczynamy obliczenia wskaźników
}
Właśnie!
Intrygowało mnie to Magic Number!
Miałem nadzieję, że to jest to :D
To while jest do kitu.
Ja napisałem sobie taką funkcję OrdersTotalPerSymbol().
Oczywiście w niej mam wszystkie warunki, według których chcę filtrować pozycje.
No bo, OrdersTotal() to liczba wszystkich pozycji pływających, więc zasadniczo nieprzydatne to jest, jeżeli EA ma obsługiwać tylko swoje transakcje.
Inaczej mówiąc, OrdersTotal() jest potrzebne, żeby przeszukać wszystkie otwarte pozycje, ale trzeba je przefiltrować.

Poza tym, to EA już działa w pętli, która jest wywoływana OnTick(), więc ono ma robić obliczenia wskaźników OnTick(). Ta pętla while jest zbędna w tym miejscu.

Transakcji nie obsłużysz inaczej niż OnTick(), więc nie ma sensu, żeby wskaźniki były liczone, kiedy ticków nie ma, np. w OnTimer().
EA ma przefiltrować wszystkie moje otwarte pozycje, celem sprawdzenia, czy ich wartość SL jest większa od ceny otwarcia. Wtedy otwiera kolejną pozycję, ale SL>Openprice jest jedynym warunkiem otwarcia 2, 3, 4, 5...itd pozycji

Ale zanim to zrobi, ma sprawdzic czy liczba otwartych pozycji jest mniejsza od 1.
Bo jeżeli jest mniejsza od 1, to jedynym zadaniem EA jest obliczanie SMA i czekanie na sygnał kupna/sprzedaży. Dopiero brak otwartych pozycji powinien rozpocząć obliczanie średnich kroczących. O ile to jest konieczne, ale mówiłeś coś pod wątkiem z mojego dziennika o wysyłąniu zapytania o cenę do brokera, tak więc pomyślałęm o rozwiązaniu, które to ograniczy.
Zapytania o cenę to OrderSend() i OrderModify() i OrderClose().
OrderModify() może generować najwięcej zapytań w opcji Trailing Stop.
Poza tym, to wszelkie obliczenia bazują zawsze na danych historycznych w MT4, no i tickowych na świecy bieżącej. Nie widzę żadnej potrzeby dla takiej pętli while, a funkcję liczącą transakcje otwarte stosuję dla otwierania transakcji pod zadanym warunkiem.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

Z drugiej strony, nie wiem, czy to co opisałem jest potrzebne, bo jeśli SL będzie większy od open price, to i tak będzie nad średnimi kroczącymi...

Zastanawiam się czy zrobić to tak jakoś, prościej:

if(OrdersTotal<1)||(aStopLoss>aOpenPrice)||(bStopLoss<bOpenPrice),

aStopLoss jest do BUY, bStopLoss do SELL. Tu pojawia się problem, aby w warunku były uwzględnione wszystkie otwarte pozycje. Do tej pory tego nie miałem, bo właśnie byłem przekonany że to onTick liczy w pętli i bierze pod uwagę ostatnią pozycję.
A EA po uruchomieniu nie przestawiał mi SL na BE+ niestety, wtedy się zreflektowałem, że może tym pozycjom trzeba nadać numery, czy coś.


EDIT: Hmm OrderModify - faktycznie może to być to. Nie znam funkcji tego języka po prostu jeszcze, trzeba bezie przestudiować całą dokumentację od deski do deski

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Mistyfikator pisze:
28 kwie 2022, 12:03
Z drugiej strony, nie wiem, czy to co opisałem jest potrzebne, bo jeśli SL będzie większy od open price, to i tak będzie nad średnimi kroczącymi...

Zastanawiam się czy zrobić to tak jakoś, prościej:

if(OrdersTotal<1)||(aStopLoss>aOpenPrice)||(bStopLoss<bOpenPrice),

aStopLoss jest do BUY, bStopLoss do SELL. Tu pojawia się problem, aby w warunku były uwzględnione wszystkie otwarte pozycje. Do tej pory tego nie miałem, bo właśnie byłem przekonany że to onTick liczy w pętli i bierze pod uwagę ostatnią pozycję.
A EA po uruchomieniu nie przestawiał mi SL na BE+ niestety, wtedy się zreflektowałem, że może tym pozycjom trzeba nadać numery, czy coś.


EDIT: Hmm OrderModify - faktycznie może to być to. Nie znam funkcji tego języka po prostu jeszcze, trzeba bezie przestudiować całą dokumentację od deski do deski
Bo to nie jest takie proste.
Kod nie wie sam z siebie, co ma zrobić - ty musisz po kolei mu rozkazać.
W celu przesunięcia SL potrzebujesz zrobić to samo, co ci napisałem wyżej (kod).
Czyli, w pętli for() przeszukać wszystkie otwarte pozycje spełniające podstawowe warunki, potem zrobić OrderModify() dla warunków przesunięcia SL.
Tu masz wszystkie parametry pozycji, które możesz badać:
https://docs.mql4.com/trading/orderopenprice
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
28 kwie 2022, 12:21

Bo to nie jest takie proste.
Kod nie wie sam z siebie, co ma zrobić - ty musisz po kolei mu rozkazać.
W celu przesunięcia SL potrzebujesz zrobić to samo, co ci napisałem wyżej (kod).
Czyli, w pętli for() przeszukać wszystkie otwarte pozycje spełniające podstawowe warunki, potem zrobić OrderModify() dla warunków przesunięcia SL.
No właśnie się o tym dowiedziałem, a byłem przekonany, że wystarczy opisać prostymi warunkami.
Ale skoro już wiem, że wyszukać w pętli, a później zmodyfikować, to przynajmniej jest punkt zaczepienia, żeby to zrealizować.

Ech, szkoda że nie ruszyłem tematu wcześniej, skoro już spekuluję dwa lata i moja strategia jest strategią automatyczną. Zaraz koniec tygodnia, później weekend majowy a tu jeszcze nie działa jak powinno :D
Ale z drugiej strony mam jeszcze czas, zostaje mi 2-3 maja, bo do roboty idę 3-go na nockę dopiero. Całe szczęście U.S.Ańczycy nie mają długiego weekendu na początku maja

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

Czacha mi ostro paruje, choć dzisiaj zero postępu jeśli chodzi o ilość kodu i postęp w działaniu programu.
Prawdopodobnie skończy się na napisaniu wszystkiego od nowa, z przeklejeniem tego, co już było gotowe i działa.
Rozkmina jest ciężka dla takich antytalentów informatyczno-matematycznych, ale podstawa to prawidłowe rozplanowanie działania EA - zasadniczo po co tu wykonywać wszystkie działania na każdym tiku, jeśli strategia tego nie wymaga?

Ale zarysowuje się pewien pomysł:

1 pętla while, gdzie warunek jest OrdersTotal<1 - to do obliczania wskaźników, żeby nie gnębić brokera ciągłymi zapytaniami o ceny. Miałeś rację Ninjaproject, to może mieć znaczenie jak odpalę na koncie REAL. Widzę to po działaniu EA na koncie DEMO, gdzie przełączenie TF sprawia już kłopot . Roboczo to nazwę TRYB OCZEKIWANIA NA SYGNAŁ

2 pętla while, gdzie warunek to OrdersTotal>=1 - tutaj wszelkie operacje związane z poziomami SL, TP i BE+. To jest TRYB PIRAMIDOWANIA.


Żeby człowiek zajmował się dwcześniej programowaniem, to wpadanie na takie pomysły nie zajmowałoby tygodnia, tylko kilka minut.
Ale tematyka jest jednak bardzo pasjonująca, a podróż tysiąca mil zaczyna się od pierwszych kroków.

grzegrzyw
Gaduła
Gaduła
Posty: 335
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

Mistyfikator pisze:
28 kwie 2022, 20:19

1 pętla while, gdzie warunek jest OrdersTotal<1 - to do obliczania wskaźników, żeby nie gnębić brokera ciągłymi zapytaniami o ceny. Miałeś rację Ninjaproject, to może mieć znaczenie jak odpalę na koncie REAL. Widzę to po działaniu EA na koncie DEMO, gdzie przełączenie TF sprawia już kłopot .
Przy obliczaniu wskaźników nie wysyłasz do brokera zapytań o cenę, Darek już Ci to wyjaśniał kilka postów wcześniej. Wskaźniki są wyliczane na podstawie danych historycznych i ewentualnie ticków bieżącej świecy.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

grzegrzyw pisze:
28 kwie 2022, 20:46

Przy obliczaniu wskaźników nie wysyłasz do brokera zapytań o cenę, Darek już Ci to wyjaśniał kilka postów wcześniej. Wskaźniki są wyliczane na podstawie danych historycznych i ewentualnie ticków bieżącej świecy.
Oki, pomysł jednak zostanie.
Może tak zadziała

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

Po tygodniu "nauki" widzę, że problemy pojawiają się tam, gdzie bym ich się nie spodziewał, a nawet czasem nie mam pojęcia dlaczego coś nie działa. I to drugie jest najbardziej zniechęcające. No bo jak to, powinno działać a nie działa. Ale zależy mi na tej dziedzinie, więc wracam do dokumentacji. Jak bedę tutaj pytał o każdą drobnostkę to @ninjaproject stworzysz tutaj "MQL4 dla początkujących" :D :D :D

Ale oczywiście będę tutaj pytał, jak pojawią się jakieś zagadnienia po drodze. Content na polskojęzycznych stronach forexowych się przyda.
Z tym, że najpierw wrócę do podstaw, bo widzę że moje problemy wynikają głównie z niezrozumienia podstawowych zasad.

Normalnie zleciłbym aż napisanie EA :D , ale karygodnie byłoby nie skorzystać z takiej możliwości nauki programowania na podstawie własnego systemu.
Ostatnio zmieniony 28 kwie 2022, 23:21 przez Mistyfikator, łącznie zmieniany 1 raz.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Powiem tak:
Jeżeli dostałeś gotowca na wzór, i nie rozumiesz co czytasz, to jak możesz sam napisać coś, co działać będzie?
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
28 kwie 2022, 23:18
Powiem tak:
Jeżeli dostałeś gotowca na wzór, i nie rozumiesz co czytasz, to jak możesz sam napisać coś, co działać będzie?
Niestety nie mam gotowca.
Gdybym miał gotowca, to bym tego nie pisał.
Bardziej chodzi o sklecenie czegoś z wielu gotowców tak, żeby to działało,
A niestety nie działają podstawowe rzeczy, które powinny, np prawidłowo zadeklarowany TP ???? No i co z tym dalej zrobić

Ale mniejsza o to, zamiast siedzieć tu na forum idę w dokumentację.

ODPOWIEDZ