Wskaźniki z kropkami i strzałkami

Często zachodzi potrzeba napisania wskaźnika, który w odpowiednim miejscu na wykresie ceny zaznaczy kropką lub strzałką jakiś ważny punkt, np. osiągnięcie przez oscylator określonego poziomu lub przecięcie średnich ruchomych.

Osobiście bardzo lubię tego typu wskaźniki, ponieważ nie „zaciemniają” one wykresu, a jednocześnie pozwalają precyzyjnie określić miejsce spełnienia określonego warunku, co nie zawsze można łatwo odczytać z okienka oscylatora.

Implementacja takiego wskaźnika jest bardzo prosta, a szablon zamieszczam poniżej.

#property indicator_chart_window

// określamy liczbę oraz kolorystykę buforów wskaźnika
#property indicator_buffers 2
#property indicator_color1 RoyalBlue
#property indicator_color2 Red

// warto także pogrubić nasze kropki, aby były bardziej wyraźne
#property indicator_width1 2
#property indicator_width2 2

// definiujemy tablice wskaźnika
double long[];
double short[];

// zmienna zewnętrzna do określenia odległości kropki od świeczki
extern int margin=20;

int init() {

 // ustawiamy właściwości wyświetlania buforów wskaźnika

 SetIndexBuffer(0,long);
 SetIndexStyle(0,DRAW_ARROW,0,1);
 SetIndexArrow(0,159); // 159 to kod kropki

 SetIndexBuffer(1,short);
 SetIndexStyle(1,DRAW_ARROW,0,1);
 SetIndexArrow(1,159);

 return(0);
}

int start() {

 // rozpoczynamy sprawdzanie warunków dla 500 ostatnich okresów

 for(int i=0;i<500;i++) {

  if(........) { // warunek na long (niebieska kropka poniżej świeczki)
   long[i]=Low[i]-margin*Point;
  } else {
   long[i]=EMPTY_VALUE;
  }

  if(........) { // warunek na short (czerwona kropka powyżej świeczki)
   short[i]=High[i]+margin*Point;
  } else {
   short[i]=EMPTY_VALUE;
  }

 }

 return(0);
}

Kod do rysowania strzałek wygląda analogicznie, z tym, że jako drugi parametr funkcji SetIndexArrow podajemy 241 dla long oraz 242 dla short.

Podziel się ze znajomymi:

Prześlij nam swoje uwagi

[contact-form-7 404 "Not Found"]
  • Facebook