Wszystkie pytania dozwolone początkujących programistów
-
- Pasjonat
- Posty: 932
- Rejestracja: 05 lip 2021, 20:35
Re: Wszystkie pytania dozwolone początkujących programistów
Zetknięcie z programowaniem obiektowym i tak było nieuniknione, tym bardziej fajnie że udało się przy okazji MQL4 i tej standardowej biblioteki. Takie graficzne elementy menu to bardzo dobry przykład do nauki: https://www.mql5.com/en/docs/standardlibrary/controls.
Samo zetknięcie się gotowymi klasami i z całą hierarchią tej rodziny to już bardzo wartościowa lekcja.
A tu jeszcze trzeba stworzyć kolejne klasy, zawierające w sobie cechy swoich poprzedników. WOW, jestem pod wrażeniem, jak to wszystko zostało rozwiązane.
Chociaż te standardowe OBJ_BUTTON też mają swój urok, ja tam lubię taki vintage'owy design.
Ale nie w tym rzecz, tam gdzie się kończy Ansi C, a zaczyna C++, zaczyna się również bardzo pokaźny rozdział języka.
Może to doprowadzić nawet do momentu zwątpienia...
Ale co tam, nie taki diabeł straszny. Ta cała wiedza od początku nie wygląda na łatwą, wraz z upływem czasu i z praktyką rozjaśnia się dopiero bardzo dużo.
Samo zetknięcie się gotowymi klasami i z całą hierarchią tej rodziny to już bardzo wartościowa lekcja.
A tu jeszcze trzeba stworzyć kolejne klasy, zawierające w sobie cechy swoich poprzedników. WOW, jestem pod wrażeniem, jak to wszystko zostało rozwiązane.
Chociaż te standardowe OBJ_BUTTON też mają swój urok, ja tam lubię taki vintage'owy design.
Ale nie w tym rzecz, tam gdzie się kończy Ansi C, a zaczyna C++, zaczyna się również bardzo pokaźny rozdział języka.
Może to doprowadzić nawet do momentu zwątpienia...
Ale co tam, nie taki diabeł straszny. Ta cała wiedza od początku nie wygląda na łatwą, wraz z upływem czasu i z praktyką rozjaśnia się dopiero bardzo dużo.
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
mam problem z wykorzystaniem enum. Mianowicie:
Chciałbym stworzyć panel z opcjami do wyboru tylko Tak,Nie
np.
enum ENUM_X1 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X2 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X3 {Tak,Nie};
extern ENUM_X1=Tak;
niestety wyskakuje błąd, że Tak,Nie już wykorzystane...
'Tak' - enumerator identifier already defined
'Nie' - enumerator identifier already defined
Jakiś pomysł jak to obejść? Mogę to zrobić na zasadzie Tak,Tak1,Tak2 itd., ale mi się to nie podoba
mam problem z wykorzystaniem enum. Mianowicie:
Chciałbym stworzyć panel z opcjami do wyboru tylko Tak,Nie
np.
enum ENUM_X1 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X2 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X3 {Tak,Nie};
extern ENUM_X1=Tak;
niestety wyskakuje błąd, że Tak,Nie już wykorzystane...
'Tak' - enumerator identifier already defined
'Nie' - enumerator identifier already defined
Jakiś pomysł jak to obejść? Mogę to zrobić na zasadzie Tak,Tak1,Tak2 itd., ale mi się to nie podoba
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
No niestety, nie można wielokrotnie definiować enum takimi samymi zmiennymi, ale można zrobić tak:Szymon_P pisze: ↑20 wrz 2022, 10:23Witam,
mam problem z wykorzystaniem enum. Mianowicie:
Chciałbym stworzyć panel z opcjami do wyboru tylko Tak,Nie
np.
enum ENUM_X1 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X2 {Tak,Nie};
extern ENUM_X1=Tak;
enum ENUM_X3 {Tak,Nie};
extern ENUM_X1=Tak;
niestety wyskakuje błąd, że Tak,Nie już wykorzystane...
'Tak' - enumerator identifier already defined
'Nie' - enumerator identifier already defined
Jakiś pomysł jak to obejść? Mogę to zrobić na zasadzie Tak,Tak1,Tak2 itd., ale mi się to nie podoba
Kod: Zaznacz cały
#property strict
enum ENUM_X1
{
X1_Tak, // Tak
X1_Nie, // Nie
};
enum ENUM_X2
{
X2_Tak, // Tak
X2_Nie, // Nie
};
enum ENUM_X3
{
X3_Tak, // Tak
X3_Nie, // Nie
};
input ENUM_X1 OpcjaX1 = X1_Tak;
input ENUM_X2 OpcjaX2 = X2_Tak;
input ENUM_X3 OpcjaX3 = X3_Tak;
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Dziękuję, dokładnie o to chodziło. To co jest w kodzie to mi nie przeszkadza.Właśnie chodziło to, żeby w polach wyboru było "ładniej".
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Tylko, że w sumie nie potrzebujesz 3-ch enum, wystarczy 1-dno:
Kod: Zaznacz cały
enum ENUM_TAK_NIE
{
Tak,
Nie,
};
input ENUM_TAK_NIE Opcja1 = Tak;
input ENUM_TAK_NIE Opcja2 = Tak;
input ENUM_TAK_NIE Opcja3 = Tak;
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
mam pytanie odnośnie iBarShift.
Do obliczeń potrzebny mi nr świecy z konkretnej godziny więc zapisałem to w taki sposób:
int Nr_Swiecy =iBarShift(NULL,PERIOD_M1,T1);
Problem pojawia się np. w momencie gdy T1=00:00 i jest np. poniedziałek. Zdarza się tak, że rynek wystartuje np. o 00:06.
Pytanie może wydawać się głupie, ale czy po modyfikacji na taki zapis:
int Nr_Swiecy =iBarShift(NULL,PERIOD_M1,T1,false);
1. Zwróci mi nr najbliższej świecy?
2. Jeśli zwróci nr najbliższej świecy to czy to będzie nr w przód czy tył od zadanej godziny?
Pytam ponieważ na testerze taki problem nie występuje, a poniedziałek już minął i mogę długo czekać zanim sam to zweryfikuję
mam pytanie odnośnie iBarShift.
Do obliczeń potrzebny mi nr świecy z konkretnej godziny więc zapisałem to w taki sposób:
int Nr_Swiecy =iBarShift(NULL,PERIOD_M1,T1);
Problem pojawia się np. w momencie gdy T1=00:00 i jest np. poniedziałek. Zdarza się tak, że rynek wystartuje np. o 00:06.
Pytanie może wydawać się głupie, ale czy po modyfikacji na taki zapis:
int Nr_Swiecy =iBarShift(NULL,PERIOD_M1,T1,false);
1. Zwróci mi nr najbliższej świecy?
2. Jeśli zwróci nr najbliższej świecy to czy to będzie nr w przód czy tył od zadanej godziny?
Pytam ponieważ na testerze taki problem nie występuje, a poniedziałek już minął i mogę długo czekać zanim sam to zweryfikuję
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
https://docs.mql4.com/series/ibarshift
exact=false
(false - iBarShift returns the nearest, true - iBarShift returns -1)
Returned value
Index of the bar which covers the specified time. If there is no bar for the specified time (history "gap"), the function will return -1 or the nearest bar index (depending on exact parameter).
exact=false
(false - iBarShift returns the nearest, true - iBarShift returns -1)
Returned value
Index of the bar which covers the specified time. If there is no bar for the specified time (history "gap"), the function will return -1 or the nearest bar index (depending on exact parameter).
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: Wszystkie pytania dozwolone początkujących programistów
Czy jest plecenie, które zwróci mi wartość minimalnej wielkości pozycji jaką można tworzyć dla danego instrumentu? Chodzi mi o wartość określoną przez brokera np. dla niektórych jest to 0,1 Lot, a dla innych 0,01 itd.
Re: Wszystkie pytania dozwolone początkujących programistów
Tak jest polecenie, wartość minimalnej = MODE_MINLOT a maksymalna = MODE_MAXLOT
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Kod: Zaznacz cały
step = MarketInfo(Symbol(),MODE_LOTSTEP);
norm = 0;
if (step==1) norm = 0;
if (step==0.1) norm = 1;
if (step==0.01) norm = 2;
maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
minLot = MarketInfo(Symbol(),MODE_MINLOT);
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.