Ответить
07.06.2014, 06:13
Аватар для ansol
ansol ansol на форуме
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,021
Поблагодарили 856 раз(а) / Репутация: 842
есть стрелочный индикатор по нему нужно написать советника но как это сделать я не знаю
Попробуйте начать изучение MQL4 с этого:
Цитата:
ObjectFind

Ищет объект с указанным именем. Существует два варианта функции:

int ObjectFind(
long chart_id, // идентификатор графика
string object_name // имя объекта
);
Стрелка на графике - это объект, список объектов доступен по правой кнопке мыши на графике.
Или вам надо, что бы кто-нибудь другой написал?
Тогда индикатор в студию и не в этой теме
09.06.2014, 16:47
Аватар для salco85
salco85 salco85 вне форума Активный участник
Регистрация: 30.01.2013 / Сообщений: 71
Поблагодарили 36 раз(а) / Репутация: 37
Всем здравствуйте!!! просьба подскажите пожалуйста как прописать в коде стандартного индикатора дивергенцию
09.06.2014, 20:16
Аватар для ron2009
ron2009 ron2009 вне форума Активный участник
Регистрация: 03.04.2014 / Адрес: Владивосток / Сообщений: 104
Поблагодарили 77 раз(а) / Репутация: 78
Pomogite vstavit vtoroi indicator v exp_icustom v10 shablon.
Odin indicator strelochnii a vtoroi na izmenenie tsveta. Nuzhno shtobi oba uchitivalis na otkritie i na zakritie. Tknite nosom kakuyu shast exp_iCustom Scripta posmotret ili izmenit.
Ja znayu shto tolko rabotaet s odnim indicatorom na otkritie i vtoroi na zakritie.
10.06.2014, 06:23
Аватар для tommy27
tommy27 tommy27 вне форума ◅ ♛ ♠ ♣ ♥ ♦ ♛ ▻
Регистрация: 16.10.2011 / Адрес: Новосибирск / Сообщений: 1,053
Поблагодарили 3,187 раз(а) / Репутация: 3192
  • Отправить сообщение для tommy27 с помощью Skype™
Всем здравствуйте!!! просьба подскажите пожалуйста как прописать в коде стандартного индикатора дивергенцию
Один из вариантов "моторчика" будет выглядеть вот так:

Скрытый текст

PHP код:
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CatchBullishDivergence(int shift)
  {
   if(
IsIndicatorTrough(shift) == false)
       return;
   
int currentTrough shift;
   
int lastTrough GetIndicatorLastTrough(shift);
   if(
OsMA[currentTrough] > OsMA[lastTrough] && Low[currentTrough] < Low[lastTrough])
     {
      
bullishDivergence[currentTrough] = OsMA[currentTrough];
      if(
drawDivergenceLines == true)
        {
          
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], Low[currentTrough], 
                             
Low[lastTrough], GreenSTYLE_SOLID);
          
DrawIndicatorTrendLine(Time[currentTrough], Time[lastTrough], OsMA[currentTrough],
                                 
OsMA[lastTrough], GreenSTYLE_SOLID);
        }
      if(
displayAlert == true)
          
DisplayAlert("Classical bullish divergence on: "currentTrough);  
     }
   if(
OsMA[currentTrough] < OsMA[lastTrough] && Low[currentTrough] > Low[lastTrough])
     {
      
bullishDivergence[currentTrough] = OsMA[currentTrough];
      if(
drawDivergenceLines == true)
        {
          
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], Low[currentTrough], 
                             
Low[lastTrough], GreenSTYLE_DOT);
          
DrawIndicatorTrendLine(Time[currentTrough], Time[lastTrough], OsMA[currentTrough],
                                 
OsMA[lastTrough], GreenSTYLE_DOT);
        }
      if(
displayAlert == true)
          
DisplayAlert("Reverse bullish divergence on: "currentTrough);   
     }      
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CatchBearishDivergence(int shift)
  {
   if(
IsIndicatorPeak(shift) == false)
       return;
   
int currentPeak shift;
   
int lastPeak GetIndicatorLastPeak(shift);
   
   if(
OsMA[currentPeak] < OsMA[lastPeak] && High[currentPeak] > High[lastPeak])
     {
       
bearishDivergence[currentPeak] = OsMA[currentPeak];
       if(
drawDivergenceLines == true)
         {
           
DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], High[currentPeak], 
                              
High[lastPeak], RedSTYLE_SOLID);
           
DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], OsMA[currentPeak],
                                  
OsMA[lastPeak], RedSTYLE_SOLID);
         }
       if(
displayAlert == true)
           
DisplayAlert("Classical bearish divergence on: "currentPeak);  
     }
   if(
OsMA[currentPeak] > OsMA[lastPeak] && High[currentPeak] < High[lastPeak])
     {
       
bearishDivergence[currentPeak] = OsMA[currentPeak];
       if(
drawDivergenceLines == true)
         {
           
DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], High[currentPeak], 
                              
High[lastPeak], RedSTYLE_DOT);
           
DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], OsMA[currentPeak],
                                  
OsMA[lastPeak], RedSTYLE_DOT);
         }
       if(
displayAlert == true)
           
DisplayAlert("Reverse bearish divergence on: "currentPeak);   
     }   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsIndicatorPeak(int shift)
  {
   if(
OsMA[shift] > && OsMA[shift] > OsMA[shift+1] && OsMA[shift] > OsMA[shift-1])
     {
       for(
int i shift 1Barsi++)
         {
           if(
OsMA[i] < 0)
              return(
true);
           if(
OsMA[i] > OsMA[shift])
              break;            
         }
     }   
   return(
false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsIndicatorTrough(int shift)
  {
   if(
OsMA[shift] < && OsMA[shift] < OsMA[shift+1] && OsMA[shift] < OsMA[shift-1])
     {
       for(
int i shift 1Barsi++)
         {
           if(
OsMA[i] > 0)
               return(
true);
           if(
OsMA[i] < OsMA[shift])
               break;            
         }
     }   
   return(
false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetIndicatorLastPeak(int shift)
  {
    for(
int i shift 5Barsi++)
      {
        if(
OsMA[i] >= OsMA[i+1] && OsMA[i] > OsMA[i+2] &&
           
OsMA[i] >= OsMA[i-1] && OsMA[i] > OsMA[i-2])
            return(
i);
      }
    return(-
1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetIndicatorLastTrough(int shift)
  {  
    for(
int i shift 5Barsi++)
      {
        if(
OsMA[i] <= OsMA[i+1] && OsMA[i] < OsMA[i+2] &&
           
OsMA[i] <= OsMA[i-1] && OsMA[i] < OsMA[i-2])
            return(
i);
      }
    return(-
1);
  } 
[свернуть]


во вложении индюк из которого это взято.
10.06.2014, 08:25
Аватар для salco85
salco85 salco85 вне форума Активный участник
Регистрация: 30.01.2013 / Сообщений: 71
Поблагодарили 36 раз(а) / Репутация: 37
Привет!!! я вчера это все проделывал не почучается,дело в том что индикатор ROC и как мне в нем прописать эти условия а тот индюк он то основан на OSME вообщем Вы понимаете!!!
10.06.2014, 14:59
Аватар для tommy27
tommy27 tommy27 вне форума ◅ ♛ ♠ ♣ ♥ ♦ ♛ ▻
Регистрация: 16.10.2011 / Адрес: Новосибирск / Сообщений: 1,053
Поблагодарили 3,187 раз(а) / Репутация: 3192
  • Отправить сообщение для tommy27 с помощью Skype™
Привет!!! я вчера это все проделывал не почучается,дело в том что индикатор ROC и как мне в нем прописать эти условия а тот индюк он то основан на OSME вообщем Вы понимаете!!!
понимаю!!! в коде индюка FX5_Divergence прописываете входные параметры ROCa -если они есть и хотите их потом менять
и далее меняете
PHP код:
OsMA[i] = iOsMA(NULL0fastEMAslowEMAsignalPRICE_CLOSEi); 
на
PHP код:
OsMA[i] =iCustom(NULL,0,"ROC",параметрыi); 
ну и если без зачистки следов от осмы то это всё что необходимо сделать!!!

Последний раз редактировалось tommy27; 10.06.2014 в 15:06.
14.06.2014, 12:11
Аватар для prt
prt prt вне форума Интересующийся
Регистрация: 14.06.2014 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Значение индикатора.

Здравствуйте. Никак не могу достать значение индикатора поданное в таком формате SetIndexBuffer(7, arrA);

При вызове с помощью

L7 = iCustom(NULL,0,"777",5,1,1,7,1);

Выводит результат Print("L7= ", NormalizeDouble(L7,5));

как L7= 2147483647.0

Спасибо.
14.06.2014, 13:35
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Здравствуйте. Никак не могу достать значение индикатора поданное в таком формате SetIndexBuffer(7, arrA);

При вызове с помощью

L7 = iCustom(NULL,0,"777",5,1,1,7,1);

Выводит результат Print("L7= ", NormalizeDouble(L7,5));

как L7= 2147483647.0

Спасибо.
На форуме mql4 тебе правильно ответили. Это пустое значение. Посмотри в окне данных показывает-ли значение на этом баре. Если хочешь более детальный ответ выложи индикатор о котором идёт речь.
17.06.2014, 17:39
Аватар для Anna2014
Anna2014 Anna2014 вне форума Прохожий
Регистрация: 17.06.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Подскажите пожалуйста как добавить функцию Period() если единственный буфер == Low, и ни каких иных буферов или функций более нет.
17.06.2014, 17:57
Аватар для Anna2014
Anna2014 Anna2014 вне форума Прохожий
Регистрация: 17.06.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Господа,

Очень нужна помощь. Имеется индикатор, очень простой и всем, наверное, известный: Trend Magic. Основан на двух стандартных индикаторах: CCI(50) и ATR(5). Рисует очень красивые линии на графике. У меня, как чайника в программировании, имеется вопрос: как из значений CCI и ATR получается значение, которое отображается на графике цены и по которому рисуется эта самая линия? Можете вывести формулу?
Формула индикатора CCI:
Сначала рассчитывается характерная цена (Typical Price):

Рассчитывается простая скользящая средняя от характерной цены:

Рассчитывается вероятное (срединное) отклонение.

где
Формула самого индикатора CCI будет выглядеть следующим образом:

Расчетная формула ATR:

ATR = Moving Average(TRj, n),
где
TRj = максимальному из модулей трех значений
|High - Low|, |High - Closej-1|, |Low - Closej-1|.
18.06.2014, 13:25
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Подскажите пожалуйста как добавить функцию Period() если единственный буфер == Low, и ни каких иных буферов или функций более нет.
Что-то уж очень лаконично вопрос задан. Если нужно узнать Low другого периода, то есть функция iLow().
18.06.2014, 14:21
Аватар для tench72
tench72 tench72 вне форума Интересующийся
Регистрация: 09.01.2012 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Всем привет, подскажите пожалуйста как переделать код индикатора в функцию в коде другого индюка. Я использую iСustom(), там их две функции в одном коде индикатора, а iСustom() ооооочень сильно грузят мой терминал, хотя комп вроде нормальный по параметрам!!!!!!!
18.06.2014, 14:50
Аватар для tench72
tench72 tench72 вне форума Интересующийся
Регистрация: 09.01.2012 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Переделка индикатора в функцию

Совсем забыл нужно переделать во внутреннюю функцию индикатор стохастик Ди Наполи, функция должна возвращать значения нулевого буфера стохастика, не сигнальную линию
Код стохастика прикладываю в сообщениии, а в программе я использовал функцию iCustom() c параметрами:
BuferStoh[i] = iCustom(NULL,0,"StochasticDiNapoli",FastK,SlowK,Sl owD, 0, i);
И терминал грузится пипец, так как я еще использую внутри кода стандартную функцию iCCI()
Помогите плиз кто может
18.06.2014, 15:58
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Совсем забыл нужно переделать во внутреннюю функцию индикатор стохастик Ди Наполи, функция должна возвращать значения нулевого буфера стохастика, не сигнальную линию
Код стохастика прикладываю в сообщениии, а в программе я использовал функцию iCustom() c параметрами:
BuferStoh[i] = iCustom(NULL,0,"StochasticDiNapoli",FastK,SlowK, SlowD, 0, i);
И терминал грузится пипец, так как я еще использую внутри кода стандартную функцию iCCI()
Помогите плиз кто может
Так в индикаторе 7 внешних параметров, а ты передаёшь только 3. Вот он и не понимает что от него хотят, может потому и грузит терминал попытками пересчёта.
18.06.2014, 16:42
Аватар для tench72
tench72 tench72 вне форума Интересующийся
Регистрация: 09.01.2012 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Я читал что можно не все параметры передавать, главное чтобы порядок следования не нарушать, а так вроде как можно и вообще один указать....
18.06.2014, 17:00
Аватар для tench72
tench72 tench72 вне форума Интересующийся
Регистрация: 09.01.2012 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Пробовал я передавать все параметры, ни чччО не помогло! так все и осталось грузиииит пипец.
18.06.2014, 17:24
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Я читал что можно не все параметры передавать, главное чтобы порядок следования не нарушать, а так вроде как можно и вообще один указать....
Если не передавать вообще, то применяются параметры по умолчанию в индикаторе, а вот изменить часть из них... лично я сомневаюсь. Совсем не сложно вставить их даже не переменными, а просто цифрами, но это будет страховка от непоняток MQ... Можешь проверить...
А по сути вопроса, вынести в отдельную функцию, извини мне лениво напрягать свой пьяный мозг. Там ничего сложного нет, требуется только внимательность.
30.06.2014, 09:19
Аватар для oleg93
oleg93 oleg93 вне форума Активный участник
Регистрация: 27.03.2011 / Адрес: Краснодар / Сообщений: 49
Поблагодарили 50 раз(а) / Репутация: 51
Всем привет! Подскажите ,знающие, задать время первой точки в TrendLine как конкретное время - например 9:00 ?
30.06.2014, 10:32
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Всем привет! Подскажите ,знающие, задать время первой точки в TrendLine как конкретное время - например 9:00 ?
Обычно с помощью StrToTime()
30.06.2014, 10:34
Аватар для oleg93
oleg93 oleg93 вне форума Активный участник
Регистрация: 27.03.2011 / Адрес: Краснодар / Сообщений: 49
Поблагодарили 50 раз(а) / Репутация: 51
Обычно с помощью StrToTime()
Ок. Спасибо. Сейчас попробую!)
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 10:53. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO