Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 917

 

Всем здравствуйте.

Для тестировании стратегии на H1 необходимо получать данные о закрытии предыдущего дня.

В Индикаторе пишу следующее (соответственно предварительно объявив "CloseLine" в OnInit()) :


 

int OnCalculate(const int rates_total, const int prev_calculated,

                const datetime &time[], const double &open[],

                const double &high[], const double &low[],

                const double &close[], const long &tick_volume[],

                const long &volume[], const int &spread[])

  { 

Close_Day=iClose("EURUSD",PERIOD_D1,1);

ObjectSet("CloseLine",OBJPROP_PRICE1,Close_Day); 

 return(rates_total);

 }  

 

В результате цена с ТФ Day не изменяется, и линия не перестраивается.

Помогите пожалуйста.

Спасибо 

 

Здравствуйте, тут вопрос по четвёрке написал на пятёрке. Кто втеме подскажите плз...

Запись и чтение тиков индикатором.

https://www.mql5.com/ru/forum/6343/page400#comment_1768141

начало на предыдущей страницы - не могу победить iMAOnArray.

 
Pokrov:
Всем привет! Есть вопрос, как лучше сделать для переборов ордеров - один цикл, для  всех целей или можно несколько циклов по блочно,вопрос с точки зрения производительности советника или разницы нет никакой?      

одним циклом быстрее всего. а внутри цикла уже можно блоки, например блок анализа отложенных ордеров, блок анализа рыночных, блок двигания б/у.

for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(!OrderSelect(i,SELECT_BY_POS)) 
      {
         Print("OrderSelect( ",i," ) - Error #",GetLastError());
         continue;
      }
      if(OrderSymbol() != SymbolsArray[symNo])          continue;
      if(OrderMagicNumber() != Expert_ID) continue;
      if(OrderType()>3){  } //StopOrder
      if(OrderType()<2){  } //MarketOrder
   }
 
Rattnik:

Всем здравствуйте.

Для тестировании стратегии на H1 необходимо получать данные о закрытии предыдущего дня.

В Индикаторе пишу следующее (соответственно предварительно объявив "CloseLine" в OnInit()) :


 

int OnCalculate(const int rates_total, const int prev_calculated,

                const datetime &time[], const double &open[],

                const double &high[], const double &low[],

                const double &close[], const long &tick_volume[],

                const long &volume[], const int &spread[])

  { 

Close_Day=iClose("EURUSD",PERIOD_D1,1);

ObjectSet("CloseLine",OBJPROP_PRICE1,Close_Day); 

 return(rates_total);

 }  

 

В результате цена с ТФ Day не изменяется, и линия не перестраивается.

Помогите пожалуйста.

Спасибо 

А Вы уверены что есть смысл на каждом тике узнавать клоуз вчерашний? может лучше узнать, не поменялось ли значение, и только если поменялось, то вызывать ObjectSet и обрабатывает если он не справился?
 
добрый вечер может у кого есть индикатор который подсчитывает количество тиков в свече именно что б в цифрах над или под свечей . не могу негде найти такой индикатор 
 
roma1984:
добрый вечер может у кого есть индикатор который подсчитывает количество тиков в свече именно что б в цифрах над или под свечей . не могу негде найти такой индикатор 
в МТ4 есть обьемы. они не с биржи, а тиковые, то есть отображают количество тиков в свече. там правда без цифр, цифры можно посмотреть нажав ctrl+D и наведя на свечу.
 
danik:
в МТ4 есть обьемы. они не с биржи, а тиковые, то есть отображают количество тиков в свече. там правда без цифр, цифры можно посмотреть нажав ctrl+D и наведя на свечу.
спасибо за совет но это немного не удобно 
 
tatianati:

Здравствуйте, помогите, пожалуйста.

Ищу равенство, лоу первого бара с максимальной ценой за 20 баров начиная с 5-го бара.

Ставлю стрелку на первом баре.

Пытаюсь так:

Не ставит правильно.

Может так?

if(MathAbs(iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,K_Bars,i+5))-lowr) < n*Point) //примерно равно)))

Инициализировать ещё переменные надо бы.

 
tatianati:

нужно именно И, это диапазон- примерно

мне интересно правильно ли для индикатора я ищу от 5 -го бара до 20-го

Поиск правильно, а диапазон - не совсем. Лучше сравнивать модуль разницы с определённым заданным числом.

Вот так как-то:

if(MathAbs(iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,K_Bars,i+5))-lowr) < n*Point) // разница меньше п пунктов
 
И если уж нулевой бар нигде не участвует, имеет смысл цикл начинать с 1, тогда не будет необходимости писать [i+1].
Причина обращения: