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);
  
  }
}
 
  