PDA

Zobacz pełną wersję : Jak narysować pudełko w MT4?



Legugoxris34
12-19-2006 12:02, 12:02
Oczywisty nowicjusz MT4 tutaj..

Chciałem wiedzieć, czy istnieje najlepsza praktyka rysowania pudełka w MT4 w celu automatyzacji transakcji typu breakout.

Każda pomoc bardzo mile widziana.

Hal

Migwlipk84
11-22-2022 11:48, 11:48
Ps.: EA nie są idealne, są jakieś błędy, jak Zamknij. Jeśli użyjesz Close[x] lub wskaźnika, który używa ceny zamknięcia na bieżącym słupku, będziesz mieć nieprawidłowe dane... Dlaczego? w EA bieżący słupek nie ma wartości zamknięcia tylko wartości otwartej, więc jeśli użyjesz RSI na przykład, RSI [0] nie da dobrej wartości, dopóki RSI [1], ponieważ RSI używa PRICE_CLOSE do obliczenia jest rzeczy ... Więc EA są dobre, ale żeby pomóc nam zdefiniować egie, trzeba je przetestować na żywo...

Migwlipk84
11-22-2022 13:10, 13:10
Należy dokonać pewnych wyjaśnień:

Zrobiłem zgodnie z twoją instrukcją i zredagowałem skompilowany CI bez błędów, a kiedy zastosowałem go do wykresu, widzę, że naśladuje on identycznie jak RSI (21), który mam uruchomiony na tym samym wykresie. Oto, co do tej pory udało mi się zrozumieć: W przypadku CI wszystko to: #property Indicator_separate_window #property Indicator_buffers 1 #property Indicator_color1 Czerwony jest stosowany do tego: double ExtMapBuffer1[];
Źle (żeby się nie pomylić): #property indicator_separate_window lt;- Czy CI będzie #property Indicator_buffers 1 lt;- Po prostu powiedz, ile jest bufora Ponieważ kiedyś będziesz miał więcej bufora, ale tylko 1 lub 2 do be draw... #property Indicator_color1 Red lt;- Powiedz API, aby używało czerwonego dla bufora pierwszej linii

i to: extern int MyPeriod = 21; jest tylko zmienną zewnętrzną. (Rozumiem, czym jest zmienna. Zewnętrzny tworzy ją, więc możesz ją ustawić w małym interfejsie graficznym po uruchomieniu.) To tutaj: int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); zwrot(0); } To mówi, co zostanie narysowane graficznie, i znajduje się w sekcji „uruchom raz podczas uruchamiania”. W takim przypadku narysuj linię, która zaczyna się od 0 i używa następującego bufora do narysowania samego siebie [ buffer = ( począwszy od 0 jest wartością ExtMapBuffer1) ]
Źle: SetIndexBuffer(0,ExtMapBuffer1);lt;- 0 służy tylko do rysowania pierwszego bufora, 1 byłby drugim losowaniem (w stochastyce masz 0,1 z powodu linii 2) SetIndexStyle(0, DRAW_LINE);lt;- DRAW_LINE zostanie zastosowany do bufora zdefiniowanego przez 0, więc ExtMapBuffer1

for(int x=limit ; ​​x gt;=0 ; x--)* Dla ( zadeklaruj liczbę całkowitą „x” równą „limit” i „x” jest większe lub równe zeru, zmniejsz „x” o jeden. ) Czy to sprawia, że ​​gówno zaczyna się od 0 i cofa o jeden za każdym razem. (?) */
Idzie od lewej do prawej: więc ostatni pasek (najstarszy) do najnowszego (0:Current)

Legugoxris34
11-22-2022 14:32, 14:32
Pracowałem nad tym i to ma sens! Napisałem swój pierwszy EA i myślę, że w dużym stopniu trafiłem w szczęście początkujących! Dziękuję bardzo za dobre instrukcje! Nie mógłbym tego zrobić bez ciebie. Wiem, że to początek długiej podróży. Nie oczekuję cudów od razu. Ale teraz testuję moją osobliwość natury i jak dotąd działa fantastycznie! (na koncie demonstracyjnym FXDD) Nazywam to dziwactwem natury, ponieważ ktoś z tak małym doświadczeniem w MQL4 nie powinien być w stanie napisać czegoś, co faktycznie działa tak dobrze w testowaniu w przód. 180 pipsów w ciągu ostatnich 24 godzin. testów FWD na demo (szczęście dla początkujących, to tylko jeden dzień.) http://www.venexys.com/HP002A2_FWD_DET_TEST_DAY001.gif
http://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htmhttp://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htm

Legugoxris34
11-22-2022 15:55, 15:55
Zrobiłem zgodnie z twoją instrukcją i zredagowałem skompilowany CI bez błędów, a kiedy zastosowałem go do wykresu, widzę, że naśladuje on identycznie jak RSI (21), który mam uruchomiony na tym samym wykresie. Oto, co do tej pory udało mi się zrozumieć: W przypadku CI wszystko to: #property Indicator_separate_window #property Indicator_buffers 1 #property Indicator_color1 Czerwony jest stosowany do tego: double ExtMapBuffer1[]; i to: extern int MyPeriod = 21; jest tylko zmienną zewnętrzną. (Rozumiem, czym jest zmienna. Zewnętrzny tworzy ją, więc możesz ją ustawić w małym interfejsie graficznym po uruchomieniu.) To tutaj: int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); zwrot(0); } To mówi, co zostanie narysowane graficznie, i znajduje się w sekcji „uruchom raz podczas uruchamiania”. W tym przypadku narysuj linię, która zaczyna się od 0 i używa następującego bufora do narysowania siebie [ buffer = ( zaczynając od 0 jest wartością ExtMapBuffer1) ] Następnie przechodzimy aż do części „start” skryptu i tutaj mamy.... int start() { int limit = Bars-IndicatorCounted();*Zadeklaruj stałą całkowitą równą wynikowi (Liczba słupków na zliczanym wykresie MINUS ilość słupków niezmienionych po ostatnim uruchomieniu wskaźnika) */for(int x=limit ; ​​x gt;=0 ; x --)* Dla ( zadeklaruj liczbę całkowitą „x”, która jest równa „limit”, a „x” jest większe lub równe zeru, zmniejsz „x” o jeden.) Czy to sprawia, że ​​gówno zaczyna się od 0 i idzie cofać się o jeden za każdym razem. (?) */{ ExtMapBuffer1[x]=iRSI(NULL,0,MyPeriod,CENA_CLOSE,x);* ExtMapBuffer1[x] równa się iRSI(......,x) */} Powoli przeglądam każdą linię kodu, aby dobrze ją zrozumieć i zmieniam wskaźnik, kolor, bufory itp. tak, jak radzisz. Powoli zaczyna do mnie docierać. Jestem pewien, że w krótkim czasie będę miał więcej pytań. To jest tak szczegółowe wyjaśnienie, o jakie każdy mógłby poprosić. Jestem wdzięczny, że poświęciłeś czas na wyjaśnienie tych przyziemnych szczegółów nowicjuszowi. Wielka karma dla ciebie! Jeszcze raz dziękuję! Hal

Migwlipk84
11-22-2022 17:17, 17:17
Teraz poniżej podwójnego ExtMapBuffer1[]; Dodaj extern int MyPeriod = 21; extern służy do interakcji ze wskaźnikiem, kiedy instalujesz CI masz wyskakujące okienko, a następnie w zakładce input widzisz swoją zmienną extern... Teraz zastąp ExtMapBuffer1[x]=1; gdzie: ExtMapBuffer1[x]= iRSI(NULL,0,MyPeriod,PRICE_CLOSE,x) ; usuń : #wskaźnik_właściwości_minimum 0 #wskaźnik_właściwości_maksymalnie 2 I skompiluj... Jeśli nic nie widzisz. W porządku. usuń wskaźnik i odłóż go z powrotem... Skala nie zmienia się podczas kompilacji. ponieważ wartość RSI nie mieści się między 0 a 2... Proszę bardzo... Teraz masz swoje podstawowe... Spróbuj zmodyfikować wartość, dodaj bufor, zmień kolor, użyj innego wskaźnika (zamiast RSI, użyj iCCI). Wszystko, co musisz wiedzieć, to zacząć… Potem zobaczysz… jeśli masz inne pytanie, śmiało…: -) Wesołych Świąt
https://www.forex-instant.com/attachments/1531688990.pnghttps://www.forex-instant.com/attachments/1531688990.pnghttps://www.forex-instant.com/attachments/1531688990.png

Legugoxris34
11-22-2022 18:39, 18:39
1 Załącznik(i) Hej! zadziałało! mam swoją płaską czerwoną linię. W tym ostatnim poście jest sporo treści, które muszę przetrawić. Przejrzę to kilka razy, aby dobrze zrozumieć wszystko, co się dzieje. Dzięki za poświęcenie czasu temu człowiekowi. Rynki są zamknięte i zbliżają się wakacje. Mam nadzieję, że Ty i Twoi przyjaciele macie wspaniałe wakacje i Szczęśliwego Nowego Roku! Hal
https://www.forex-instant.com/attachments/15316889981210488381.mq4

Migwlipk84
11-22-2022 20:01, 20:01
Ok. więc wznowić Init lt;- program wykona tę funkcję tylko raz (gdy wskaźnik jest załadowany) deInit lt;- program wykona tę funkcję tylko raz (gdy wskaźnik jest rozładowany) Start lt;- program wykona tę funkcję za każdym razem odbiera dane z serwera. Czym jest niestandardowy wskaźnik? Żeby było krótko. Głównym powodem jest zbudowanie niestandardowego wskaźnika (na razie CI) jest przedstawienie pomysłu w sposób graficzny (i tak, możesz zrobić więcej, dźwięk, eksport, odczyt/zapis plików, alert itp.). Ale zanim... CI użyj Array(Or buffer or table) . Czym oni są? Powinieneś wiedzieć, co to jest zmienna (jeśli nie, przeczytaj o tym). Wyobraź sobie, że chcesz zadeklarować 100 zmiennych (zmienna1, zmienna2 itd.). Zajmie to dużo czasu i wysiłku ... Więc Array to po prostu połączenie wielu zmiennych pod jedną nazwą (ponownie, to więcej niż to, ale na razie wystarczy). Wyobraź sobie 100 pudełek obok siebie. pierwszy to 0, 1, potem 2 itd. (Tablica zaczyna się od 0 do (rozmiar tablicy) -1) Jeśli chcesz uzyskać/zapisać wartość z pola # 5, użyj Box [4] ( Box [BoxSize-1] ) Zwykle określasz rozmiar bufora, kiedy go deklarujesz. Ponieważ program nie wie, jaki rozmiar chcesz! ___ W skrócie: program musi przydzielić w pamięci miejsce potrzebne na bufor (np.: int buffer[2]={1,2}; utworzy w pamięci 2 miejsca typu int). Kiedy deklarujesz zmienną (int test
https://www.forex-instant.com/attachments/1531688990.png, program automatycznie przydzieli 1 miejsce typu „int” na odebranie informacji. (Możesz także rozszerzyć lub wycofać bufor w swoim kodzie: Ale na razie zapomnij o tym). ___ CI pokaż grafikę. Następnie musisz użyć bufora, aby to zrobić. CI użyje Bufora, którego mu każesz użyć. Dla wskaźnika można użyć maksymalnie 8 buforów (ale możesz użyć wielu tabel, zobaczysz później). Każde pudełko (w celu wyjaśnienia przykładu) odpowiada 1 świecy na grafice. Bufor [0] jest wyrównany ze świecą nr 0 i tak dalej... Zaczynając od prawej do lewej (od najnowszych do najstarszych) Linie są rysowane od jednego pola do drugiego: jeśli masz 10 w polu [0] i 5 w polu [1] linia będzie przebiegać od prawej do lewej, od 10 do 5 (górna linia). W pierwszym demo po prostu umieścimy 1 jako wartość we wskaźniku (płaska linia). Zaczynamy: Najpierw umieszczamy „#property”, właściwość CI #property Indicator_separate_window #property Indicator_minimum 0 #property Indicator_maximum 2 #property Indicator_buffers 1 #property Indicator_color1 Czerwone 'indicator_minimum' i 'indicator_maximum' zdefiniują skalę (Wartości w prawo CI). Jeśli usuniesz „indicator_minimum” i „indicator_maximum”, będziesz mieć wartość High i Low od wartości w buforze CI, aby ją przeskalować. (z tylko 1 jako wartością, jak jej demo, jeśli nie umieścisz min/max, nie zobaczysz płaskiej linii) „indicator_buffers” służy do poinformowania programu, ile bufora użyjemy do wyjścia grafiki (ile linii chcemy: maksymalnie 8). „indicator_color1” jest łatwy, polega na określeniu koloru linii. Poniżej wszystkich „#property” umieszczasz podwójne ExtMapBuffer1[]; 'ExtMapBuffer1' to domyślna nazwa nadana przez kreatora, ale za każdym razem ją zmieniam; Powiedzmy, że Bufor []; W tym przypadku nie musisz mówić ile miejsca potrzebujemy (Buffer[x]
https://www.forex-instant.com/attachments/1531688990.png, ponieważ zostanie to zrobione na funkcji 'Init'; W funkcji init umieszczasz: SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); „SetIndexStyle” służy do definiowania typu grafiki (linia, histogram itp.) 0 reprezentuje pierwszy inicjowany bufor, zajmie „indicator_color1”, a nr 1 użyje „indicator_color2” itp., aby powiązać kolor... Kolejność umieszczenia bufora nie jest tak ważna, ale spowoduje to narysowanie ich jeden po drugim, więc 0 będzie poniżej 1, więc 2 będzie na wierzchu 1, itd. Teraz wyobraź sobie MACD, jeśli linia MACD znajduje się za histogramem! To tylko kwestia widoczności. (Ale musi to być od 0 do x) „SetIndexBuffer” kojarzy „ExtMapBuffer1” na 0 i używa tego do identyfikacji bufora i użycia go do malowania linii na CI. Więc to jest to. masz swoją podstawową deklarację... Teraz użyjmy jej... Wstaw funkcję 'start': int limit = Bars-IndicatorCounted(); for(int x=limit; x gt;=0; x--){ ExtMapBuffer1[x]=1; } Gotowe... Aby uzyskać informacje na temat innych funkcji. Kliknij go dwukrotnie, a następnie „F1” Spróbuj… i powiedz mi, czy zadziała… będziesz mieć płaską linię…

Legugoxris34
11-22-2022 21:24, 21:24
Musiałem przeczytać to kilka razy, ale myślę, że w tym momencie rozumiem. Kontynuuj do woli.

Migwlipk84
11-22-2022 22:46, 22:46
Przy okazji powiadom mnie, gdy przeczytasz i zrozumiesz. Więc mogę kontynuować… poczekam, zanim pójdę dalej i dalej i dalej….
https://www.forex-instant.com/attachments/1531688990.png

Migwlipk84
11-23-2022 00:08, 00:08
1. Prawa autorskie #property 2. Linki #property 1 i 2 służą jedynie do identyfikacji twojego skryptu (nieistotne dla kodowania)3. #property Indicator_chart_window Każde okno jako wartość, okna z wykresem to 0 wtedy każdy wskaźnik na dole otrzymuje wartość od 1 do x. Więc jeśli utworzysz wskaźnik za pomocą wskaźnika_wykresu_okna, grafika zostanie umieszczona w oknach #0 (Okno wykresu). Jeśli użyjesz Indicator_separate_window , utworzy to wskaźnik w osobnych oknach, takich jak MACD lub RSI ... - Więc w celu stworzenia podobnego wyglądu RSI musisz go zmienić na Indicator_separate_window - Nawiasem mówiąc, można to było zrobić w Właściwość Wizard (Check Box) # służy do definiowania różnych aspektów twojego wskaźnika, zobaczymy później... 4. int init() Init to miejsce, w którym umieszczasz swój kod, który musi zostać zainicjowany po załadowaniu wskaźnika. Podobnie jak Buffer lub Global Variable, robi się to tylko raz...5. int deinit() deinit jest odwrotnością init. Zostanie więc wykonany, gdy wskaźnik zostanie usunięty z wykresu. Przykład: jeśli umieścisz obiekt tekstowy w oknie wykresu, chcesz, aby został usunięty po usunięciu wskaźnika lub pozostanie tam.6. int start() po wywołaniu init i za każdym razem, gdy pojawia się nowe wejście (każda wartość tiku), aplikacja wykonuje funkcję start ... To wszystko dla bazy ... Teraz Przykład .: Jeśli zadeklarujesz zmienną globalną powyżej init (nie wewnątrz funkcji, patrz poniżej) jak podwójny test=0; następnie w init umieściłeś test=1; i na początku umieszczasz test = 2; Następnie, kiedy załadujesz swój wskaźnik, test otrzyma 1 jako wartość; i za każdym razem, gdy uruchamiany jest start, test otrzyma 2 jako wartość double test=0; int init(){test=1; Komentarz(test:,test);} int start(){ test=2; Komentarz(test:,test ); } Ps.: Komentarz służy do umieszczania tekstu w lewym rogu wykresu okien i drukowania w oknie terminala w zakładce ekspert. Również jeśli usuniesz test ze startu, zobaczysz, że zawsze wyświetli 1 Sposób, w jaki jest zaimplementowany, jest bezużyteczny, ponieważ wykona init i uruchomi się natychmiast, więc test zawsze będzie miał 2. Ale to tylko po to, aby pokazać, jak init i start działają dla podstawowych . Ps.: Dla tych, którzy to czytają... to tylko podstawowe wyjaśnienie. Nie jest moją sprawą tworzenie lekcji... Przejdź do tego wątku. To jest dobrze zrobione.

Legugoxris34
11-23-2022 01:30, 01:30
Tak, oczywiście, że chcę!! Wykonałem Twoje instrukcje co do joty. Mam mój nowy wskaźnik o nazwie IndicatorProto001.mq4 w moim folderze Indicators. Gotowy do następnego kroku, kiedy jesteś. W międzyczasie będę ponownie czytał lekcje od 10 do 12, które przemawiają do wskaźnika.

Migwlipk84
11-23-2022 02:53, 02:53
Mogę pomóc Ci zbudować Twój pierwszy wskaźnik i pokazać podstawowe... Oczywiście będziesz musiał odrobić lekcję, patrząc na cours (pdf), aby wszystko dokładnie zrozumieć... Krok 1 - Utwórz pusty , Wskaźnik niestandardowy (wskaźnik FilenewCustom) Nadaj mu nazwę, którą lubisz (nazwa, która nie istnieje) Pozostaw na razie wszystko domyślnie (wykonaj następny) Następnie nic nie pisz, skompiluj wskaźnik, wykonując F5 Powinien teraz kupić u Ciebie lista MT4 Custom I od tego zaczniemy... Jeśli chcesz oczywiście!!! :-)

Legugoxris34
11-23-2022 04:15, 04:15
gt; gt; A tak przy okazji... czy dobrze rozumiesz, jak działa wskaźnik? lt; lt; Oczywiście nie. gt; gt; Przed zbudowaniem jakiegokolwiek EA powinieneś spróbować zbudować mały niestandardowy wskaźnik. lt; lt; Jestem znany z tego, że przesadzam z tematami, które mnie pociągają. (jak pisanie EA) Na początku jest to bardzo mylące, ale w końcu wszystko nabierze sensu i wala! jesteś ekspertem! Przejdę do kroku pierwszego po sprawdzeniu kroków od 3 do 5. Ale nie ignoruję rad bardziej doświadczonych. Więc skorzystam z twojej rady i najpierw pobawię się wskaźnikiem RSI. Na razie dam spokój EA i nauczę się bardziej podstawowych rzeczy... gt;gt; umieść wskaźnik rzeczywisty i wskaźnik niestandardowy obok siebie i sprawdź, czy zrobiłeś dobrze lt; lt; To wydaje się dobrym pomysłem. Jeszcze raz dziękuję za pomoc i cierpliwość wobec mnie.

Migwlipk84
11-23-2022 05:37, 05:37
również piszę to: for(int x=0 ; x lt; limit ; ​​x ) ale tak naprawdę chciałbyś zacząć od końca do ostatniej świecy, więc: for(int x=limit ; ​​xgt;=0 ; x--) Dlaczego? Jeśli twój indior dodaje z wartości z przeszłości, jak możesz dodać, jeśli nie obliczyłeś go najpierw? np .: jeśli chcesz, aby twój indior pokazał ci, czy aktualna wartość to gt; 0 lub lt; 0 w porównaniu z ostatnią wartością, musisz być w stanie uzyskać ostatnią wartość, ale ponieważ zaczynasz od zera (Bufor [0]), aby zbudować tablicę, to Buffer [1], Buffer [2] nie ma jeszcze żadnej wartości. .. A tak przy okazji... czy rozumiesz jasno, jak działa indior? Przed zbudowaniem jakiegokolwiek EA powinieneś spróbować zbudować mały, niestandardowy indior. Jak odtworzenie na przykładzie RSI. Nie kupuj wymyślania równania na nowo, ale używaj funkcji RSI. Możesz więc umieścić obok siebie prawdziwy indior i swój niestandardowy indior i sprawdzić, czy postąpiłeś właściwie...

Migwlipk84
11-23-2022 06:59, 06:59
granica int = 4; for(int x=0 ; x lt; limit ; ​​x ) { Close[x]=iRSI( NULL,0,21,CENA_CLOSE ,x); }
Pierwsze zamknięcie [] jest zdefiniowane przez MQL Framework. Możesz go użyć tylko do odzyskania informacji ... Ale możesz użyć swojej tablicy. np.: podwójna MojaTablica[]; lub podwój MyLittleBuz[]; Pytanie? Dlaczego chcesz zmienić wartość zamknięcia świecy? Zamiast tego musisz podać wartość RSI buforowi, który rysuje indior(line) Dlatego w sekcji (funkcji) „int init()” widzisz: SetIndexBuffer(0,XYZBuffer); lt;- używany do tworzenia bufora Jest to bufor, który otrzyma wartość, ta wartość zostanie wykorzystana przez aplikację do narysowania linii wewnętrznej. Również jeśli użyjesz 4 dla pętli, otrzymasz tylko linię dla długości 4 świec ... więc nie możesz zobaczyć informacji o drugiej świecy (powiedzmy, testy historyczne)

Legugoxris34
11-23-2022 08:22, 08:22
Więc czy to miałoby sens, czy jestem zboczony? int limit = Bars-IndiorCounted();/..Equals 'Bars' minus IndiorCounted() for(int x=0 ; x lt; limit ; ​​x )/Dla 'x' równego zeru i mniejszego od 'Limit', zwiększ 'x' o jeden i wykonaj następujące czynności.... {/(Buffer[array] = iRSI(......,x) High[x]=iRSI(NULL,0,21,PRICE_CLOSE,x);/Czy Close[x] może działać tutaj zamiast High[x]? } Wygląda na to, że zrobi to RSI na wszystkich poprzednich świecach i na każdej nowej, gdy się pojawi, bez ponownego wykonywania tych, które już tam są (czy to prawda?). ma sens, że gdybym chciał tylko ostatnich 5 taktów, to Limit mógłby być ustawiony na „4”… (?), a to dałoby mi tylko ostatnie 5 taktów (?) Coś w stylu (?): int limit = 4; for(int x=0 ; x lt; limit ; ​​x ) { Close[x]=iRSI( NULL,0,21,PRICE_CLOSE ,x); } Jeśli jestem daleko w Nibylandii, po prostu daj mi znać. przemyśl to.

Migwlipk84
11-23-2022 09:44, 09:44
Buffer(Array) of value start at 0, ex.:so to get the high of the fifth candle you would write High[4], so shift is the candle position-1 starting from right to left. To get all candle quantity you use 'Bars'-1 So if you want to create a RSI indior for fun you would do a iteration on all candle -1 ex.: for(int x=0 ; x lt; Bars-1 ; x ){ Buffer[x]=IRSI(......,x); } but in fact you use: int limit = Bars-IndiorCounted(); for(int x=0 ; x lt; limit ; x )lt;limit ;= x=gt;lt;limit;x ){gt; Buffer[x]=IRSI(......,x); } why IndiorCounted? Because when you place your indior for the first time on you chart no candle is painted so IndiorCount is equal to all candle(Bars) after it will only give the amount of candle not changed(So everytime new value come in. you are not rebuilding everytime the indior just adding new candle info.You use less resources.lt;/limit;x ){gt;lt;/limitgt;

Legugoxris34
11-23-2022 11:06, 11:06
OK, mój eksperyment był aktywny z buźką i wszystkim przez jakiś czas i nic nie dał. Zaczynam się zastanawiać nad bardzo prawdopodobnym scenariuszem, w którym mój kod jest do bani. Myślę, że lepszą nazwą dla tego wątku byłoby coś w stylu EA Coding for Dummies 101 Jest ok. z czasem będzie lepiej. Muszę przejść przez ten etap. W każdym razie.. Oto pytanie. W następującym wyrażeniu: iRSI(string symbol, int przedział czasowy, int okres, int zastosowana_cena, int zmiana ) Co oznacza to przesunięcie? Myślę, że oznacza to okresy w przeszłości według słupków na obecnym wykresie. Ale nawet ja zdaję sobie sprawę, że może to być bardzo niejasna interpretacja. (Czasami dokumentacja online dla tych zmiennych zawiera bardzo ogólną definicję, która nie wyjaśnia ich zbyt dobrze). Nawet małe kroczki we właściwym kierunku są lepsze niż żadne kroki.

Legugoxris34
11-23-2022 12:28, 12:28
Aha! Dziękuję Zeuzere za lepsze wyjaśnienie Point To jest dokładnie to, czego potrzebowałem. Teraz rozumiem, czym jest Point.

Legugoxris34
11-23-2022 13:51, 13:51
1 Załącznik(i) Tak, zaczynam od zera, ale to było wczoraj. Dziś, nawet teraz, mam już więcej niż tylko zadrapania. Te lekcje od guru programistów są doskonałe. Inne świetne źródło jest tutaj:
http://articles.mql4.com/84Ten artykuł był bardzo pomocny, ponieważ przedstawia różne sekcje kodu EA. Oto czego się do tej pory nauczyłem. • Oczywiście istnieją fragmenty kodu, które są w pewnym stopniu stałe od jednego EA do drugiego, na przykład część do sprawdzania pasków, część do sprawdzania salda konta i tak dalej. • Wydaje się, że jedyną częścią, która naprawdę wiele zmienia, są stwierdzenia „jeśli” używane do decydowania o tym, jak wejść i wyjść z rynku. Naprawdę fajne jest to, że jeśli kompilujesz i otrzymujesz błędy na dole, możesz zaznaczyć i kliknąć błąd prawym przyciskiem myszy i wybrać „przejdź do linii” z wyskakującego menu, mały czerwony wskaźnik pokazuje, gdzie zrobiłeś błąd w samym kodzie! Jak poręczny! Napraw je jeden po drugim i wkrótce udało mi się skompilować plik bez błędów i ostrzeżeń. Tak! Właśnie napisałem swój pierwszy EA. Z pewnością nie jest to twórca fortuny (jeszcze) Nazwałem to odpowiednio: Prototype001 Sprawdza poziomy RSI i sprawdza ruch poziomów RSI w ciągu ostatnich 5 słupków. i na tej podstawie otwiera się długo lub krótko. (przynajmniej tak mi się wydaje, testuję to teraz, aby zobaczyć, czy faktycznie działa.) Czy do tej pory można było to zrobić inaczej? Jestem pewien, że mogło. Pierwszy raz piszę coś takiego. Zapraszam do obejrzenia mojego skromnego EA i przedstawienia swojej krytyki. Jak byś to zrobił do tej pory? Czy ktoś mógłby również rozszerzyć definicję zapasów predefiniowanej zmiennej o nazwie: Punkt? Dziękuję! Hal
https://www.forex-instant.com/attachments/1529195390340543145.mq4

Migwlipk84
11-23-2022 15:13, 15:13
Czy ktoś mógłby również rozszerzyć definicję zapasów predefiniowanej zmiennej o nazwie: Punkt?
rozwiń zapasy ... Trudno mi to zrozumieć ;-) (jestem Francuzem). Załóżmy, że chcesz wyjaśnić? jeśli tak... jak dodać lub odjąć 30 pipsów od 1,2500? 30 * Punkt == 30 * 0,0001 == 0,0030, więc 1,2500 0,0030 Daje dobrą wartość wielokrotności. 4 waluta dziesiętna: Punkt da 0,0001 2 waluta dziesiętna: Punkt da 0,01

Legugoxris34
11-23-2022 16:35, 16:35
Dzięki za wskazówkę Zeuzere, czytam te wszystkie lekcje dzisiaj. wygląda bardzo obiecująco. To powinno dać mi początek. Dzięki jeszcze raz

Migwlipk84
11-23-2022 17:57, 17:57
Idź zobacz to: MT4 uczy się programować Post#1 Dobra robota Przeczytaj to, potem będziesz mógł ładnie zacząć
https://www.forex-instant.com/attachments/1529195386.png

Migwlipk84
11-23-2022 19:20, 19:20
Czy znasz podstawowe rzeczy, takie jak :For, switch, function, parameter, double, int itp.... Albo zaczynasz od zera? Jeśli zaczynasz od zera, proponuję wziąć udział w małym podstawowym kursie języka C. Są darmowe w sieci i jest to łatwe (Cóż, nie tak dla początkujących) ... Możesz zaprogramować podstawowe rzeczy w weekend, jeśli poważnie o tym myślisz ... Ponieważ nie będę wyjaśniać, jak programować, ale mogę pomóc usuniesz trochę chmury, aby zacząć, jeśli znasz podstawy programowania.

Legugoxris34
11-23-2022 20:42, 20:42
Niechętnie zadawałem pytania, ponieważ nie chcę zadawać głupich pytań, ale muszę przyznać, że jest to trudniejsze niż myślałem dla kogoś, kto zaczyna od zera i nie ma wcześniejszego doświadczenia w programowaniu. ... Czuję, że utknąłem. Oto, co próbuję teraz zrobić i zrozumieć, zanim przejdę dalej… Próbuję napisać kod, który mówi: Otwórz długą pozycję Jeśli RSI(21) gt;= 50 i jeśli RSI(21) zostało wzrost w ostatnich 5 świecach i jeśli ADX(14) przeszedł z południa 40 na północ 40 To tylko jedna część mojego pomysłu… pudełko pojawi się później. Najpierw muszę uruchomić tę część. Myślałem, że będę wiedział, jak czytać samouczki, ale tak nie jest. Jako kompletny początkujący programista (kto ja??) patrzę na kod tu i tam i próbuję znaleźć w nim sens. Czuję, że potrzebuję poważnego potrzymania za rękę. Nie wiem, gdzie umieścić rzeczy w ramach wygenerowanych przez edytor. (tj.: inicjalizacja, deinicjalizacja lub start) Jednak jestem zdeterminowany, aby wbić te rzeczy przez moją czaszkę w taki czy inny sposób. Czy ktoś zna jakieś zajęcia z kodowania EA, na które mógłbym pójść? Poważnie podchodzę do nauki. Jestem po prostu zbyt młody, aby cokolwiek robić samodzielnie i nie chcę kopiować kodu innych ludzi, ponieważ czuję, że nie nauczyłbym się niczego w ten sposób.

Legugoxris34
11-23-2022 23:03, 23:03
Dzięki Zeuzere i Tesli. Na razie mam wystarczająco dużo do zabawy i jestem pewien, że po drodze będę miał bardziej szczegółowe pytania. Teraz nadszedł czas, aby kodować i trzymać kciuki! Jeszcze raz dzięki chłopaki!

Migwlipk84
11-23-2022 23:26, 23:26
Wskazówki... Pracuję nad oscylatorem, który mówi mi, kiedy nastąpi wybicie, i używam tego ( 0 == BreakOut ) - Definiuję 3 okresy: powiedzmy 200, 100 i 50 - W każdym momencie liczę ile świec został trafiony w przeszłości (w tym okresie po bieżącej cenie) --jeśli po zamknięciu świecy otrzymasz wartość 0, to wiesz, że nie było żadnego trafienia świecy w ciągu ostatnich X okresów. --W ten sposób możesz nadać wartość każdemu ruchowi (jak wskaźnik) --Np.: 0 do 5, robisz coś, inaczej nie jest prawdziwym wybiciem... Używam tej techniki i bez wahania połączę ją z głośnością . Jeśli oba są dobre, mam przerwę… Ale to tylko wskazówki… Możesz zdefiniować High/Low na okres, który lubisz przez: - powiedzmy, High/Low na wczoraj, - według czasu (jak PipBoxer) - lub użyj indior, takiego jak CCI (Aby uzyskać szczyt i dół, odzyskaj swoją cenę HighLow za ten okres). Jeśli potrzebujesz pomocy, zadaj jasne pytanie, a ja postaram się odpowiedzieć!

iresepgycho
11-24-2022 00:48, 00:48
W MetaEditorze, jeśli naciśniesz F1, gdy masz kursor na nazwie funkcji w kodzie (np. iHighest), otrzymasz dość obszerny opis funkcji i jej parametrów. Nie krępuj się zadawać więcej pytań, jeśli utkniesz, jest tu wiele osób chętnych do pomocy.

Legugoxris34
11-24-2022 02:10, 02:10
Dziękuję tesla. Nie chcę tylko, żeby to działało. Chcę właściwie zrozumieć, jak i dlaczego. Rozgryzę fragment kodu, który zamieściłeś. Jestem pewien, że pomoże mi, gdy zrozumiem, co robi. Jeszcze raz dziękuję.

iresepgycho
11-24-2022 03:33, 03:33
This should get you started. Obviously you have to set the start and end times appropriately. PHP Code: <code><span style=”color: #000000”> <span style=”color: #0000BB”>datetimedtBoxStart</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>D</span><span style=”color: #DD0000”>'2006.12.0100:00'</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Definestartday/time
</span><span style=”color: #0000BB”>datetimedtBoxEnd</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>D</span><span style=”color: #DD0000”>'2006.12.0101:00'</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Defineendday/time

</span><span style=”color: #0000BB”>intiStartOffset</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iBarShift</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>dtStart</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>true</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”>intiEndOffset</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iBarShift</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>dtEnd</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>true</span><span style=”color: #007700”>) </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Upto,butnotincludingbarwithendstarttime

</span><span style=”color: #0000BB”>doubledPeriodHigh</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iHighest</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>MODE_HIGH</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iStartOffset</span><span style=”color: #007700”>-</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”>doubledPeriodLow</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iLowest</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>MODE_LOW</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iStartOffset</span><span style=”color: #007700”>-</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”></span> </span> </code>

Migwlipk84
11-24-2022 04:55, 04:55
Jeśli nie wiesz, jak zrobić Virtual Box (zdefiniować pudełko), aby zautomatyzować swój handel (nie tylko szukasz najlepszych praktyk) Spójrz na Pip_Boxer EA Używa techniki bokserskiej… Używa CCI i innych rzeczy… Jeśli spojrzysz w kodzie i przeczytaj wątek znajdziesz odpowiedź ... Przypuszczam, że nie chcesz narysować prostokątnego pola na wykresie!

Legugoxris34
11-24-2022 06:17, 06:17
Dzięki Zeuzere. nie zależy mi na zobaczeniu pudełka, tylko zdefiniowaniu go i handlu na wybiciach z takiego pudełka. Pracuję nad systemem transakcyjnym, który łączy wybicia z poziomów RSI i ADX. Chcę napisać proste EA, aby móc przetestować wstecznie (i przetestować do przodu) system. Wiem mniej więcej, jak powiedzieć MT4, aby otwierał się na określonym miksie RSI i ADX, ale nie wiem, jak narysować wirtualne pudełko i uruchomić transakcję, gdy boxt zostanie wyłamany ORAZ moje inne wskaźniki zostaną uruchomione. Przyjrzę się kodowi boksera pip, ale nie jestem tak dobrym programistą jak reszta tutaj. (uwaga dla początkujących!) Nie mogłem nadążyć za logiką pudełka. Nie boję się próbować i zepsuć, myślę, że w końcu zrobię to dobrze. Dzięki jeszcze raz! Hal

Legugoxris34
11-24-2022 07:39, 07:39
Dziękuję za wyjaśnienia. Upewnię się, że je rozumiem. Hal