wartość ostatniego fraktala

O jezykach programowania w platformach i nie tylko.
djszaki
Bywalec
Bywalec
Posty: 15
Rejestracja: 17 sty 2017, 18:59

wartość ostatniego fraktala

Nieprzeczytany post autor: djszaki »

Witam, jest możliwość odczytania wartości ostatniego fraktala ?

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

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: Mustafa »

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.

djszaki
Bywalec
Bywalec
Posty: 15
Rejestracja: 17 sty 2017, 18:59

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: djszaki »

Witam, zrobiłem zgodnie z opisem:
http://bossa.pl/index.jsp?layout=2&page ... at_id=1304

tj.

double iFractals( string symbol, int timeframe, int mode, int shift)
Parametry
symbol – symbol rynku lub NULL dla aktualnego symbolu z wykresu
timeframe – skala czasowa danych lub 0 dla aktualnej skali czasowej z
wykresu symbolu
mode – typ liczonej wartości wskaźnika:
MODE_UPPER - górna linia
MODE_LOWER - dolna linia
shift – przesunięcie względem aktualnego numeru słupka
Wartość zwracana
wynik obliczeń wskaźnika na danym słupku
double wynik = iFractals(NULL, 0, MODE_UPPER, 3);

mój kod mający na celu tylko i wyłącznie wyświetlenie wartości ostatniego fraktala, wyświetla cały czas zero dlaczego ?

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict

double wynik;
int OnInit()
{
RefreshRates();
return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
}
void OnTick()
{

RefreshRates();

wynik = iFractals(NULL, 0, MODE_UPPER, 1);

Comment("Aktualna wartość fraktala ",wynik);
}

TesterForex
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 22 gru 2016, 12:45

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: TesterForex »

Ta funkcja nie zwraca wartości ostatniego fractala, tylko wartość fraktala wybranego rodzaju dla wybranej świecy.

Kod: Zaznacz cały

iFractals(NULL, 0, MODE_UPPER, 1);
Ten kod sprawdza wartość fraktala wzrostowego na poprzedniej świecy. Jeżeli na poprzedniej świecy akurat nie ma fraktala wzrostowego, to funkcja zwraca 0.

Musisz w pętli (zmieniać wartość parametru shift) wywołać tę funkcję dla trybu MODE_UPPER i MODE_LOWER i przerwać ją przy pierwszej znalezionej wartości (wyniku różnym od zera).
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch

djszaki
Bywalec
Bywalec
Posty: 15
Rejestracja: 17 sty 2017, 18:59

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: djszaki »

jakaś podpowiedź odnośnie tej pętli ?

for( i=1,i!=0 ,i++)
{
wynik = iFractals(NULL, 0, MODE_UPPER, i);
i = wynik;
}

tak może być ?

TesterForex
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 22 gru 2016, 12:45

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: TesterForex »

Gotowe rozwiązanie (jak chciałeś tylko podpowiedź, to nie patrz:P):

Kod: Zaznacz cały

double getLastFractal(){
 
   double val = 0;
   
   for(int i=0; i < Bars; i++) {
      val = iFractals(NULL,0,MODE_UPPER,i);
      if(val)
         return val;
         
      val = iFractals(NULL,0,MODE_LOWER,i);
      if(val)
         return val*-1;
        
    }
   
   return 0;

}
Jak funkcja trafi najpierw na fraktal spadkowy, to zwraca jego wartość z przeciwnym znakiem.
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch

djszaki
Bywalec
Bywalec
Posty: 15
Rejestracja: 17 sty 2017, 18:59

Re: wartość ostatniego fraktala

Nieprzeczytany post autor: djszaki »

super wielkie dzięki, działa :), gotowca nie chciałem ale jak już dałeś to jestem bardzo wdzięczny :)

ODPOWIEDZ