MTF Candle Body in Pips // Potrzebna pomoc

O jezykach programowania w platformach i nie tylko.
Ribelo
Stały bywalec
Stały bywalec
Posty: 44
Rejestracja: 18 lut 2010, 20:28

MTF Candle Body in Pips // Potrzebna pomoc

Nieprzeczytany post autor: Ribelo »

O ile nie mam żadnych problemów z napisaniem indyka, który będzie robił wszystko co tylko zapragnę korzystając z aktualnego TF, to mam zawsze potężne problemy, by zrobić coś, co będzie multiokresowe(ale to dziwnie brzmi po naszemu).

To, z czym walczę teraz, to by pokazywać na indyku wielkość ciała świec, z wyższego interwału. Wszystko działa jak należy zaraz po inicjalizacji wskaźnika, na świeczkach "historycznych". Jednak każda nowa świeczka jest....szalona.

Kod wygląda tak:

Kod: Zaznacz cały

int start() {
   datetime time.array[];
   ArrayCopySeries(time.array,MODE_TIME,Symbol(),candle.timeframe);
   int i, y;
   for ( i = Bars + candle.timeframe/Period() - IndicatorCounted(), y = iBars(NULL, candle.timeframe) + candle.timeframe/Period() - IndicatorCounted(); i >= 0; i-- ) {

      if ( Time[i+candle.timeframe/Period()] >= time.array[y] ) {
         y--;
         z = 0;
      } else {
         z++;
      }
      candle.body[i] = 0;
      average.body[i] = 0;      
      if ( mode.total == true ) {
         candle.body[i] = MathAbs(iOpen( NULL, candle.timeframe, y )-iClose( NULL, candle.timeframe, y )) / global.multiplier / Point; 
      } else {
         if ( z == 0 ) {
            candle.body[i] = MathAbs( Open[i] - Close[i] ) / global.multiplier / Point;     
         } else if ( z > 0 ) {
            candle.body[i] = MathAbs( iOpen(NULL, candle.timeframe, y) - Close[i] ) / global.multiplier / Point;
         }
      } 
   }
         
   return ( 0 );
}
Jednocześnie próbuję rysować średnią opierając się na danych, ale z racji, że nie bardzo rozumiem "MTF", też niewiele z tego wychodzi.

Jakby ktoś mógł za jednym zamachem ogarnąć i to, byłbym dłużnikiem.

Indykator dostępny również w załączniku.

EDIT:

Jeśli chodzi o "mode.total"....

indyk pokazuje, a przynajmniej w założeniu powinien pokazywać wielkość świecy z wyższego TF na dwa sposoby. Całościowo....jak i sumę świec z aktualnego TF. Tzn, że gdy na h1 liczymy d1, to histogram pokazuje stan świecy d1 z każdej świecy h1. Ciężko to wytłumaczyć, łatwiej zobaczyć. To działa, ale może wywoływać chaos i niezrozumienie.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

wyciągaj świece od razu w odpowiednim TF, masz w funkcji kopiującej odpowiedni do tego parametr

chyba próbujesz składać wyższego TF z niższego (i tu trzeba uważać bo jak np będziesz chciał pokazać świece M5 składających się z M1 to nie bierzesz zawsze 5 świec z M1, a jest to w zależności w którym czasie jesteś albo:
1 x M1, 2 x M1, 3 X M1, 4 x M1, 5 x M1.

Jeśli byś chciał składać wyższy TF z mniejszego to musisz brać to pod uwagę.

Weź jakiś wskaźnik już z MTF i zerknij jak jego zbudowano.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Ribelo
Stały bywalec
Stały bywalec
Posty: 44
Rejestracja: 18 lut 2010, 20:28

Nieprzeczytany post autor: Ribelo »

Właśnie w tym rzecz, że zerżnąłem to żywcem z innego wskaźnika. Tam działa, tu nie.

Jeśli chodzi o to, jak to działa i co się tak naprawdę pieprzy...

Obrazek

Jak widać na historii ładnie pokazywał to, co miał pokazywać. Jednak każdy następny słupek histogramu jest z kosmosu.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

tu masz taki wskaźnik
http://codebase.mql4.com/3633
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Ribelo
Stały bywalec
Stały bywalec
Posty: 44
Rejestracja: 18 lut 2010, 20:28

Nieprzeczytany post autor: Ribelo »

Własnie z niego korzystam, jest na wykresie...

Mi chodzi o histogram. Na pytanie na co mi to...to tak dla sportu:P

Nie miałbym problemy z rysowaniem boxów na ekranie, bo to kwestia sprawdzania godziny dla ceny nr 1 i danie aktualnej ceny, jako ceny nr2. W histogramie, kiedy chcę zmieniać kilka ostatnich słupków, mam problem.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

z wykresu widać że wszystko było ok - do momentu chyba zejścia poniżej wybranego TF a więc ten motyw co pisałem

jak dla sportu to stwórz coś z własnej koncepcji lub z innego wskaźnika MTF :)
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 777
Rejestracja: 20 lip 2010, 10:54

Re: MTF Candle Body in Pips // Potrzebna pomoc

Nieprzeczytany post autor: Mustafa »

Ribelo pisze:O ile nie mam żadnych problemów z napisaniem indyka, który będzie robił wszystko co tylko zapragnę korzystając z aktualnego TF, to mam zawsze potężne problemy, by zrobić coś, co będzie multiokresowe(ale to dziwnie brzmi po naszemu).

To, z czym walczę teraz, to by pokazywać na indyku wielkość ciała świec, z wyższego interwału. Wszystko działa jak należy zaraz po inicjalizacji wskaźnika, na świeczkach "historycznych". Jednak każda nowa świeczka jest....szalona.
najprościej użyć funkcji;

Kod: Zaznacz cały

iOpen(SYMBOL(),PERIOD_H1,0);
iHigh(SYMBOL(),PERIOD_H1,0);
iLow(SYMBOL(),PERIOD_H1,0);
iClose(SYMBOL(),PERIOD_H1,0);

Funkcja zwraca cenę *** ze słupka określonego parametrem indeks, na wykresie określonym parametrami symbol i skala czasowa. Indeks musi znajdować się pomiędzy wartością 0, a Bars-1 lub odczytaną za pomocą funkcji iBars()-1.
mam nadzieję, że pomogłem :mrgreen:
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

Ribelo
Stały bywalec
Stały bywalec
Posty: 44
Rejestracja: 18 lut 2010, 20:28

Nieprzeczytany post autor: Ribelo »

Powiem tak. Na priv wytłumaczyłeś to o wiele lepiej, a tutaj się jedynie błaźnisz.

Kod: Zaznacz cały

andle.body[i] = MathAbs(iOpen( NULL, candle.timeframe, y )-iClose( NULL, candle.timeframe, y ))
Nie wiem czym się różni to co ja napisałem, od Twojej wiedzy wylewającej się z poprzedniego posta.

ODPOWIEDZ