Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

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

Nieprzeczytany post autor: grzegrzyw »

ninjaproject pisze:
29 kwie 2022, 11:08

Print() to jedna linijka kodu.
Etykieta to cały kłopot i jeszcze trzeba obiekty usuwać.
Naprawdę prościej jest patrzeć w zakładce Strategie...
Terminal może być wtedy otwarty cały czas.
U mnie etykieta to też tylko jedna linijka kodu np:

Kod: Zaznacz cały

   _(Prefix+" Y1").type(OBJ_LABEL). x(110).y(420).corner(1).text("Buy Lot = " + DoubleToString(vBL(),2)).fSize(9).Kolor(C3);
Wszystko mam zdefiniowane w pliku *.mqh, nie muszę zaglądać do zakładki Strategie, etykiety są widoczne w Testerze i mogę na bieżąco podglądać wartości moich zmiennych, a Print() przez tester nie jest obsługiwany. Kiedy etykiety nie są już potrzebne to je usuwam lub zmieniam na inne, kłopot minimalny a zysk dla mnie konkretny, każdy ma prawo mieć swoje metody pracy.

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:
29 kwie 2022, 11:45
ninjaproject pisze:
29 kwie 2022, 11:33

Ja bym napisał osobne funkcje dla poszczególnych czynności.
Np. ExecuteBuyOrder(), ExecuteSellOrder(), DoBE(), DoTS(), CheckBuyConditions(), CheckSellConditions(), i potem tylko je wykorzystywał.
Podstawą programowania jest Algorytm, w sensie blokowego rozpisania działania naszego pomysłu.
Ja tego nie robię, bo zasadniczo mam pomysł w głowie i wiem już jak to wszystko działa.

Tu masz na myśli zdefiniowanie zupełnie nowych funkcji? Bo nie widzę takich w dokumentacji

Tego jeszcze nie robiłem, ale może faktycznie to jest dobry pomysł?

Choć z drugiej strony, właśnie widzę że poległem na numerowaniu poszczególnych zleceń i definiowaniu kolejnych SL i BE wraz z kolejnymi powtórzeniami pętli. Tutaj będzie trzeba się jeszcze zastanowić


EDIT Czy dobrym wyjściem będą tablice? Może w taki oto sposób zdefiniować kolejne wartości SL i BE dla poszczególnych pozycji pozycji otwieranych w pętli.
Po jakie licho tablice?
Z tego co zrozumiałem, potrzebujesz tylko w pętli zbadać cenę OrderStopLoss() względem ceny OrderOpenPrice() i albo otworzyć nowe zlecenie, albo nie.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

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 »

grzegrzyw pisze:
29 kwie 2022, 12:08
ninjaproject pisze:
29 kwie 2022, 11:08

Print() to jedna linijka kodu.
Etykieta to cały kłopot i jeszcze trzeba obiekty usuwać.
Naprawdę prościej jest patrzeć w zakładce Strategie...
Terminal może być wtedy otwarty cały czas.
U mnie etykieta to też tylko jedna linijka kodu np:

Kod: Zaznacz cały

   _(Prefix+" Y1").type(OBJ_LABEL). x(110).y(420).corner(1).text("Buy Lot = " + DoubleToString(vBL(),2)).fSize(9).Kolor(C3);
Wszystko mam zdefiniowane w pliku *.mqh, nie muszę zaglądać do zakładki Strategie, etykiety są widoczne w Testerze i mogę na bieżąco podglądać wartości moich zmiennych, a Print() przez tester nie jest obsługiwany. Kiedy etykiety nie są już potrzebne to je usuwam lub zmieniam na inne, kłopot minimalny a zysk dla mnie konkretny, każdy ma prawo mieć swoje metody pracy.
Teraz akurat nie mam okazji ani ochoty sprawdzać, ale nie przypominam sobie, żebym miał taki problem w testerze... Ale, dobre i twoje rozwiązanie! :564:
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:
29 kwie 2022, 12:15
Po jakie licho tablice?
Z tego co zrozumiałem, potrzebujesz tylko w pętli zbadać cenę OrderStopLoss() względem ceny OrderOpenPrice() i albo otworzyć nowe zlecenie, albo nie.
Bo otwartych zleceń może być X, a więcej niż 2.
Każde z nich ma mieć osobny poziom SL>BE (docelowo).

Z tego co zaobserwowałem, mają być osobne zmienne dla każdego zlecenia, bo inaczej EA będzie przesuwało SL poprzednich zleceń wraz z kolejnymi powtórzeniami pętli. Wobec tego, wraz z działaniem pętli, EA powinno definiować kolejne zmienne tj: BE_1, BE_2, Be_3... itd Chyba, że są inne rozwiązania?

Bo tego nie rozumiem, na początku myślałem, że będzie łatwiej i pętla będzie przestawiać poziomy, a później je zostawiać.
No ale na chłopski rozum, każde zlecenie A, B, C, ma obecnie przyporządkowaną u mnie jedną zmienną odpowidzialną za te poziomy.
Nie mogę więc nadawać z każdym działaniem pętli innej wartości dla tej samej zmiennej, bo EA przestawi mi wszystkie SL.

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:
29 kwie 2022, 12:15
Po jakie licho tablice?
Z tego co zrozumiałem, potrzebujesz tylko w pętli zbadać cenę OrderStopLoss() względem ceny OrderOpenPrice() i albo otworzyć nowe zlecenie, albo nie.
Bo otwartych zleceń może być X, a więcej niż 2.
Każde z nich ma mieć osobny poziom SL>BE (docelowo).

Z tego co zaobserwowałem, mają być osobne zmienne dla każdego zlecenia, bo inaczej EA będzie przesuwało SL poprzednich zleceń wraz z kolejnymi powtórzeniami pętli. Wobec tego, wraz z działaniem pętli, EA powinno definiować kolejne zmienne tj: BE_1, BE_2, BE_3... itd Chyba, że są inne rozwiązania?

Bo tego nie rozumiem, na początku myślałem, że będzie łatwiej i pętla będzie przestawiać poziomy, a później je zostawiać.
No ale na chłopski rozum, każde zlecenie A, B, C, ma obecnie przyporządkowaną u mnie jedną zmienną odpowiedzialną za te poziomy.
Nie mogę więc nadawać z każdym działaniem pętli innej wartości dla tej samej zmiennej, bo EA przestawi mi wszystkie SL.

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:
29 kwie 2022, 12:29
ninjaproject pisze:
29 kwie 2022, 12:15
Po jakie licho tablice?
Z tego co zrozumiałem, potrzebujesz tylko w pętli zbadać cenę OrderStopLoss() względem ceny OrderOpenPrice() i albo otworzyć nowe zlecenie, albo nie.
Bo otwartych zleceń może być X, a więcej niż 2.
Każde z nich ma mieć osobny poziom SL>BE (docelowo).

Z tego co zaobserwowałem, mają być osobne zmienne dla każdego zlecenia, bo inaczej EA będzie przesuwało SL poprzednich zleceń wraz z kolejnymi powtórzeniami pętli. Wobec tego, wraz z działaniem pętli, EA powinno definiować kolejne zmienne tj: BE_1, BE_2, BE_3... itd Chyba, że są inne rozwiązania?

Bo tego nie rozumiem, na początku myślałem, że będzie łatwiej i pętla będzie przestawiać poziomy, a później je zostawiać.
No ale na chłopski rozum, każde zlecenie A, B, C, ma obecnie przyporządkowaną u mnie jedną zmienną odpowiedzialną za te poziomy.
Nie mogę więc nadawać z każdym działaniem pętli innej wartości dla tej samej zmiennej, bo EA przestawi mi wszystkie SL.
Byś mi musiał dokładnie rozpisać co chcesz realizować, to bym wtedy mógł pomyśleć nad rozwiązaniem praktycznym. Jeżeli pętla znajduje warunek zgodnie z którym ma przestawić SL, to je przestawi. Ty musisz napisać warunek, kiedy ma nie przestawiać już.
Jeżeli chcesz mieć różne poziomy BE dla różnych pozycji, to też można albo zdefiniować, albo obliczyć, jeżeli jest jakaś reguła.
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:
29 kwie 2022, 12:33

Byś mi musiał dokładnie rozpisać co chcesz realizować, to bym wtedy mógł pomyśleć nad rozwiązaniem praktycznym.

Okej, najpierw jednak pomyślę jeszcze samodzielnie, bo podsunąłeś pomysł ze zdefiniowaniem własnych funkcji.
Trzeba zajrzeć do odpowiedniego rozdziału, który o tym mówi.
Potrzebuję troszkę się douczyć. Czyli mogę sobie samodzielnie zdefiniować, co EA ma sprawdzić celem wykonania określonego zadania?
edit: Nie trzeba korzystać tylko z gotowych funkcji? Jeśli tak jest, to bardzo mi się podoba ten język

Problem mam też na etapie testów strategii, bo obecnie opierałem się tylko o działanie na bieżącym wykresie.
Jak to wrzuciłem do testów to cos było nie halo...
Nic nie ruszyło nawet.

A dzisiaj po 23 mógłbym jeszcze siedzieć teoretycznie nad robotą, tak do 2-3 w nocy. Z tym, ze musiałbym mieć możliwość sprawdzenia działania tego co naskrobałem.

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:
29 kwie 2022, 12:40
ninjaproject pisze:
29 kwie 2022, 12:33

Byś mi musiał dokładnie rozpisać co chcesz realizować, to bym wtedy mógł pomyśleć nad rozwiązaniem praktycznym.

Okej, najpierw jednak pomyślę jeszcze samodzielnie, bo podsunąłeś pomysł ze zdefiniowaniem własnych funkcji.
Trzeba zajrzeć do odpowiedniego rozdziału, który o tym mówi.
Potrzebuję troszkę się douczyć. Czyli mogę sobie samodzielnie zdefiniować, co EA ma sprawdzić celem wykonania określonego zadania?
edit: Nie trzeba korzystać tylko z gotowych funkcji? Jeśli tak jest, to bardzo mi się podoba ten język

Problem mam też na etapie testów strategii, bo obecnie opierałem się tylko o działanie na bieżącym wykresie.
Jak to wrzuciłem do testów to cos było nie halo...
Nic nie ruszyło nawet.

A dzisiaj po 23 mógłbym jeszcze siedzieć teoretycznie nad robotą, tak do 2-3 w nocy. Z tym, ze musiałbym mieć możliwość sprawdzenia działania tego co naskrobałem.
Z testerem strategii w MT4 jest jeden zasadniczy problem - nie działa multiinterwałowo, niestety.
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:
29 kwie 2022, 13:10

Z testerem strategii w MT4 jest jeden zasadniczy problem - nie działa multiinterwałowo, niestety.

Dobrze wiedzieć! Choć nie powiem, szkoda że nie będzie można posprawdzać danych historycznych...

Za to do testów wystarczy, najwyżej zostawi się jeden interwał w warunkach otwarcia pozycji.
Ważne, żeby sprawdzić działanie AutoBreakeven.
Znaczy się, już coś tam przesuwa. Problem mam w tym momencie, że jak spełniony zostanie warunek ordersTotal>=1, to otwiera mi kilka pozycji naraz, nie czekając na SL>BE.

Ale już widzę o co idzie: osobne zmienne dla każdej pozycji rozwiążą temat.
Obecnie EA zmienia Sl wraz z każdym tikiem dla każdej pozycji

Jak już kompletnie nie znajdę rozwiązania to wkleję ten fragment kodu

Edit; Może faktycznie tablice się sprawdzą, albo napisanie nowej funkcji, jak pisałeś wcześniej

Edit2 Albo kolejny warunek OrdersTotal w pętli

Edit3 gdyby chodziło o zaprogramowanie TrailingStop, to już byłoby gotowe :D

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

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

Nieprzeczytany post autor: Mistyfikator »

Są jakiekolwiek szanse, że tester strategii MT4 będzie działał prawidłowo na historii, czy tracę czas?
Coś, co działało na aktualnym wykresie, na backtestach zwraca nieprawidłową wartość?

Wyskakuje błąd OrderSend130, to jest zły SL.
Próbowałem z normalizacją i bez.
oczywiście usunąłem multiTF ze strategii

ODPOWIEDZ