Как узнать разницу цены пришедшего тика с ценой предыдущего тика?

 

Привет всем.

Посоветуйте пожайлуста

Как, на языке MQL4, узнать разницу цены пришедшего тика

с ценой предыдущего тика.

Зарание спасибо за помощь.

 
int start()
{
   static double preBid = 0.0;
   double curBid = Bid;
 
   if ( preBid > 0.0 )
   {
      Alert( "Разница = ", DoubleToStr( curBid - preBid, Digits ) );
   }
   preBid = curBid;
 
   return(0);
}
 

Поищи в Code Base советник Lucky.

Там это хорошо прописано.

Я так понимаю что ты хочеш повторить его результаты?

 
komposter:
int start()
{
   static double preBid = 0.0;
   double curBid = Bid;
 
   if ( preBid > 0.0 )
   {
      Alert( "Разница = ", DoubleToStr( curBid - preBid, Digits ) );
   }
   preBid = curBid;
 
   return(0);
}


Спасибо за помощь.

Еще нашел на форуме.

int price_prev;
void start()
   {
   int price=MathRound(Bid/Point);
   if (price_prev==price) return;
   Print("Цена изменилась на ",price-price_prev," пунктов");
   price_prev=price;
   }

Я пытаюсь написать индикатор в виде гистограммы

который бы показывал разницу накопленных положительных значений

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

Примерно как индикатор Volumes, только Volumes накапливает кол. тиков и постоянно

находится выше нуля.

Может кто-то уже делал это, дайте ссылку.

И как можно посмотреть код индикатора Volumes.

На данный момент неполучаеться накапливать значения

с помощью оператора if роспределяю отрицательные отдельно,

а положительные отдельно, только они почему-то не сумируються

int price_prev;                                   // Глобальная перемен.
//--------------------------------------------------------------------
int init()                                      // Спец. ф-ия init()
  {
   Alert ("Сработала ф-ия init() при запуске"); // Сообщение
   return;                                      // Выход из init()
  }
//--------------------------------------------------------------------
 
int start()
           
   {
   int price=MathRound(Bid/Point),r,p,m;
   if (price_prev==price) return;
   r=price-price_prev;
   if(r>0&&r<100)
   {
   p+=r;
   }
   if(r<0)
   {
   m+=r;
   }
   Alert("Пол ",p," отр",m);
   price_prev=price;
   }
 
satop:

На данный момент неполучаеться накапливать значения

p и m надо тоже определить на глобальном уровне, либо сделать статическими.
Индикатор посмотреть в CodeBase - Volumes
 
komposter:
p и m надо тоже определить на глобальном уровне, либо сделать статическими.
Индикатор посмотреть в CodeBase - Volumes

Да, спасибо, получилось
int price_prev,s;                                   // Глобальная перемен.
//--------------------------------------------------------------------
int init()                                      
  {
  
  }
//--------------------------------------------------------------------
 
int start()
           
   {
   int price=MathRound(Bid/Point),r,p,m;
   if (price_prev==price) return;
   r=price-price_prev;
   if(r>0&&r<100)
   {
   p+=r;
   }
   if(r<0)
   {
   m+=r;
   }
   s+=(p+m);
   
   Alert("Пол ",p," отр",m,"Сум",s);
   price_prev=price;
   }