[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 386

 
splxgf писал(а) >>

Наверное как-то так, а то бесконечные циклы выполняются очень долго на современном железе.

:)

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


#property copyright "Copyright © 2009, :-)"
#property link      "----"

#property indicator_separate_window

int start()
{
   string info = "Bid= "+DoubleToStr(Bid,5);
   IndicatorShortName(info);
//----
   return(0);
}

так будет выводить в нужное вам окно

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


Можно создать лейбл и менять текст


   string ID  = "MyLabelName";


   if(ObjectCreate(ID, OBJ_LABEL, 0, 20, 20))
     {
       ObjectSet(ID, OBJPROP_XDISTANCE, 35);
       ObjectSet(ID, OBJPROP_YDISTANCE, 35);
     }
 
   //отображение на экране значения переменной txt 
   string txt = "Belissimo";
   ObjectSetText(ID,txt , 18, "Arial Black", Green);
Код возможно неправильный, но рабочий.
 
Не оставляйте без внимания
 
Благодарю, xeon и splxgf !
 
Друзья, добрый день.

Будет интересно выслушать вас по такому вопросу:

Бытует мнение, что на котировку валютной пары оказывает влияние множество других финансовых инструментов:
движение ведущий фондовых индексов, фьючерсы, опционы, т.д.


1) Как вы считаете, можно ли это влияние отследить
(и, соответственно, конструктивно использовать в торговой стратегии)???

2) Замечали ли вы какие-либо устойчивые корреляции между соответствующими валютными парами и котировками других финансовых инструментов?

3) Использовали ли вы индикаторы, позволяющие такие корреляции демонстрировать?


(жду ваших комментариев в одноименной тематической ветке данного форума: https://forum.mql4.com/ru/28930 )

 

splxgf писал

void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}

Наверное как-то так, а то бесконечные циклы выполняются очень долго на современном железе.


Но ведь тогда программа просто проверит условие и если оно выполняется, продаст. А если не выполняется, что она будет делать? По задумке, должна ждать выполнения условия именно в этом месте кода.



Vinin писал


А цикл зачем сделал. Если условия нет, то нужно просто выходить а не ждать неизвестно сколько когда сигнал появится

Вот поэтому и сделал цикл, что именно в этом месте кода программа должна ждать выполнения условия. Выйти в начало нельзя. Как правильно реализовать цикл ожидания условия?


И вот эта моя конструкция:

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}


- она рабочая и просто тестер вешает? Или не работает в принципе? Очень хочется понять, как правильно ожидать выполнения условия, не выходя из заданной функции.


Спасибо за ответы!

 
Jahspear >>:


Но ведь тогда программа просто проверит условие и если оно выполняется, продаст. А если не выполняется, что она будет делать? По задумке, должна ждать выполнения условия именно в этом месте кода.


Вот поэтому и сделал цикл, что именно в этом месте кода программа должна ждать выполнения условия. Выйти в начало нельзя. Как правильно реализовать цикл ожидания условия?


- она рабочая и просто тестер вешает? Или не работает в принципе? Очень хочется понять, как правильно ожидать выполнения условия, не выходя из заданной функции.

Прога скорее всего рабочая, а выполнять ожидание условия не выходя из функции это неправильно, по крайней мере тестер точно не выдаст новый тик пока процедура не отработала.

Если условие не выполняется нужно завершить программу и отдать управление тестеру. Это раньше программы были линейными и соотвественно сами зацикливались и ждали сигналов свыше. Сейчас проги управляются событиями, наступило событие, к примеру поступил новый тик и вызывается обработчик этого события start() после того как все необходимые работы по обработке нового тика закончены функция обязана завершиться, а не строить из себя диспетчера.

Правильно проверять условие в start(), условие наступило делаем свои дела, нет завершаем работу и ждем следующего тика. Под это уже подстраиваем свою логигку.

 

Ещё есть вопрос.

Индикатор выводит в отдельное окно линии МА двух валютных пар. Работает нормально.

Но когда я вставляю в код условие:

"Если на одном из инструментов пропущен бар, то на втором инструменте - этот же присутствующий бар пропускаем (не учитываем)", вот так  :

int start()
  {
     int limit;
     int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if(counted_bars<0) return(-1);
  //---- последний посчитанный бар будет пересчитан
     if(counted_bars>0) counted_bars-=10;
     limit=Bars-counted_bars;
  //---- основной цикл
ВОТ Я СТАВЛЮ ЭТО УСЛОВИЕ  :
    for(k = 0; k < iBars(Symbol_1,Period()); k++)   {  
    int symb2Shift = iBarShift(Symbol_2,Period(),iTime(Symbol_1,Period(),k),true);
    if(symb2Shift != -1)                            { 
//---------------------------------
    for(k=0; k<limit; k++)
       {
       Symbol1[k]=     (iMA(Symbol_1,.....k)  ;
       Symbol2[k]=     (iMA(Symbol_2,.....k)  ;           
       } 
                        }
                       }
//----
    return(0);
  }

то мт4 виснет на  полторы - две минуты. Потом индюк начинает работать, но при этом потребляет 35-45 проц. оперативной памяти...

В чем тут может быть причина, пож. подскажите ?

 

Добрый день!

Подскажите пожалуйчта, как написать простой индикатор, который бы выделял определенный бар (должно задаваться в опциях), например в 12.30 вертикальной линией и подписать дни недели на графике (скажем где-то над хаем каждого дня)?

Спасибо!

Причина обращения: