Nie trzeba długo programować w MQLu, aby zacząć narzekać na domyślny mechanizm nanoszenia komentarzy na wykres. W przypadku większej ilości danych, które chcemy wyświetlić na wykresie eleganckim posunięciem będzie stworzenie sobie do tego celu funkcji pomocniczych.
Poniżej prezentuję przykładowe dwie funkcję, których sam używam w projektach:
string writeBuffer=""; void write(string text1="",string text2="") { if(text2!="") { writeBuffer=StringConcatenate(writeBuffer,text1,": ",text2,"\n"); } else { writeBuffer=StringConcatenate(writeBuffer,text1,"\n"); } } void writeOut() { Comment(writeBuffer); writeBuffer=""; }
Teraz krótko: jak tego używać i co dzięki temu zyskujemy. Użycie jest bardzo proste i elastyczne, prześledźmy je na kodzie poniżej:
extern int sl=80; // przykładowy parametr EA int start() { write(); // dodajemy pustą linię write("Test wyświetlania komentarzy"); // dodajemy prosty tekst write("Stop loss",sl); // dodajemy linię z wyświetlaniem zmiennej f(); writeOut(); } void f() { write("Funkcja f()"); } // oczywiście na końcu doklejamy kod z pierwszego listingu // zawierający definicję zmiennej i funkcji
Rozwiązanie z wykorzystaniem funkcji write i writeOut jest dobre, ponieważ:
- Taki kod wygląda znacznie ładniej…
- …i zajmuje o wiele mniej niż doklejanie kolejnych wartości do zmiennej
- Odpadają nam problemy związane z koniecznością pamiętania o zasięgach zmiennych, a także problemy z wyświetlaniem komentarzy z wywołanych funkcji
- Znacznie upraszcza drukowanie zmiennych (nie trzeba się bawić w ręczne doklejanie np znaku „:”)
Tylko nie zapomnijcie dać writeOut() na końcu funkcji start ;)
Autor: Łukasz Tomaszkiewicz