Jak narysować pudełko w MT4? - Strona 2
Strona 2 z 4 PierwszyPierwszy 1234 OstatniOstatni
Pokaż wyniki od 11 do 20 z 34

Wątek: Jak narysować pudełko w MT4?

  1. #11
    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.

  2. #12
    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.

  3. #13
    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!!! :-)

  4. #14
    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.

  5. #15
    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...

  6. #16

    Cytat Zamieszczone przez ;
    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)

  7. #17
    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.

  8. #18
    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;

  9. #19
    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.

  10. #20
    Aha! Dziękuję Zeuzere za lepsze wyjaśnienie Point To jest dokładnie to, czego potrzebowałem. Teraz rozumiem, czym jest Point.

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Używamy cookies
Używamy cookies, aby jak najlepiej dostosować witrynę do Twoich potrzeb. Kontynuowanie przeglądania tej strony, oznacza zgodę na używanie plików cookies. Aby uzyskać więcej informacji zapoznaj się z naszą Polityką Prywatności.