Kod: Zaznacz cały
double line1= ObjectGet(HLine1, OBJPROP_YDISTANCE);
Chcę ustawić label na tej samej wysokości ceny co linia pozioma HLine1
Kod: Zaznacz cały
ObjectSet("Label1", OBJPROP_YDISTANCE, line1);
Kod: Zaznacz cały
double line1= ObjectGet(HLine1, OBJPROP_YDISTANCE);
Kod: Zaznacz cały
ObjectSet("Label1", OBJPROP_YDISTANCE, line1);
Kod: Zaznacz cały
double line1= ObjectGet(HLine1, OBJPROP_PRICE1);
ObjectSet("Label1", OBJPROP_PRICE1, line1);
Kod: Zaznacz cały
ObjectCreate("Text1",..Opcje dla OBJ_TEXT..); //Na Time[0] oczywiscie
double line1= ObjectGet(HLine1, OBJPROP_PRICE1);
ObjectSet("Text1", OBJPROP_PRICE1, line1);
powiązałem już, ale irytuje mnie forma współrzędnej i fakt że obiekt ma zawieszenie na środku a Label ma opcje wyboru narożnika. Ta niedogodność rozszerzającego się tekstu i justowanie do środka .. nie wiem jak to łatwo opanować, by zawsze mieć wyrównanie tekstu do prawej lub lewejgUral pisze:Rozwiazeniem jest OBJ_TEXT któremu podajesz cene i czas jako współrzędne więc możesz go powiązać z poziomą linia.
Zacząłem kombinować z window, ale wrr... skala (jeszcze nie wiem jak jest liczona hehe)gUral pisze:Objekt Label ustawiamy podajac jako współrzędne odleglosc w pikselach od danego rogu i nie ma mozliwości (chyba) przeliczenia pikseli na skale ceny, wiec raczej nie ustawisz Label przy zadanej cenie.
Kod: Zaznacz cały
double skala=(((WindowPriceMax()-WindowPriceMin())/Point) /WindowBarsPerChart());
Czyli wewnętrznie w mt4 nie ma 2 zmiennej, więc jest zeroJeśli chodzi o linię poziomą to nie można pobrać OBJPROP_YDISTANCE ponieważ jest ona przypisana do ceny, możemy tylko pobrać OBJPROP_PRICE1.
Trochę tych Labelków chciałbym użyć, a fakt, że rozplanowanie ich "po czasie" z pomocą OBJ_TEXT nie jest łatwe to mam zagadkę, w sumie już widzę, że sprawa mi się komplikujexamael pisze:reptile nie pamiętam jak to było z labelem ale najlepiej pobrać cene i uzyc obiektu text, chociaż w sumie może i label też da się po cenie.
spróbuj
Kod: Zaznacz cały
void rysuj_obj_text(string obiekt)
{
static double wsp_price=0.5; // text bedzie w polowie skali ceny
static double wsp_time=0.5; // skali czasu
static double price_min=0;
static double price_max=0;
static datetime data_0=0;
static int first_bar=0;
static int ilosc_bar=0;
double price;
datetime data;
int indeks;
// ----- jesli siatka okna sie zmieni to pozycjonujemy obiekt
if ( price_min!=WindowPriceMin() || price_max!WindowPriceMax() || first_bar!=WindowBarsPerChart() || ilosc_bar!=WindowBarsPerChart() || data_0!=Time[0] )
{
price_min=WindowPriceMin();
price_max=WindowPriceMax();
data_0=Time[0];
first_bar=WindowFirstVisibleBar();
ilosc_bar=WindowBarsPerChart();
// ----------- szukanie srodka skali ceny
price=NormalizeDouble(price_max-(wsp_price*(price_max-price_min)),Digits);
// --------- skala czasu
indeks=NormalizeDouble(first_bar-(wsp_time*WindowBarsPerChart()),0);
if (indeks < 0 ) //--- jesli indeks ujemny to trzeba stworzyc date
{
data=Time[0]+(Period()*60*(-indeks));
Alert(TimeToStr(data));
}
else
{
data=Time[indeks];
}
ObjectCreate(obiekt,OBJ_TEXT,0,data,price);
ObjectSetText(obiekt,obiekt,10);
ObjectSet(obiekt,OBJPROP_PRICE1,price);
ObjectSet(obiekt,OBJPROP_TIME1,data);
}
}