Witam. Uczę się programować w MQL. Wymyśliłem sobie prosty system, który chciałbym zaimplementować i przetestować. Napotkałem jednak na drobny problem. Przechodząc do rzeczy:
Założenia:
Dominującym wskaźnikiem są 2 linie MA nazwijmy dla porządku fast i slow.
Drugi wskaźnik służący jako SL, ewentualnie jako natychmiastowy warunek zamknięcia.
Jak to powinno działać?
linia fast > linia slow sygnał kupna - pozycja L
wskaźnik 2 daje sygnał Close. Pozycja zamknięta.
oczekiwanie na przecięcie linii ( fast < slow ) (w tym czasie nie powinno być transakcji)
linia fast < linia slow sygnał sprzedaży - pozycja S
wskaźnik 2 daje sygnał Close. pozycja zamknięcia
.
.
.loop
Problem?
fast > slow
wsk2 daje Close.
warunek fast>slow nadal spełniony więc system otwiera L (niepotrzbnie)
wskaźnik2 nadal daje Close
warunek fast>slow nadal spełniony więc system otwiera L (niepotrzbnie)
.
.
.
Mam nadzieję że ktoś zrozumie to co napisałem. Nie potrafię niestety tłumaczyć.
Domyślam się że można to zrobić jakoś na dodatkowej zmiennej, jednak if-ów w tym wypadku musiałoby być na prawdę dużo.
Jak rozwiązujecie to w swoich kodach ?
Oczekiwanie na przecięcie średnich - wstrzymanie transakcji
Nie masz sprawdzacz czy jest wieksze badz mniejsze, ale czy sie srednie przeciely._Tomo_ pisze:warunek fast>slow nadal spełniony więc system otwiera L (niepotrzbnie)
wskaźnik2 nadal daje Close
a jak sprawdzacz czy sie dwie srednie przeciely?
a no np
Kod: Zaznacz cały
fast[1]>slow[1] && fast[2]<=slow[2]
czyli slownie, sprawdzacz czy w danym momencie jest juz fast wieksza niz slow, i sprawdzacz czy w poprzedniej swieczce byla mniejasza niz slow.
Mam nadzieje, ze naprowadzilem.
Dzięki. Widzisz o takie coś mi chodziło.
Trochę orientuję się w Cpp, ale muszę nauczyć się wykorzystywać te funkcje z MQL
Co do sprawdzania raz na świece, wykorzystałem kod który bardzo ładnie (i zawsze działa), znaleziony na MQL4.com chyba isNewBar v 3.0
Jeszcze chciałbym do końca zrozumieć jak to działa.
Chodzi o to, że w przypadku MA jest przechowywana wartość w tablicy, czy trzeba użyć MAonArray ? I jak to jest indeksowane od 0 czy od 1 ?
Jak to się ma na przykład do Linii DI+/DI- jeżeli nie ma wbudowanego to samemu mam zrobić tablicę i trzymać 2 wartości w tył ?
Trochę orientuję się w Cpp, ale muszę nauczyć się wykorzystywać te funkcje z MQL
Co do sprawdzania raz na świece, wykorzystałem kod który bardzo ładnie (i zawsze działa), znaleziony na MQL4.com chyba isNewBar v 3.0
Jeszcze chciałbym do końca zrozumieć jak to działa.
Chodzi o to, że w przypadku MA jest przechowywana wartość w tablicy, czy trzeba użyć MAonArray ? I jak to jest indeksowane od 0 czy od 1 ?
Jak to się ma na przykład do Linii DI+/DI- jeżeli nie ma wbudowanego to samemu mam zrobić tablicę i trzymać 2 wartości w tył ?
Jezeli chcesz ja tylko odczytywac to nie musisz, bo od razu w IMA masz index (0 to jest obecna swieczka, 1 pierwsza to jedna wstecz itd.)_Tomo_ pisze:Chodzi o to, że w przypadku MA jest przechowywana wartość w tablicy, czy trzeba użyć MAonArray ?
Jezeli jest dany wskaznik to jak wyzej, zawsze odwolujesz sie do jego indeksu poprzez shift (Zazwyczaj ostani parametr)._Tomo_ pisze:Jak to się ma na przykład do Linii DI+/DI- jeżeli nie ma wbudowanego to samemu mam zrobić tablicę i trzymać 2 wartości w tył ?
W przypadku wiekszj ilosci "wykresow" w jednym indykatorze, odwolujesz sie do nich poprzez index numerowane od 0 do 7 (wniosek: jeden indykator moze skladac sie z maksymalnie 8 "wykresow")
To znacznie upraszcza sprawę.LowcaG pisze:
Jezeli jest dany wskaznik to jak wyzej, zawsze odwolujesz sie do jego indeksu poprzez shift (Zazwyczaj ostani parametr).
Myślałem że shift jest parametrem przesunięcia.
Z tego wnioskuję że we wskaźniku iMA przesunięciem jest ma_shift a shift indeksem w tablicy zgadza się ?