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

 

Здравствуйте! Могли бы подсказать, как реализовать следующую задачу: Цена пересекает 5-три перечную SMA. High и low бара,  который пересек должны быть выше МА. И если у следующего бара после пересечения high будет меньше и при этом он выше МА, то ставится значок. И значки продолжают ставиться до тех пор пока бар не пробьет хай предыдущего бара или произойдет повторное пересечение МА. Задача вроде бы простая, но у меня возникла проблема в следующим: Как после пересечения МА ставить значки на всех барах у которых хай меньше предыдущего и при этом бары выше МА? 

 

Здравствуйте!
Подскажите пожалуйста эстетичное решение, чтобы во внешнем коде высчитывать среднее значение ATR100 за 50 свечей и потом данное значение использовать в основном коде.

Примерно понимаю, что внешний код должен выглядеть как-то так:

double         iATRBuffer[];
int    handle;

double avgATR;

double sumATR=0;


handle=iATR(Symbol(),Period(),100);

CopyBuffer(handle ,0,0,60, iATRBuffer);

for i=1; i<=51; i++{

sumATR+= iATRBuffer[i];

}

avgATR =  sumATR/50;

return avgATR;
 
Всем привет. Подскажите команды для работы с пуктами. Допустим, если цена поднялась на 100 пунктов -- делаем то, а если поднялась на 200 -- другое действие
 
Dojkged #:
Всем привет. Подскажите команды для работы с пуктами. Допустим, если цена поднялась на 100 пунктов -- делаем то, а если поднялась на 200 -- другое действие

Нет никаких специальных команд для работы с пунктами. Есть операторы присваивания и сравнения. Создаешь глобальную или статическую переменную (такую которая не будет инициализироваться на каждом тике), присваиваешь ей значение цены. 
Далее на каждом тике сравниваешь текущее значение с сохраненным. Если разность превысила 100 или 200 пунктов, то делаешь то что задумал.

 
Dojkged #:
как сделать, чтобы позиция открывалась лишь 1 раз. У меня просто такая проблема: есть условие, оно выполняется и на следующую свечу, когда нужно заходить по маркету, каждый новый тик открывается позиция по маркету. Подскажите, как исправить?
   if(newbar<iTime(_Symbol,_Period,0))
     {
      newbar=iTime(_Symbol,_Period,0);
      
      ... Ваш код открытия
      
     }