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

 

Всем привет. Нужен моментум в виде гистограммы. Может кто подкинет.

Спасибо.

 
fozi:

Всем привет. Нужен моментум в виде гистограммы. Может кто подкинет.

Спасибо.

https://www.mql5.com/ru/forum/111497/page1075
Линия или гистограмма, сути не меняет, разве что визуально.
 
так я про то и говорю, визуальность нужна
 
fozi:
так я про то и говорю, визуальность нужна
Файлы:
 

Правильной ли будет такая функция, которая определяет чрезмерное движение.

extern int CandleVolume=60 - если размер предыдущей свечи более 60 пипсов

------ функция проверки объёма предыдущей свечи

int CheckVolume()
{

int volume=MathAbs(NormalizeDouble(Low[1],Digits)-NormalizeDouble(High[1],Digits));

if (volume <= CandleVolume) return (1);

if (volume > CandleVolume) return (-1);

}

-------- проверка в старт происходит следующим образом

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1)

{CheckForOpen();}

 

Ещё вопрос: пытаюсь осуществить проверку предыдущего бара. Проверка на покупку - Ask больше High предыдущего бара + спред. Проверка на продажу - Bid ниже Low предыдущего бара минус спред. Насколько корректна эта функция? Она, к сожалению, не работает.

int CheckBar()
{
double Spread=MarketInfo(Symbol(),MODE_SPREAD);
double PriceBuy=Ask;
double PriceSell=Bid;
if(PriceSell<(Low[1]-Spread)) return(-1);
if(PriceBuy>(High[1]+Spread)) return(1);
}
 
dzhini:

Ещё вопрос: пытаюсь осуществить проверку предыдущего бара. Проверка на покупку - Ask больше High предыдущего бара + спред. Проверка на продажу - Bid ниже Low предыдущего бара минус спред. Насколько корректна эта функция? Она, к сожалению, не работает.


int CheckBar(){   
   double Spread=MarketInfo(Symbol(),MODE_SPREAD);   
   double PriceBuy=Ask;   
   double PriceSell=Bid;   
   if(PriceSell   < (Low[1]  - Spread*Point)) return(-1);   
   if(PriceBuy  > (High[1] + Spread*Point)) return(1);
   return(0);
}
 
dzhini:

Ещё вопрос: пытаюсь осуществить проверку предыдущего бара. Проверка на покупку - Ask больше High предыдущего бара + спред. Проверка на продажу - Bid ниже Low предыдущего бара минус спред. Насколько корректна эта функция? Она, к сожалению, не работает.

Я бы вообще не стал использовать спред, так как он часто плавающий...
 
Vinin:

Огромное спасибо. Заработало. Отправляется в копилку знаний ))) Подскажите, что надо сделать с функцией, определяющей размер предыдущей свечи?

extern int CandleVolume=60 - если размер предыдущей свечи более 60 пипсов

------ функция проверки объёма предыдущей свечи

int CheckVolume()
{

int volume=MathAbs(NormalizeDouble(Low[1],Digits)-NormalizeDouble(High[1],Digits));

if (volume <= CandleVolume) return (1);

if (volume > CandleVolume) return (-1);

}

-------- проверка в старт происходит следующим образом

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1)

{CheckForOpen();}

 
AlexSTAL:
Я бы вообще не стал использовать спред, так как он часто плавающий...


Это не проблема. На каждом тике запрашиваем спред по-новой и проблема снята - у нас в руках на каждом тике всегда будет свженький спред. Если работать в ДЦ, у которого плавающие спреды, то не мешало бы и минлевел запрашивать на каждом тике тож по-новой.

SPR=MarketInfo(Symbol(),MODE_SPREAD);
MinLevel=MarketInfo(Symbol(),MODE_STOPLEVEL);