Спасибо.
Сделал захват для одной линии. Не получается для множества)
//+------------------------------------------------------------------+ //| TrendEnd.mq4 | //| JesusLovesYou | //| 0 | //+------------------------------------------------------------------+ #property copyright "JesusLovesYou" #property link "" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("TrendEnd");ObjectDelete("FletEnd"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int obj_total=ObjectsTotal(); string name; for(int i=0;i<obj_total;i++) { name=ObjectName(i); ObjectDelete("TrendEnd");ObjectDelete("FletEnd"); double price1=ObjectGet(ObjectName(i), OBJPROP_PRICE1); double price2=ObjectGet(ObjectName(i), OBJPROP_PRICE2); double time1=ObjectGet(ObjectName(i), OBJPROP_TIME1); double time2=ObjectGet(ObjectName(i), OBJPROP_TIME2); ObjectSet(ObjectName(i), OBJPROP_COLOR, Yellow); ObjectSet(ObjectName(i), OBJPROP_BACK, true); ObjectDelete(ObjectName(i)); ObjectCreate("TL", OBJ_TREND,0, time1, price1, time2, price2); ObjectSet("TL", OBJPROP_COLOR, Yellow); ObjectSet("TL", OBJPROP_BACK, true); double price1HL=ObjectGet("TL", OBJPROP_PRICE1); double price2HL=ObjectGet("TL", OBJPROP_PRICE2); double time1HL=ObjectGet("TL", OBJPROP_TIME1); double time2HL=ObjectGet("TL", OBJPROP_TIME2); ObjectSet("TL", OBJPROP_COLOR, Blue); ObjectSet("TL", OBJPROP_BACK, true); double price3=price2HL-(price1HL-price2HL); double price4=price3-(price2HL-price3); double per=0; ObjectCreate("TrendEnd", OBJ_HLINE,per, 0, price3); ObjectSet("TrendEnd", OBJPROP_COLOR, Blue); ObjectCreate("FletEnd", OBJ_HLINE,per, 0, price4); ObjectSet("FletEnd", OBJPROP_COLOR, Blue); ObjectSet("FletEnd", OBJPROP_STYLE, STYLE_DOT); //---- } return(0); } //+------------------------------------------------------------------+
Надо как-то определять уникальное имя для создаваемой линии, а то всем линям пытаетесь давать одно имя - "TL".
Как-нибудь так:
string on="TL"; int n=1; while(ObjectFind("TL"+n)!=-1) { n++; } on="TL"+n;Или не менять имя линии, не удалять ее, а добавить описание - ObjectSetText(). Получить описание можно функцией ObjectDescription(). Если описания нет, значит это новая линия, меняем цвет и добавляем описание.
ObjectName(i); это для всех объектов, вертикальных, горизонтальных и трендовых. Как изначально искать объект с именем который есть только трендовая линия?
Получилось. Спасибо)
//+------------------------------------------------------------------+ //| TrendEnd.mq4 | //| JesusLovesYou | //| 0 | //+------------------------------------------------------------------+ #property copyright "JesusLovesYou" #property link "" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { int obj_total=ObjectsTotal(); for(int i=0;i<obj_total;i++) { string val=ObjectName(i); ObjectDelete("TrendEnd "+val);ObjectDelete("FletEnd "+val); return(0); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int obj_total=ObjectsTotal(); string name; for(int i=0;i<obj_total;i++) { name=ObjectName(i); if(ObjectType(ObjectName(i))==OBJ_TREND){ string val=ObjectName(i); ObjectDelete("TrendEnd "+val);ObjectDelete("FletEnd "+val); double price1=ObjectGet(ObjectName(i), OBJPROP_PRICE1); double price2=ObjectGet(ObjectName(i), OBJPROP_PRICE2); double time1=ObjectGet(ObjectName(i), OBJPROP_TIME1); double time2=ObjectGet(ObjectName(i), OBJPROP_TIME2); ObjectSet(ObjectName(i), OBJPROP_COLOR, Yellow); ObjectSet(ObjectName(i), OBJPROP_BACK, true); ObjectCreate(val, OBJ_TREND,0, time1, price1, time2, price2); ObjectSet(val, OBJPROP_COLOR, Yellow); ObjectSet(val, OBJPROP_BACK, true); double price1HL=ObjectGet(val, OBJPROP_PRICE1); double price2HL=ObjectGet(val, OBJPROP_PRICE2); double time1HL=ObjectGet(val, OBJPROP_TIME1); double time2HL=ObjectGet(val, OBJPROP_TIME2); ObjectSet(val, OBJPROP_COLOR, Blue); ObjectSet(val, OBJPROP_BACK, true); double price3=price2HL-(price1HL-price2HL); double price4=price3-(price2HL-price3); double per=0; string val2=val; ObjectCreate("TrendEnd "+val2, OBJ_HLINE,per, 0, price3); ObjectSet("TrendEnd "+val2, OBJPROP_COLOR, Blue); ObjectCreate("FletEnd "+val2, OBJ_HLINE,per, 0, price4); ObjectSet("FletEnd "+val2, OBJPROP_COLOR, Blue); ObjectSet("FletEnd "+val2, OBJPROP_STYLE, STYLE_DOT); } //---- } return(0); } //+------------------------------------------------------------------+
Есть такая функция ObjectType(). Проверять - if(ObjectType()==OBJ_TREND){...
Как сделать чтобы каждой группе из трех линий (трендовая + 2 горизонтальные) автоматически задавать произвольный цвет, чтобы их отличать в скоплении?
По какому принципу выполняется группировка? Наверно по порядку создания? Можно выделить массив из трех элементов и складывать в него типы создаваемых линий. Если в массиве есть одна трендовая линия и две горизонтальных, то очищять его и при этом как-нибудь получать новый цвет для дельнейшего использования. Но только это как-то... не знаю на сколько практически удобно.
В лучшем случае было бы хорошо создать что-то типа панели инструментов с трендовой линией, горизонтальной линией и палитрой. Берешь с панели нужню линию, окрашена она выбранным цветом, по мере надобности меняешь цвет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужна помощь, спасибо)
Как сделать чтобы если я рисую стандартную трендовую линию (вручную), найти ее, изменить ей имя и цвет?)
Нужно чтобы в этом индикаторе это работало.
Всех благ!)