- ЦЕНОВАЯ ПАНЕЛЬ!
- помогите разобраться! Работает корректно только с исходником
- Можно ли получить значение горизонтальной линии?
Думаю, дело в том, что индикатор ставит на чарт объекты с фиксированными именами, второй делает то же самое с теми же
именами. Вот они и воюют.
Как вариант решения, можно доработать код, прибавив ко всем именам объектов идентификатор конкретной копии индикатора - строковую переменную и вынести ее в extern. А при установке нескольких копий индикаторов надо для каждой указывать свой идентификатор.
Например:
extern string Ident = "1";
//---пример модификации имени объекта
//---было
ObjectMove("Trend DN-0",1,Time[st1],s1);
//---стало
ObjectMove("Trend DN-0"+"_"+Ident,1,Time[st1],s1);
Можно и без внешней переменной обойтись. В качестве идентификатора использовать время установки индикатора на чарт. Вероятность повторения крайне мала. Разумеется инициализация будет в init().
string Ident="_"+TimeToStr(TimeLocal(),TIME_SECONDS);
Можно и без внешней переменной обойтись. В качестве идентификатора использовать время установки индикатора на чарт. Вероятность повторения крайне мала. Разумеется инициализация будет в init().
string Ident="_"+TimeToStr(TimeLocal(),TIME_SECONDS);
Думаю, лучше использовать комбинацию настраиваемых параметров (лучше только существенно влияющих - длина строки ограничена :) ). Проще на чартах результат работы отслеживать.
Успехов.
Думаю, лучше использовать комбинацию настраиваемых параметров (лучше только существенно влияющих - длина строки ограничена :) ). Проще на чартах результат работы отслеживать.
Вы имели в виду что-то типа этого?
string Ident="_"+DoubleToStr(nPeriod*Limit,0);
люди спасите позарез нужно может кто знает как вставить два индикатора
#property copyright "nsi2000" #property link "http://www.expert-mt4.nm.ru" //---- #property indicator_chart_window //---- input parameters extern int nPeriod=10; extern int Limit=350; ///---- int Widners Oscilator int cnt,nCurBar=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- Output in Char for(cnt=0; cnt 0; nCurBar--) { if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)]) { s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2]; st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2; } if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)]) { r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2]; rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2; } } //---- Move Object in Chart ObjectMove("Trend DN-0",1,Time[st1],s1); ObjectMove("Trend DN-0",0,Time[st2],s2); //---- ObjectMove("Trend UP-0",1,Time[rt1],r1); ObjectMove("Trend UP-0",0,Time[rt2],r2); //---- return(0); } //+------------------------------------------------------------------+
На такой страстный и содержательный призыв невозможно не откликнуться. :)
Ну вот, а ты боялся квалификацию потерять
Думаю, лучше использовать комбинацию настраиваемых параметров (лучше только существенно влияющих - длина строки ограничена :) ). Проще на чартах результат работы отслеживать.
Вы имели в виду что-то типа этого?
string Ident="_"+DoubleToStr(nPeriod*Limit,0);
Или такого
string Ident="_"+nPeriod+" "+Limit;Обе величины целочисленные - добавляются в строки и так.
Успехов.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования