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

 
obla4ko:

Как-то странно. Вы про Моментум, а причём тут МАшка?

Может это?

double iMomentum( string symbol, int timeframe, int period, int applied_price, int shift)
 
artmedia70:

Как-то странно. Вы про Моментум, а причём тут МАшка?

Может это?

double iMomentum( string symbol, int timeframe, int period, int applied_price, int shift)
Я собственно, о том же - только в МТ4- моментуме (см. код выше) НЕТ(!!! )
double iMomentum()

...... и вопрос остается открытым - куда и как вставить

string symbol
в имеющийся код Моментума-МТ4, если там нет
double iMomentum()

...

писать заново на основании

double iMomentum()

, или можно его прописать в имеющийся код!?

 
obla4ko:
Я собственно, о том же - только в МТ4- моментуме (см. код выше) НЕТ(!!! )

Чес сказать, тоже не понимаю вопрос.

double iMomentum( string symbol, int timeframe, int period, int applied_price, int shift) 
Он не работает что ли?
 
Abzasc:

Чес сказать, тоже не понимаю вопрос.

Он не работает что ли?

Мне нужно, чтобы моментум Евры висел на окне Фунта! - а если отдельно не прописывать символ, он по умолчанию работает по валюте, в окне которой прикреплен... ясно, почему мне эта фигнюшка так нужна :))?
 
Давайте подумаем вместе, где в коде может присутствовать символ? Беглый осмотр покажет нам, что кроме Close[i] никаких параметров цены в коде не используется. Смотрим в справочнике Close[] и выясняем, что эта таймсерия цены закрытия на текущем символе. А вот другая таймсерия, iClose( string symbol, int timeframe, int shift) дает нам возможность получать данные с заданного символа. Значит, заменяем в коде Close[i] на iClose( _Symbol, 0, i) и вводим внешнюю переменную extern string _Symbol="EURUSD"; Задаем ей значение нужного символа и наслаждаемся результатом. Не проверял, но должно работать.
 
granit77:
Давайте подумаем вместе, где в коде может присутствовать символ? Беглый осмотр покажет нам, что кроме Close[i] никаких параметров цены не используется. Смотрим в справочнике Close[] и выясняем, что эта таймсерия цены закрытия на текущем символе. А вот другая таймсерия, iClose( string symbol, int timeframe, int shift) дает нам возможность получать данные с заданного символа. Значит, заменяем в коде Close[i] на iClose( _Symbol, 0, i) и вводим внешнюю переменную extern string _Symbol="EURUSD"; Задаем ей значение нужного символа и наслаждаемся результатом. Не проверял, но должно работать.


Несовсем так. Как всегда "бес сидит в нюансах".

Если Вы пытаетесь на текущем символе отобразить индикатор, построенный по барам другого символа, то Вы должны позаботиться о совпадении баров.

Т.е. номера баров для одного и того же времени у разных символов могут не совпадать.

 
obla4ko:
Мне нужно, чтобы моментум Евры висел на окне Фунта! - а если отдельно не прописывать символ, он по умолчанию работает по валюте, в окне которой прикреплен... ясно, почему мне эта фигнюшка так нужна :))?

А, я думал, данные вытащить надо...

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

 
PapaYozh:


Несовсем так. Как всегда "бес сидит в нюансах".

Если Вы пытаетесь на текущем символе отобразить индикатор, построенный по барам другого символа, то Вы должны позаботиться о совпадении баров.

Т.е. номера баров для одного и того же времени у разных символов могут не совпадать.

Где Вы раньше были? Ваша правда. Добавил, работает.

//+------------------------------------------------------------------+
//|                                                     Momentum.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int     MomPeriod = 14;
extern string  _Symbol   = "EURUSD"; 
//---- buffers
double MomBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MomBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mom("+MomPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,MomPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Momentum                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   
//----
   if(Bars<=MomPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=MomPeriod;i++) MomBuffer[Bars-i]=0.0;
      
//----
   
   i=Bars-MomPeriod-1;
   if(counted_bars>=MomPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      int baropen =iBarShift(_Symbol,0,Time[i]);
      int barclose=iBarShift(_Symbol,0,Time[i+MomPeriod]);
      MomBuffer[i]=iClose(_Symbol,0,baropen) *100/iClose(_Symbol,0,barclose);
      i--;
     }
   return(0);
  }
 
granit77:

Где Вы раньше были? Ваша правда. Добавил, работает.


Молодец, Виктор!
А обла4ко молчит-с ... :))
 
granit77:

Где Вы раньше были? Ваша правда. Добавил, работает.


Ну я в эту ветку иногда одним глазом поглядываю, иногда отвечаю.

Так что "звиняйте", помогаю, так сказать, по мере возможности.

:)

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