Wszystkie pytania dozwolone początkujących programistów
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
Chciałbym napisać funkcję, która po wystąpieniu X świec w danym kierunku zwróci mi wartość true. Przykładowo jeśli wystąpią minimum 3 świece wzrostowe pod rząd to funkcja zwraca wartość true. W przeciwnym razie false. Jeśli wystąpią 2 wzrostowe, jedna spadkowa i kolejna wzrostowa to w dalszym ciągu false. Jeśli wystąpią 3 wzrostowe, następnie spadkowa to po zakończeniu tej spadkowej funkcja znów zmienia się na false. Chodzi o sprawdzanie świec od indeksu 1 do określonego indeksu np.3
Zacząłem kombinować w ten sposób:
bool Swiece()
{
bool result=false;
for(int i=1;i<=3;i++)
{
if( (iOpen(NULL,PERIOD_H1,i))<=(iClose(NULL,PERIOD_H1,i)))
result=true;
else
result=false;
}
return(result);
}
No i utknąłem bo nie wiem jak zrobić, żeby sprawdził czy warunek jest spełniony dla X świec pod rząd? No i czy w ogóle idę w dobrym kierunku?
Chciałbym napisać funkcję, która po wystąpieniu X świec w danym kierunku zwróci mi wartość true. Przykładowo jeśli wystąpią minimum 3 świece wzrostowe pod rząd to funkcja zwraca wartość true. W przeciwnym razie false. Jeśli wystąpią 2 wzrostowe, jedna spadkowa i kolejna wzrostowa to w dalszym ciągu false. Jeśli wystąpią 3 wzrostowe, następnie spadkowa to po zakończeniu tej spadkowej funkcja znów zmienia się na false. Chodzi o sprawdzanie świec od indeksu 1 do określonego indeksu np.3
Zacząłem kombinować w ten sposób:
bool Swiece()
{
bool result=false;
for(int i=1;i<=3;i++)
{
if( (iOpen(NULL,PERIOD_H1,i))<=(iClose(NULL,PERIOD_H1,i)))
result=true;
else
result=false;
}
return(result);
}
No i utknąłem bo nie wiem jak zrobić, żeby sprawdził czy warunek jest spełniony dla X świec pod rząd? No i czy w ogóle idę w dobrym kierunku?
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Jeżeli badasz tylko 4 swiece, to nie potrzeba pętli for.Szymon_P pisze: ↑26 wrz 2021, 17:57Witam,
Chciałbym napisać funkcję, która po wystąpieniu X świec w danym kierunku zwróci mi wartość true. Przykładowo jeśli wystąpią minimum 3 świece wzrostowe pod rząd to funkcja zwraca wartość true. W przeciwnym razie false. Jeśli wystąpią 2 wzrostowe, jedna spadkowa i kolejna wzrostowa to w dalszym ciągu false. Jeśli wystąpią 3 wzrostowe, następnie spadkowa to po zakończeniu tej spadkowej funkcja znów zmienia się na false. Chodzi o sprawdzanie świec od indeksu 1 do określonego indeksu np.3
Zacząłem kombinować w ten sposób:
bool Swiece()
{
bool result=false;
for(int i=1;i<=3;i++)
{
if( (iOpen(NULL,PERIOD_H1,i))<=(iClose(NULL,PERIOD_H1,i)))
result=true;
else
result=false;
}
return(result);
}
No i utknąłem bo nie wiem jak zrobić, żeby sprawdził czy warunek jest spełniony dla X świec pod rząd? No i czy w ogóle idę w dobrym kierunku?
Kod: Zaznacz cały
if(Close[4]>Open[4]&&Close[3]>Open[3]&&Close[2]>Open[2]&&Close[1]<Open[1])
return(false);
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
No własnie chodzi o to, żebym mógł zmieniać ustawienia. Mam funkcję napisaną dla 3 świec, ale czasami będę potrzebował 2 innym razem 5, a nie chciałbym za każdym razem modyfikować kodu. "3" wpisałem dla przykładu, później zastąpię zmienną.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
No to nie bardzo widzę jak, bo pewnie masz na myśli jakieś konkretne setupy, czyli sekwencje świec.
Trzeba wtedy każdy taki scenariusz osobno opisać.
Nie można zakodować czegoś, czego nie wiesz.
Można np. czekać na jakiś warunek, kiedy wystąpi, to odczytać czas świecy, na której ten warunek nastąpił, i potem na podstawie tego czasu odczytać indeks tej świecy, i np. badać inny warunek od tej świecy.
A dla EA, to nawet nie trzeba znać indeksu świecy, tylko od momentu, kiedy wystąpi dany warunek, to zmienna jest = true, i dopiero wtedy szukasz warunku pozycji, lub negacji. Jeżeli wystąpi negacja, to zmienną resetujesz na false.
Oczywiście, musisz zmienną resetować na false zawsze wtedy, kiedy nie ma być transakcji, lub kolejnej transakcji.
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
Dokładnie wiem co chcę osiągnąć ponieważ działa mi to już w EA tylko mam na sztywno wpisaną ilość świec. Zobrazuję to troszkę dokładniej.ninjaproject pisze: ↑26 wrz 2021, 21:46No to nie bardzo widzę jak, bo pewnie masz na myśli jakieś konkretne setupy, czyli sekwencje świec.
Trzeba wtedy każdy taki scenariusz osobno opisać.
Nie można zakodować czegoś, czego nie wiesz.
Można np. czekać na jakiś warunek, kiedy wystąpi, to odczytać czas świecy, na której ten warunek nastąpił, i potem na podstawie tego czasu odczytać indeks tej świecy, i np. badać inny warunek od tej świecy.
A dla EA, to nawet nie trzeba znać indeksu świecy, tylko od momentu, kiedy wystąpi dany warunek, to zmienna jest = true, i dopiero wtedy szukasz warunku pozycji, lub negacji. Jeżeli wystąpi negacja, to zmienną resetujesz na false.
Oczywiście, musisz zmienną resetować na false zawsze wtedy, kiedy nie ma być transakcji, lub kolejnej transakcji.
Przykład 1 (badam 3 świece):
Gdy świece o indeksach 2,3,4 są wzrostowe to true (analogicznie w drugą stronę)
Przykład 2 (badam 6 świec):
Gdy świece o indeksach 2,3,4,5,6,7 są wzrostowe to true (analogicznie w drugą stronę)
Tak naprawdę to interesuje mnie zbadanie świec od indeksu 2 do X, czy wszystkie po kolei są wzrostowe i jeśli wystąpi warunek minimum np.3 to true i przechodzę do następnego kroku. Problemem dla mnie jest to w jaki sposób mam napisać, żeby EA badał tę określoną liczbę świec o znanych indeksach. Określony jest także kierunek, który ma być w danym momencie badany więc mnie interesuje tylko zbadanie czy te świece od 2 do X są w "moim" kierunku.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
No to potrzebujesz w pętli for od 2 do X zrobić licznik świec o danym kierunku.Szymon_P pisze: ↑26 wrz 2021, 23:06Dokładnie wiem co chcę osiągnąć ponieważ działa mi to już w EA tylko mam na sztywno wpisaną ilość świec. Zobrazuję to troszkę dokładniej.ninjaproject pisze: ↑26 wrz 2021, 21:46No to nie bardzo widzę jak, bo pewnie masz na myśli jakieś konkretne setupy, czyli sekwencje świec.
Trzeba wtedy każdy taki scenariusz osobno opisać.
Nie można zakodować czegoś, czego nie wiesz.
Można np. czekać na jakiś warunek, kiedy wystąpi, to odczytać czas świecy, na której ten warunek nastąpił, i potem na podstawie tego czasu odczytać indeks tej świecy, i np. badać inny warunek od tej świecy.
A dla EA, to nawet nie trzeba znać indeksu świecy, tylko od momentu, kiedy wystąpi dany warunek, to zmienna jest = true, i dopiero wtedy szukasz warunku pozycji, lub negacji. Jeżeli wystąpi negacja, to zmienną resetujesz na false.
Oczywiście, musisz zmienną resetować na false zawsze wtedy, kiedy nie ma być transakcji, lub kolejnej transakcji.
Przykład 1 (badam 3 świece):
Gdy świece o indeksach 2,3,4 są wzrostowe to true (analogicznie w drugą stronę)
Przykład 2 (badam 6 świec):
Gdy świece o indeksach 2,3,4,5,6,7 są wzrostowe to true (analogicznie w drugą stronę)
Tak naprawdę to interesuje mnie zbadanie świec od indeksu 2 do X, czy wszystkie po kolei są wzrostowe i jeśli wystąpi warunek minimum np.3 to true i przechodzę do następnego kroku. Problemem dla mnie jest to w jaki sposób mam napisać, żeby EA badał tę określoną liczbę świec o znanych indeksach. Określony jest także kierunek, który ma być w danym momencie badany więc mnie interesuje tylko zbadanie czy te świece od 2 do X są w "moim" kierunku.
Np.
Kod: Zaznacz cały
input int CandlesToCount = 6; // to jest zmienna x
int CountBullCandles(int x)
{
int i;
int bullCount=0;
for(i=2; i<=x; i++)
{
if(Close[i]>Open[i])
bullCount ++;
}
return(bullCount);
}
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
Dokładnie o to chodziło! Dziękuję!
-
- Uczestnik
- Posty: 2
- Rejestracja: 25 wrz 2021, 12:00
Re: Wszystkie pytania dozwolone początkujących programistów
Witam serdecznie,
metodą prób i błędów napisałem pierwszy wskaźnik oparty o średnie kroczące. W załączniku prosty przypadek gdzie szybka średnia przecina wolną. Po przecięciu wrzuca mi na wykres symbol strzałki. Wszystko działa dobrze do momentu przesuwania wykresu w lewo. Gdy program zaczyna pobierać wcześniejszą historię strzałki zaczynają fruwać po całym wykresie. Po przełączeniu między tf'ami wskaźnik się odświeża i wszystko wraca do normy.
Proszę o pomoc jak można to naprawić, żeby strzałki nie zaczynały wariować ?
metodą prób i błędów napisałem pierwszy wskaźnik oparty o średnie kroczące. W załączniku prosty przypadek gdzie szybka średnia przecina wolną. Po przecięciu wrzuca mi na wykres symbol strzałki. Wszystko działa dobrze do momentu przesuwania wykresu w lewo. Gdy program zaczyna pobierać wcześniejszą historię strzałki zaczynają fruwać po całym wykresie. Po przełączeniu między tf'ami wskaźnik się odświeża i wszystko wraca do normy.
Proszę o pomoc jak można to naprawić, żeby strzałki nie zaczynały wariować ?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 27 wrz 2021, 22:09 przez WojciechPP, łącznie zmieniany 1 raz.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Wszystkie pytania dozwolone początkujących programistów
Na początku pętli for() wyzeruj bufor:WojciechPP pisze: ↑27 wrz 2021, 21:52Witam serdecznie,
metodą prób i błędów napisałem pierwszy wskaźnik oparty o średnie kroczące. W załączniku prosty przypadek gdzie szybka średnia przecina wolną. Po przecięciu wrzuca mi na wykres symbol strzałki. Wszystko działa dobrze do momentu przesuwania wykresu w lewo. Gdy program zaczyna pobierać wcześniejszą historię strzałki zaczynają fruwać po całym wykresie. Po przełączeniu między tf'ami wskaźnik się odświeża i wszystko wraca do normy.
Proszę o pomoc jak można to naprawić, żeby strzałki nie zaczynały wariować ?
Kod: Zaznacz cały
up[i]=EMPTY;
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.
-
- Uczestnik
- Posty: 2
- Rejestracja: 25 wrz 2021, 12:00
Re: Wszystkie pytania dozwolone początkujących programistów
Super ekspres Wielkie dzięki ! Działa