Komputerowe systemy na rynkach finansowych wykład 5 MQL4 - funkcje operujące na obiektach wykresu
ObjectCreate - funkcja tworzy nowy obiekt graficzny, określonego typu oraz nadaje mu nazwę i przyporządkowuje do okna wykresu umieszczając obiekt w miejscu określonym parametrami. Liczba parametrów opisujących współrzędne położenia obiektu jest zależna od typu obiektu i może przyjmować od 1 do 3 par zmiennych czas/cena. Położenie większość typów obiektów graficznych umieszczanych na wykresie określane jest parą wartości czas/cena, ale niektóre typy obiektów tak jak np. OBJ_LABEL nie są umieszczone nad konkretnym słupkiem wykresu, dlatego do ustawienia tego typu obiektu w dowolnym miejscu wykresu korzystamy z funkcji ObjectSet() oraz parametrów OBJPROP_XDISTANCE (położenie w poziomie, oś x) i OBJPROP_YDISTANCE (położenie w pionie, oś y). Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Każde okno w terminalu jest identyfikowane indeksem. Indeks okna głównego wykresu przyjmuje wartość 0, natomiast każde kolejne okno (pod okno wykresu głównego np. wykres wskaźnika w osobnym podoknie) numerowane jest od 1 do n. bool ObjectCreate( string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0) gdzie: name nazwa obiekt, każdy obiekt powinien mieć inną nazwę type typ obiektu określony stałą window numer okna do którego ma być dodany obiekt graficzny time1-3 pierwsza-trzecia współrzędna czasu na wykresie price1-3 pierwsza-trzecia współrzędna ceny na wykresie Wartość zwracana true jeśli funkcja zakończyła się powodzeniem false jeśli funkcja zakończyła się niepowodzeniem
if(!objectcreate("text_object1", OBJ_TEXT, 0, D'2013.05.15 12:00',1.2980)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); } if(!objectcreate("text_object2", OBJ_TEXT, 0, Time[20],High[20]+10*Point)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); } // tworzymy nowy obiekt tekstowy typu label na wykresie if(!objectcreate("label_object1", OBJ_LABEL, 0, 0, 0)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); }
Tabela 1 Stałe określające typ obiektu mogą przyjmować poniższe wartości.
ObjectDelete - funkcja usuwa obiekt z wykresu określony nazwą. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). bool ObjectDelete( string name ) Parametry name nazwa obiektu, który ma zostać usunięty Wartość zwracana true jeśli funkcja zakończyła się powodzeniem false jeśli funkcja zakończyła się niepowodzeniem if(!objectcreate("label_object1", OBJ_LABEL, 0, 0, 0)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); }... ObjectDelete("label_object1");...
ObjectDescription - funkcja zwraca wartość opisującą obiekt graficzny typu OBJ_TEXT, OBJ_LABEL. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Parametry: name nazwa obiektu graficznego Wartość zwracana Tekst opisu obiektu graficznego string ObjectDescription( string name ) if(!objectcreate("label_object1", OBJ_LABEL, 0, 0, 0)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); } Print("Objekt o nazwie label_object1 opisany jest =", ObjectDescription( label_object1 ));... ObjectFind - funkcja zwraca numer indeksu obiektu na podstawie podanej nazwy obiektu. Jeśli funkcja powiedzie się zwraca numer indeksu obiektu, w przeciwnym razie wartość -1. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). int ObjectFind( string name ) Parametry: name nazwa obiektu graficznego Wartość zwracana: numer indeks obiektu lub -1 jeśli nie znaleziono obiektu o podanej nazwie.
ObjectGet - funkcja zwraca parametry obiektu graficznego określone po przez nazwę obiektu oraz indeks parametru opisującego obiekt. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). double ObjectGet( string name, int index ) Parametry name nazwa obiektu graficznego index indeks parametru opisującego obiekt Wartość zwracana wartość parametru opisującego obiekt color oldcolor = ObjectGet("obj_linia", OBJPROP_COLOR); Tabela 2 Stałe określające właściwości obiektów mogą przyjmować poniższe wartości.
ObjectMove - funkcja przesuwa obiekt na wykresie. Obiekt określony jest za pomocą nazwy a parametry za pomocą indeksu od 0 do 2 określającego, które współrzędne należy przesunąć oraz wartości współrzędnych czas/cena. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). bool ObjectMove( string name, int point, datetime time, double price) Parametry: name nazwa obiektu graficznego point indeks określający współrzędne (0-2) time nowa wartość czasu price nowa wartość ceny Wartość zwracana true jeśli funkcja zakończyła się powodzeniem false jeśli funkcja zakończyła się niepowodzeniem ObjectMove("MojaLiniaTrendu ", 1, D'2009.09.25 12:30', 1.2345) ObjectName - funkcja zwraca nazwę obiektu graficznego na podstawie podanego indeksu obiektu. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). string ObjectName( int index ) Parametry index wartość określająca indeks obiektu z zakresu od 0 do ObjectsTotal() Wartość zwracana: nazwa obiektu określonego indeksem.
ObjectsTotal - funkcja zwraca liczbę obiektów określonego typu, które znajdują się na aktualnym wykresie. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). int ObjectsTotal( int type=empty ) Parametry type typ obiektów które mają zostać zliczone lub wartość domyślna wówczas będą zliczone wszystkie obiekty Wartość zwracana liczba zliczonych obiektów na wykresi int wszystkie_objekty = ObjectsTotal(); string nazwa; for(int i=0;i< wszystkie_objekty;i++) { nazwa = ObjectName(i); Print(i,"Nazwa obiektu o indeksie ",i," to " + name); }
ObjectsDeleteAll - funkcja usuwa wszystkie obiekty określonego typu ze wskazanego okna/podokna wykresu. Funkcja zwraca ilość usuniętych obiektów. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Notes: Jeśli podana wartość indeksu okna jest nieprawidłowa lub równa -1 to zostaną usunięte wszystkie obiekty z okna na którym wywołano funkcję ObjectsDeleteAll(). Jeśli podana wartość typu obiektu jest nieprawidłowa lub równa -1 to zostaną usunięte wszystkie obiekty z okna na którym wywołano funkcję ObjectsDeleteAll(). int ObjectsDeleteAll( int window=empty, int type=empty ) Parametry: window indeks okna z zakresu 0 do WindowsTotal() lub wartość domyślna EMPTY wówczas usuwa obiekty z okna głównego oraz podokien type indeks typu obiektu jaki ma zostać usunięty lub wartość domyślna wówczas usuwa wszystkie typy obiektów Wartość zwracana: liczba usuniętych obiektów. // usuwa wszystkie obiekty typu linia pozioma z 1 podokna ObjectsDeleteAll(2, OBJ_HLINE); // usuwa wszystkie typy obiektów z 2 podokna ObjectsDeleteAll(2); // usuwa wszystkie obiekty z wszystkich okien ObjectsDeleteAll();
ObjectSet - funkcja ustawia parametry obiektu graficznego określone poprzez nazwę obiektu oraz indeks parametru opisującego obiekt. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). bool ObjectSet( string name, int index, double value ) Parametry name nazwa obiektu graficznego index indeks parametru opisującego obiekt value nowa wartość parametru obiektu Wartość zwracana true jeśli funkcja zakończyła się powodzeniem, false jeśli funkcja zakończyła się niepowodzeniem // ustawia wartość parametru time1 linii trendu na czas ostatniego słupka wykresu ObjectSet("MojaLiniaTrendu", OBJPROP_TIME1, Time[0]); // ustawia drugi (indeks 1) poziom obiektu Fibonacci ObjectSet("MojPoziomFibo", OBJPROP_FIRSTLEVEL+1, 1.3402); // ustawia widoczność obiektu będzie widoczny tylko na wykresie 15 minutowym ObjectSet("MojObjektNaWykresie", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 OBJ_PERIOD_H1); // tworzymy nowy obiekt tekstowy typu label na wykresie a następnie zmienia jego położenie if(!objectcreate("label_object1", OBJ_LABEL, 0, 0, 0)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); } ObjectSet("label_object1", OBJPROP_XDISTANCE, 200); ObjectSet("label_object1", OBJPROP_YDISTANCE, 100); Stałe określające właściwości obiektów mogą przyjmować poniższe wartości (patrz Tabela 2).
ObjectSetText - funkcja ustawia opis tekstowy i format tekstu obiektów typu OBJ_TEXT oraz OBJ_LABEL. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). bool ObjectSetText( string name, string text, int font_size, string font=null, color text_color=clr_none ) Parametry: name nazwa obiektu graficznego typu tekstowego text tekst obiektu font_size wielkość czcionki w punktach font nazwa rodzaju czcionki text_color kolor czcionki Wartość zwracana: true jeśli funkcja zakończyła się powodzeniem false jeśli funkcja zakończyła się niepowodzeniem. if(!objectcreate("label_object1", OBJ_LABEL, 0, 0, 0)) { Print("błąd: nie mogę utworzyć obiektu #",GetLastError()); return(0); } ObjectSet("label_object1", OBJPROP_XDISTANCE, 200); ObjectSet("label_object1", OBJPROP_YDISTANCE, 100); ObjectSetText("label_object1", "To jest test", 10, "Times New Roman", Red);...
ObjectType - funkcja zwraca typ obiektu na podstawie podanej nazwy obiektu. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). int ObjectType( string name ) Parametry: name nazwa obiektu graficznego. Wartość zwracana: indeks typu obiektu określony nazwą. int obj_typ = ObjectType("linia_122"); Print( "Indeks typu obiektu linia_122 to " + obj_type ); ObjectGetFiboDescription - funkcja zwraca wartość opisową obiektu graficznego typu Fibonacci. Obiekt typu Fibonacci może posiadać do 32 poziomów, z których wartości opisowe pobieramy poprzez podanie indeksu poziomu numerując od 0 do 31. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). string ObjectGetFiboDescription( string name, int index ) Parametry: name nazwa obiektu graficznego, index indeks poziomu Fibonacci (0-31). Wartość zwracana: wartość parametru opisującego obiekt. string tekst; for(int i=0;i<32;i++) { tekst = ObjectGetFiboDescription( MojObjektFibo, i ); if( GetLastError()!= 0 ) break; Print( MojObjektFibo,"poziom: ",i," tekst opisu: ",tekst); }
ObjectGetShiftByValue - funkcja wyznacza numer słupka na podstawie podanej wartości ceny. Indeks słupka na wykresie wyznaczany jest na podstawie pierwszej i drugiej pary parametrów opisujących obiekt np. typu OBJ_TREND. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). int ObjectGetShiftByValue( string name, double value) Parametry: name nazwa obiektu graficznego value wartość ceny. Wartość zwracana: wyznaczony numer słupka. int przesunięcie = ObjectGetShiftByValue("MojaLiniaTrendu", 1.3402); ObjectGetValueByShift - funkcja wyznacza numer słupka na podstawie podanego numeru słupka. Indeks słupka na wykresie wyznaczany jest na podstawie pierwszej i drugiej pary parametrów opisujących obiekt np. typu OBJ_TREND. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). double ObjectGetValueByShift( string name, int shift ) Parametry name nazwa obiektu graficznego shift numer słupka na wykresie double price = ObjectGetValueByShift("MojaLiniaTrendu", 12);
ObjectSetFiboDescription - funkcja ustawia nowy opis dla obiektu, poziomów Fibonacciego. Poziomy Fibonacciego oznaczane są indeksem od 0 do 31. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). bool ObjectSetFiboDescription( string name, int index, string text ) Parametry: name nazwa obiektu graficznego index numer indeksu poziomu Fibonacciego. text nowy opis poziomu Fibonacciego Wartość zwracana: true jeśli funkcja zakończyła się powodzeniem false jeśli funkcja zakończyła się niepowodzeniem. ObjectSetFiboDescription("MojPoziomFibo",2,"Druga linia 0.707"); źródło: http://bossa.pl/index.jsp?layout=2&page=0&news_cat_id=1141