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, 23:22
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ę.
Po to masz Print().
Robisz sprawdzenia po drodze co ci wyrzuca kod, i szukasz błędu.
To jest normalna praca programisty, bo nigdy nie przewidzisz wszystkiego z góry.
Wszystko wychodzi podczas testów kodu.
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, 00:01

Po to masz Print().
Robisz sprawdzenia po drodze co ci wyrzuca kod, i szukasz błędu.
To jest normalna praca programisty, bo nigdy nie przewidzisz wszystkiego z góry.
Wszystko wychodzi podczas testów kodu.
Aż wróciłem tutaj, bo zmieniłem konstrukcję EA, wkleiłem składowe EA od nowa (jeszcze nie wszystkie) i przy okazji posprawdzałem SL i TP w print.
O dziwo teraz działa wszystko tak jak chciałbym.

Problem był na poziomie konstrukcji pętli,
Zrobiłem jak mówiłem: dwie pętle while, jedna dla OrdersTotal>1, druga dla <1.
Nie chcę nawet sprawdzać co było wcześniej, skoro teraz działa, pewnie jakoś gryzły się warunki.

Pardon, że przychodzę tutaj z duperelami, ale uczę się niewiele ponad tydzień a niecierpliwy jestem.
Działam dalej, bo podjarałem się, że coś wychodzi, a jeszcze kilka godzin temu myślałem, że serio sam nie dam rady.


EDIT:
Już wiem! Nie znormalizowałem tego. nastąpiła taka zmiana, że liczbę punktów od SL muszę zapisywać w postaci uwzględniającej miejsca po przecinku. Bo w inputs dałem double a nie int.
Ale teraz problem zniknął, zastanawia mnie czy brak tego NORMALIZE spowoduje jakiekolwiek problemy w przyszłości?


EDIT2:
Zresztą, nawet if/else wystarczy na dobrą sprawę.
Podoba mi się to bardzo, że są tutaj bardzo szerokie możliwości - dla jednego zagadnienia może być bardzo wiele rozwiązań

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 »

Mistyfikator pisze:
29 kwie 2022, 00:15

Ale teraz problem zniknął, zastanawia mnie czy brak tego NORMALIZE spowoduje jakiekolwiek problemy w przyszłości?
Wszystkie ceny muszą być znormalizowane. Jeśli cena będzie miała więcej miejsc po przecinku, niż przewiduje specyfikacja instrumentu, to transakcja nie zostanie wykonana.

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, 00:01

Po to masz Print().
Robisz sprawdzenia po drodze co ci wyrzuca kod, i szukasz błędu.
To jest normalna praca programisty, bo nigdy nie przewidzisz wszystkiego z góry.
Wszystko wychodzi podczas testów kodu.
Ja rzadko używam Print(), zamiast tego tworzę sobie na wykresie tymczasowe etykiety(OBJ_LABEL), mam je cały czas na widoku, widzę jak się zmieniają podczas działania programu i nie muszę co chwila zaglądać do Terminala.

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:
29 kwie 2022, 09:55


Wszystkie ceny muszą być znormalizowane. Jeśli cena będzie miała więcej miejsc po przecinku, niż przewiduje specyfikacja instrumentu, to transakcja nie zostanie wykonana.
Na razie mi działa na instrumencie na którym ma być uruchomiony
Ustawia SL i TP tak jak zapisałem...

I to jest zastanawiające, bo po normalizacji nie działało

Ale dzięki, skoro piszesz "wszystkie" to spróbuję tez dalej w kodzie, bo przeliczyłem się - jednak EA nie wykonuje jeszcze wszystkiego prawidłowo

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, 10:10
ninjaproject pisze:
29 kwie 2022, 00:01

Po to masz Print().
Robisz sprawdzenia po drodze co ci wyrzuca kod, i szukasz błędu.
To jest normalna praca programisty, bo nigdy nie przewidzisz wszystkiego z góry.
Wszystko wychodzi podczas testów kodu.
Ja rzadko używam Print(), zamiast tego tworzę sobie na wykresie tymczasowe etykiety(OBJ_LABEL), mam je cały czas na widoku, widzę jak się zmieniają podczas działania programu i nie muszę co chwila zaglądać do Terminala.
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.
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 »

Mistyfikator pisze:
29 kwie 2022, 10:30
grzegrzyw pisze:
29 kwie 2022, 09:55


Wszystkie ceny muszą być znormalizowane. Jeśli cena będzie miała więcej miejsc po przecinku, niż przewiduje specyfikacja instrumentu, to transakcja nie zostanie wykonana.
Na razie mi działa na instrumencie na którym ma być uruchomiony
Ustawia SL i TP tak jak zapisałem...

I to jest zastanawiające, bo po normalizacji nie działało

Ale dzięki, skoro piszesz "wszystkie" to spróbuję tez dalej w kodzie, bo przeliczyłem się - jednak EA nie wykonuje jeszcze wszystkiego prawidłowo
Nie wszystkie, wszystkie, tylko ceny zapodawane do OrderSend() i OrderModify() muszą być NormalizeDouble().

Kod na pewno prawidłowo wykonuje to, co ty zakodowałeś.
Natomiast, pisałem już, że kod nie ma wpływu na faktyczną realizację zlecenia.
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, 11:10

Nie wszystkie, wszystkie, tylko ceny zapodawane do OrderSend() i OrderModify() muszą być NormalizeDouble().

Kod na pewno prawidłowo wykonuje to, co ty zakodowałeś.
Natomiast, pisałem już, że kod nie ma wpływu na faktyczną realizację zlecenia.
Postęp jest. Do pewnego momentu działa tak jak chcę.

Cuda się dzieją od etapu, gdzie jest otwarta jedna pozycja i ma przestawić SL na BE a następnie otworzyć kolejne zlecenia.

Ale postaram się dojść do tego, tak jak rozwiązałem wcześniejsze problemy. Bankowo jakiś błąd w działaniu tej pętli, która oblicza bierzące poziomy i porządkuje zlecenia.

Na razie testuję na bierzących notowaniach, bo tester mi nie odpalił czegos tej strategii

***

EDIT: Z tego co się domyślam, muszę uporządkować zmienne, które znajdują się w pętli, gdzie licznikiem jest OrdersTotal.
Ale do tego trzeba mieć odpowiedni flow, wczoraj kminiłem przez cały dzień np, a dopiero olśniło mnie w nocy i znalazłem rozwiązanie. W tej dziedzinie to trzeba mieć praktykę po prostu i tyle

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

Nie wszystkie, wszystkie, tylko ceny zapodawane do OrderSend() i OrderModify() muszą być NormalizeDouble().

Kod na pewno prawidłowo wykonuje to, co ty zakodowałeś.
Natomiast, pisałem już, że kod nie ma wpływu na faktyczną realizację zlecenia.
Postęp jest. Do pewnego momentu działa tak jak chcę.

Cuda się dzieją od etapu, gdzie jest otwarta jedna pozycja i ma przestawić SL na BE a następnie otworzyć kolejne zlecenia.

Ale postaram się dojść do tego, tak jak rozwiązałem wcześniejsze problemy. Bankowo jakiś błąd w działaniu tej pętli, która oblicza bierzące poziomy i porządkuje zlecenia.

Na razie testuję na bierzących notowaniach, bo tester mi nie odpalił czegos tej strategii

***

EDIT: Z tego co się domyślam, muszę uporządkować zmienne, które znajdują się w pętli, gdzie licznikiem jest OrdersTotal.
Ale do tego trzeba mieć odpowiedni flow, wczoraj kminiłem przez cały dzień np, a dopiero olśniło mnie w nocy i znalazłem rozwiązanie. W tej dziedzinie to trzeba mieć praktykę po prostu i tyle
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.

Praktykę trzeba mieć, ale też trzeba mieć wiedzę, bo jeszcze wielu rzeczy nie sprawdzasz, które powinno się sprawdzać.
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, 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.

ODPOWIEDZ