automatyczny kolor i opis linii poziomej zależnie od TF
automatyczny kolor i opis linii poziomej zależnie od TF
Hej.
Czy ma ktoś pomysł jak zrobić żeby kolor i opis linii poziomej którą dodaje na do wykresu na TF=Weekly był np. zielony o grubości 3 i opisie kolejno Weekly1Price, Weekly2Price, Weekly3Price itd a jak przejdę na TF=Daily to linie żeby automatycznie tworzyły się niebieskie o grubości 2 i nazwie Daily1Price, Daily2Price .itd....
Czy należy to zrobić tak że po dodaniu linii EA zmienia paratmetry tej nowo utworzonej linii czy da się tak aby jeśli jestem na np. TF=Daily jakimś kodem "powiedzieć" MT4 że każdą kolejną linię ma domyślnie nazywać tak jak chcę ?
Czyli czy można poprzez MQL zmodyfikować domyślne ustawienia dodawanej linii ?
Czy ma ktoś pomysł jak zrobić żeby kolor i opis linii poziomej którą dodaje na do wykresu na TF=Weekly był np. zielony o grubości 3 i opisie kolejno Weekly1Price, Weekly2Price, Weekly3Price itd a jak przejdę na TF=Daily to linie żeby automatycznie tworzyły się niebieskie o grubości 2 i nazwie Daily1Price, Daily2Price .itd....
Czy należy to zrobić tak że po dodaniu linii EA zmienia paratmetry tej nowo utworzonej linii czy da się tak aby jeśli jestem na np. TF=Daily jakimś kodem "powiedzieć" MT4 że każdą kolejną linię ma domyślnie nazywać tak jak chcę ?
Czyli czy można poprzez MQL zmodyfikować domyślne ustawienia dodawanej linii ?
Re: automatyczny kolor i opis linii poziomej zależnie od TF
Popatrz na to. Z opisów linii ostatecznie zrezygnowałem bo robiło się mało czytelnie na wykresie.pim pisze:Hej.
Czy ma ktoś pomysł jak zrobić żeby kolor i opis linii poziomej którą dodaje na do wykresu na TF=Weekly był np. zielony o grubości 3 i opisie kolejno Weekly1Price, Weekly2Price, Weekly3Price itd a jak przejdę na TF=Daily to linie żeby automatycznie tworzyły się niebieskie o grubości 2 i nazwie Daily1Price, Daily2Price .itd....
Czy należy to zrobić tak że po dodaniu linii EA zmienia paratmetry tej nowo utworzonej linii czy da się tak aby jeśli jestem na np. TF=Daily jakimś kodem "powiedzieć" MT4 że każdą kolejną linię ma domyślnie nazywać tak jak chcę ?
Czyli czy można poprzez MQL zmodyfikować domyślne ustawienia dodawanej linii ?
Każdy tf ma oddzielny kolor i grubość.
https://www.youtube.com/watch?v=YBmbnWi ... arekTrader
Mogę to podrzucić jeśli cię interesuje.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
Hej. Dzięki.
Wolałbym bez potrzeby trzymania dodatkowych guzików, kresek na wykresie. Tak jak ty masz to też rozwiązanie , choć łatwiej mi będzie modyfikować naniesioną linię zaraz po utworzeniu kiedy EA stwierdzi na jakim TFie ją naniosłem ale do takiej modyfikacji potrzebny jest jeden "tick" lub kliknięcie odśwież .. a ja się zastanawiam czy można tak że jak przełącze TF to da się zmodyfikować poprzez MQL domyslne parametry liniii.
Wolałbym bez potrzeby trzymania dodatkowych guzików, kresek na wykresie. Tak jak ty masz to też rozwiązanie , choć łatwiej mi będzie modyfikować naniesioną linię zaraz po utworzeniu kiedy EA stwierdzi na jakim TFie ją naniosłem ale do takiej modyfikacji potrzebny jest jeden "tick" lub kliknięcie odśwież .. a ja się zastanawiam czy można tak że jak przełącze TF to da się zmodyfikować poprzez MQL domyslne parametry liniii.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
Po prostu sprawdzasz w kodzie jaki TF ma aktualnie otwarty wykres i odpowiednio modyfikujesz wartości linii. Modyfikujesz za pomocą funkcji ObjectGetInteger, ObjectGetString itp. w zależności od danej wartości.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
No tak, ale jak mam zmienić właściwości objekty typu OBJ_HLINE nie znając jego nazwy ani indexu ?Pablo90 pisze:Po prostu sprawdzasz w kodzie jaki TF ma aktualnie otwarty wykres i odpowiednio modyfikujesz wartości linii. Modyfikujesz za pomocą funkcji ObjectGetInteger, ObjectGetString itp. w zależności od danej wartości.
Zakładam że nanoszę linię z menu MT4, pokazują mi się właściwości i klikam ok bez zapamiętywania nazwy.... i teraz nie wiem jak to ugryźć.. żeby tą linie z defaultową nazwą typu: "Horizontal Line 61010" móc zmieniać ?
-- Dodano: 19 kwie 2016, 10:17 --
No nic, poddaje się... zrobię osobny guziczek do nanoszenia H-Linii i stworzę ją przy pomocy funkcji ObjectCreate wraz ze wszystkim info którę chcę.
Chyba że ktoś zna sposób aby podmienić domyślne parametry z poziomu MQL w takim okienku:
-- Dodano: 19 kwie 2016, 13:18 --
Rozwiązanie (lepsze czy gorsze .. ważne że działa)
mam graficzny guziczek do tego ale można i skryptem:
Kod: Zaznacz cały
void AddAlarmHline()
{
PlaySound ("addline.wav");
string tf1;
switch(Period())
{
case 1: tf1="M1"; break;
case 5: tf1="M5"; break;
case 15: tf1="M15"; break;
case 30: tf1="M30"; break;
case 60: tf1="H1"; break;
case 240: tf1="H4"; break;
case 1440: tf1="Daily"; break;
case 10080: tf1="Weekly"; break;
case 43200: tf1="Monthly"; break;
}
string alarm_hline_name = "ALARM " + Symbol() + " " + tf1 + " " + TimeCurrent();
color tf;
switch(Period())
{
case 1: tf=color_m1; break;
case 5: tf=color_m5; break;
case 15: tf=color_m15; break;
case 30: tf=color_m30; break;
case 60: tf=color_H1; break;
case 240: tf=color_H4; break;
case 1440: tf=color_D1; break;
case 10080: tf=color_W1; break;
case 43200: tf=color_MN; break;
}
ObjectCreate(alarm_hline_name, OBJ_HLINE,0, 0, Bid - 30 * Point);
ObjectSet(alarm_hline_name, OBJPROP_STYLE, 0);
ObjectSet(alarm_hline_name, OBJPROP_COLOR, tf);
ObjectSet(alarm_hline_name, OBJPROP_WIDTH, 3);
ObjectSetText(alarm_hline_name, alarm_hline_name, 35, "Arial");
ObjectSet(alarm_hline_name, OBJPROP_SELECTED, True);
} // end Alarm_Hline
a zaraz po utworzeniu w EA mam to:
Kod: Zaznacz cały
// ============== change Alarm Line
string Name;
for(int i = ObjectsTotal(0,0,OBJ_HLINE) -1 ;i >= 0; i--)
{
Name = ObjectName(i);
if (StringFind(Name, "ALARM", 0) != -1 ) ObjectSetString(0,Name,OBJPROP_TEXT,"ALARM " + NormalizeDouble(ObjectGetDouble(0,Name,OBJPROP_PRICE),Digits));
}
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
Możesz zrobić tak, że EA sprawdza z każdym tickiem czy została utworzona nowa linia, jeśli tak to automatycznie ustawia jej odpowiednią nazwę, po której potem się odnosisz do tego obiektu. Jeżeli nie chcesz, żeby EA modyfikowało każdą poziomą linię to możesz ręcznie przydzielać im nazwy rozpoznawane przez EA.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
dziękiPablo90 pisze:Możesz zrobić tak, że EA sprawdza z każdym tickiem czy została utworzona nowa linia, jeśli tak to automatycznie ustawia jej odpowiednią nazwę, po której potem się odnosisz do tego obiektu. Jeżeli nie chcesz, żeby EA modyfikowało każdą poziomą linię to możesz ręcznie przydzielać im nazwy rozpoznawane przez EA.
Dokładnie tak to zrobiłem

pod "Name" jest dopiero co dodana linia którą na poaczątku nazywam TEST + znacznik czasowy aby każda była niepowtatrzalna potem EA w pętli wyszukuje wszystkie H-Linie ze stringiem "TEST" w nazwie.
Jak znajdzie to zmienia wszystko co mi potrzebne i ucina znacznik czasowy

Kod: Zaznacz cały
string Name,new_name;
int i,len;
for( i = ObjectsTotal(0,0,-1);i >= 0; i--)
{
Name = ObjectName(i);
Print (Name + " " + ObjectGet(Name,OBJPROP_PRICE));
if (StringFind(Name, "TEST", 0) != -1 )
{
ObjectSetString(0,Name,OBJPROP_TEXT,"ALARM " + NormalizeDouble(ObjectGetDouble(0,Name,OBJPROP_PRICE),Digits));
len = StringLen(Name);
new_name = StringSubstr(Name,4,len);
len = StringLen(new_name);
new_name = StringSubstr(new_name,0,len-19);
ObjectSetString(0,Name,OBJPROP_NAME, " ALARM " + new_name);
}
}
Dziwne jest to że jak zamiast polecenia :
Kod: Zaznacz cały
for( i = ObjectsTotal(0,0,-1);i >= 0; i--)
użyję tylko do wyszukiwania objektów typu HLINE
Kod: Zaznacz cały
for( i = ObjectsTotal(0,0,OBJ_HLINE);i >= 0; i--)
Re: automatyczny kolor i opis linii poziomej zależnie od TF
Ten kod nie działa bo zwraca Ci tylko liczbę obiektów tego typu. Jeżeli będziesz miał np. jedną linię, to pętla odniesie się tylko do pierwszego obiektu, a to niekoniecznie musi być ta linia, może być inny obiekt. Trzeba niestety przewertować wszystkie obiekty, możesz ewentualnie dodać warunek sprawdzający typ obiektu.
Re: automatyczny kolor i opis linii poziomej zależnie od TF
faktyczniePablo90 pisze:Ten kod nie działa bo zwraca Ci tylko liczbę obiektów tego typu. Jeżeli będziesz miał np. jedną linię, to pętla odniesie się tylko do pierwszego obiektu, a to niekoniecznie musi być ta linia, może być inny obiekt. Trzeba niestety przewertować wszystkie obiekty, możesz ewentualnie dodać warunek sprawdzający typ obiektu.

jeszcze raz dziękuję

Re: automatyczny kolor i opis linii poziomej zależnie od TF
zamiast TimeCurrent() jak się okazuje lepiej użyć TimeLocal()pim pisze:
Kod: Zaznacz cały
void AddAlarmHline() { PlaySound ("addline.wav"); string tf1; switch(Period()) { case 1: tf1="M1"; break; case 5: tf1="M5"; break; case 15: tf1="M15"; break; case 30: tf1="M30"; break; case 60: tf1="H1"; break; case 240: tf1="H4"; break; case 1440: tf1="Daily"; break; case 10080: tf1="Weekly"; break; case 43200: tf1="Monthly"; break; } string alarm_hline_name = "ALARM " + Symbol() + " " + tf1 + " " + TimeCurrent(); .....
i tą ostatnią linie która dodaje naam obiekt najlepiej zmienić na :
Kod: Zaznacz cały
string alarm_hline_name = "TEST " + Symbol() + " " + tf1 + " " + TimeLocal();
Bo jak rynek jest zamknięty to nie można dodawać nowych linii (znacznik czasu jest w tym czasie ten sam).