Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
ninjaproject
Pasjonat
Pasjonat
Posty: 682
Rejestracja: 30 lip 2019, 13:15
Kontakt:

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

SuchyRyz pisze:
14 mar 2020, 21:14
Ahhh, czyli jednak będę musiał poprosić kogoś o pomoc :/
Mogę zapytać w w którym miejscu jest ten błąd? Wskaźnik na podstawie tego kodu działa bez zarzutu.
Proszę.
Tylko w opcji WPR, to chyba Reverse = true.
CCI_WPR_RSI_mod_by_Dadas.mq4
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

SuchyRyz
Bywalec
Bywalec
Posty: 13
Rejestracja: 26 lis 2017, 23:24

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: SuchyRyz »

Dzięki wielkie, już rozumiem o co chodzi z funkcją iCustom(). Jeszcze chciałbym zapytać odnośnie tych buforów. Napisałeś, że do wskaźników domyślnie dostarczanych w MT4 są gotowe funkcje typ: iRSI i z tego co widzę wskaźnik williams percent range jest dostarczany w każdym MT4 więc czy nie wystarczyłaby tutaj funkcja iWPR tak jak w przypadku rsi?

ninjaproject
Pasjonat
Pasjonat
Posty: 682
Rejestracja: 30 lip 2019, 13:15
Kontakt:

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Tak, zobacz w kod, który ci zapodałem (wskaźnik).
Wykorzystałem iWPR() sokoro jest.

SuchyRyz
Bywalec
Bywalec
Posty: 13
Rejestracja: 26 lis 2017, 23:24

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: SuchyRyz »

Dzięki już chyba zaczynam coś tam łapać. :D

ninjaproject
Pasjonat
Pasjonat
Posty: 682
Rejestracja: 30 lip 2019, 13:15
Kontakt:

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

SuchyRyz pisze:
16 mar 2020, 20:45
Dzięki już chyba zaczynam coś tam łapać. :D
To, sumie nie jest takie skomplikowane, jest to jakiś język oparty na angielskim, więc powoli można się cokolwiek nauczyć.
Gdy ktoś zna angielski, to łatwiej jest.
A fajne też jest to, że zmienne można definiować samemu, więc można łączyć polski z angielskim, tylko polskich znaków nie używać!

tosiek83
Bywalec
Bywalec
Posty: 14
Rejestracja: 24 mar 2008, 13:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: tosiek83 »

Witam
Mam takie pytanko, stworzyłem sobie pewien wskaźnik (taki przykładowy), który po spełnieniu pewnego warunku pokazuje na wykresie okienko z alertem. Jest problem z tym że alert wyskakuje po każdym tiku, jak zrobić aby alert wyskakiwał tylko raz po zakończeniu pełnej świeczki (na otwarciu nowej).

Kod: Zaznacz cały

int start()
  {
   if(Close[1]<Open[1])
      Alert("swieca spadkowa na ",_Symbol);
   else
      Alert("swieca wzrostowa na ",_Symbol);
   return(0);
  }

ninjaproject
Pasjonat
Pasjonat
Posty: 682
Rejestracja: 30 lip 2019, 13:15
Kontakt:

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Trzeba zainicjować Alert tylko raz, po zamknięciu świecy.
Funkcja start() jest wykonywana przy każdym ticku, więc o ile warunek jest spełniony, to będzie alertować tyle razy, ile ticków będzie.

tosiek83
Bywalec
Bywalec
Posty: 14
Rejestracja: 24 mar 2008, 13:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: tosiek83 »

ninjaproject pisze:
24 mar 2020, 20:22
Trzeba zainicjować Alert tylko raz, po zamknięciu świecy.
Nie bardzo wiem jak napisać to w kodzie po jeszcze trochę raczkujący jestem w temacie programowania.
Jak możesz to napisz jak zainicjować Alert po zamknięciu świecy.
Z góry dzięki

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1498
Rejestracja: 09 sie 2009, 21:27
Lokalizacja: Głogów

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Jedną z metod określenia nowej świecy i chyba najprostszą jest sprawdzenie pierwszego ticku świecy :

Kod: Zaznacz cały

if( Volume[0]==1)
Musisz stworzyć zmienną np.

Kod: Zaznacz cały

int block=0;
I w bloku start ten warunek będzie wyglądał tak :

Kod: Zaznacz cały

if( twoje warunki alertu   && block==0){Alert();block=1;}
if(Volume[0]==1)block=0; // zdjęcie blokady na nowej świecy
Solą życia jest kasa.

ninjaproject
Pasjonat
Pasjonat
Posty: 682
Rejestracja: 30 lip 2019, 13:15
Kontakt:

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Np. piszesz (lub znajdujesz gotowca w necie) taką funkcję typu bool, jak IsNewBar().
Zapodałem w kodzie.
Ta funkcja wyrzuca false kiedy nie ma nowej świecy, a true, kiedy się nowa świeca pojawia.
Operacje z czasem, to są.
Alert się inicjuje tylko raz, kiedy IsNewBar() wyrzuca true.
Stąd twój kod w nawiasach warunku if(IsNewBar) { }.

Kod: Zaznacz cały

int start()
  {
  if(IsNewBar())
   {
   if(Close[1]<Open[1])
      Alert("swieca spadkowa na ",_Symbol);
   else
      Alert("swieca wzrostowa na ",_Symbol);
  }
   return(0);
  }
  
//+------------------------------------------------------------------+
bool IsNewBar()
{ 
  static datetime Candle_prevTime1 = -1;
  
  if(Candle_prevTime1 != Time[6])
  { 
   Candle_prevTime1 = Time[6]; 
       
   return(true);  
  } 

  return(false); 
}
//+------------------------------------------------------------------+
  
PS. Ta funkcja nigdy mnie nie zawiodła, a stosuję ją od lat.

ODPOWIEDZ