Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2128

 
В функции iCustom получается по барам,а  нужно по тикам



 
khasan kayumov #:

здравствуйте все! у меня вопрос к экспертам подскажите как узнать значение любого пользовательского индикатора на последнем тике и предпоследнем тике ?

заранее спасибо

Здравствуйте! При помощи CopyTick() скопируйте в массив эти два тика в формате MqlTick, а затем при помощи структуры для получения текущих цен (MqlTick) возьмите любое нужное Вам значение:

struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };

С уважением, Владимир.

 
khasan kayumov #:
В функции iCustom получается по барам,а  нужно по тикам
double _price, tick_curr, tick_prev;

if(_price!=Bid)
  {
   tick_prev=tick_curr;
   tick_curr=iCustom(............);
   _price=Bid;
  }
 
MrBrooklin #:

Здравствуйте! При помощи CopyTick() скопируйте в массив эти два тика в формате MqlTick, а затем при помощи структуры для получения текущих цен (MqlTick) возьмите любое нужное Вам значение:

С уважением, Владимир.

Это не поможет. Вопрос о значении индикатора, а это нигде не фиксируется. Только последнее значение нв баре.

 
Спасибо большое! попробую как вы посоветовали 
 
Alexey Viktorov #:

Это не поможет. Вопрос о значении индикатора, а это нигде не фиксируется. Только последнее значение нв баре.

Привет, Алексей! Точно, речь шла о значении индикатора, а не просто о тиках. Учиться, учиться и ещё раз учиться... :)

А если CopyBuffer() использовать?

CopyBuffer

Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве. 



int  CopyBuffer(    int       indicator_handle,     // handle индикатора    int       buffer_num,           // номер буфера индикатора    int       start_pos,            // откуда начнем     int       count,                // сколько копируем    double    buffer[]              // массив, куда будут скопированы данные    );

С уважением, Владимир.

 
MrBrooklin #:

Привет, Алексей! Точно, речь шла о значении индикатора, а не просто о тиках. Учиться, учиться и ещё раз учиться... :)

А если CopyBuffer() использовать?

С уважением, Владимир.

Ответьте себе на вопрос: Что будет копироваться в массив?
 
Tretyakov Rostyslav #:
Ответьте себе на вопрос: Что будет копироваться в массив?

Уже ответил. Не тики, а бары...

С уважением, Владимир.

 

Hello, Greeting, I want to change a number according to the changes in the prices of ask and bid. It means that, for example, for every two point change in each of these two ask and bid prices, my number changes by one point, just like what happens in the trail of a position. Can you tell which part of this code has a problem?


void OnTick()

    {

     X = NormalizeDouble(iClose(_Symbol, 0, 10), _Digits);

     if(Ask + 2 * _Point < X)

         {

          X -= 2 * _Point;

          Print("", Ask);

          Print("1 ===>>>> X: ", X);

         }

     if(Bid - 2 * _Point > X)

         {

          X += 1 * _Point;

          Print("", Bid);

          Print("2 ===>>>> X: ", X);

         }

    }


Documentation on MQL5: Checkup / Point
Documentation on MQL5: Checkup / Point
  • www.mql5.com
Point - Checkup - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
alighasemi1993 #:

Hello, Greeting, I want to change a number according to the changes in the prices of ask and bid. It means that, for example, for every two point change in each of these two ask and bid prices, my number changes by one point, just like what happens in the trail of a position. Can you tell which part of this code has a problem?

Every new tick "X" again =NormalizeDouble(iClose(_Symbol, 0, 10), _Digits);

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