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

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

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

int ObjectFind(
long chart_id, // идентификатор графика
string object_name // имя объекта
);
Стрелка на графике - это объект, список объектов доступен по правой кнопке мыши на графике.
Или вам надо, что бы кто-нибудь другой написал?
Тогда индикатор в студию и не в этой теме
ansol на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
abuuuuuu (07.06.2014)
09.06.2014, 16:47
Аватар для salco85
salco85 Заблокирован
Регистрация: 30.01.2013 / Сообщений: 71
Поблагодарили 36 раз(а) / Репутация: 37
Всем здравствуйте!!! просьба подскажите пожалуйста как прописать в коде стандартного индикатора дивергенцию
salco85 вне форума Ответить с цитированиемОтветить с цитированием  
09.06.2014, 20:16
Аватар для ron2009
ron2009 Активный участник
Регистрация: 03.04.2014 / Адрес: Владивосток / Сообщений: 104
Поблагодарили 76 раз(а) / Репутация: 77
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.
ron2009 вне форума Ответить с цитированиемОтветить с цитированием  
10.06.2014, 06:23
Аватар для tommy27
tommy27 ◅ ♛ ♠ ♣ ♥ ♦ ♛ ▻
Регистрация: 16.10.2011 / Адрес: Новосибирск / Сообщений: 1,053
Поблагодарили 3,186 раз(а) / Репутация: 3191
  • Отправить сообщение для tommy27 с помощью Skype™
Сообщение от salco85 Посмотреть сообщение
Всем здравствуйте!!! просьба подскажите пожалуйста как прописать в коде стандартного индикатора дивергенцию
Один из вариантов "моторчика" будет выглядеть вот так:

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

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);
  } 
[свернуть]


во вложении индюк из которого это взято.
Вложения:
Тип файла: mq4 FX5_Divergence_V2.1.mq4 (11.3 Кб, 12 просмотров)
tommy27 вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
abuuuuuu (10.06.2014), salco85 (10.06.2014)
10.06.2014, 08:25
Аватар для salco85
salco85 Заблокирован
Регистрация: 30.01.2013 / Сообщений: 71
Поблагодарили 36 раз(а) / Репутация: 37
Привет!!! я вчера это все проделывал не почучается,дело в том что индикатор ROC и как мне в нем прописать эти условия а тот индюк он то основан на OSME вообщем Вы понимаете!!!
salco85 вне форума Ответить с цитированиемОтветить с цитированием  
10.06.2014, 14:59
Аватар для tommy27
tommy27 ◅ ♛ ♠ ♣ ♥ ♦ ♛ ▻
Регистрация: 16.10.2011 / Адрес: Новосибирск / Сообщений: 1,053
Поблагодарили 3,186 раз(а) / Репутация: 3191
  • Отправить сообщение для tommy27 с помощью Skype™
Сообщение от salco85 Посмотреть сообщение
Привет!!! я вчера это все проделывал не почучается,дело в том что индикатор 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.
tommy27 вне форума Ответить с цитированиемОтветить с цитированием  
14.06.2014, 12:11
Аватар для 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

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

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

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

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

как L7= 2147483647.0

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

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

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


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

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


Опции темы

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

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



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


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