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

 
ev85:

Всем привет.

Ребята помогите сделать условие при открытии ордера, чтоб он открывался только если текущее время (с точностью до минуты) было не равно времени закрытия прошлого ордера.

Делаю такую конструкцию:

int accTotal=OrdersHistoryTotal();    

if(OrderSelect(accTotal-1,SELECT_BY_POS,MODE_HISTORY)==true) {         

datetime ctm=OrderCloseTime();

}

 ...

и потом условие для открытия ордера

 if(.....&&(TimeCurrent()!=ctm)){

 ticket=OrderSend(.....);

 }

Но понятное дело она не работает, т.к. TimeCurrent() возвращает время с точностью до секунды, а мне надо до минуты, т.к. торгую на минутках, и при резких колебаниях рынка даже за одну минуту цена может пройти сотни пунктов, и это по закону подлости часто не в мою сторону. Поэтому надо чтоб за одну минуту открывался только один ордер.

 

   datetime t=0;
   int  ticket;

   for(int i=0; i<OrdersHistoryTotal(); i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         if(OrderSymbol()==Symbol()) 
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
              {
               if(t<OrderCloseTime()) t=OrderCloseTime();
              }
           }
        }
     }
   if(TimeCurrent()-t>60)   //Ecли после закрытия последней поз > 60 секунд, то открываемся
       ticket=OrderSend(.....);
Как то так
 
Как грамотно программно определить тренд на MQL4?
 
Cei:  Как грамотно программно определить тренд на MQL4?

Способов много - посмотрите в КодеБазе индикаторы тренда. Дифференцировать скользящую среднюю, взять коэффициент линейной регрессии, ... но на мой вкус лучше ловить развороты

Нажал вверху этой страницы Code Base. Ввел в поиске строку индикатор тренда. Там этих индикаторов - как сказал Маяковский - все работы хороши, выбирай на вкус. Вот ссылка на один из них. Полазил еще и прочитал: Правильный торговый советник ... должен выдать одну рекомендацию – «Не входить в рынок».

 
Cei:
Как грамотно программно определить тренд на MQL4?

Подождать разворота, объявить - был тренд туда-то )))

Иначе - никак.  Тренд определяется в прошлом, как и волны, как и фракталы, как и зигзаги всякие.

 

Друзья, а есть ли какая-либо функция на запрет торговли?

Нужна для небольшого цикла:

for (при условии; запрет на торговлю; пока не закроются все текущие ордера)

 
ev85:

Друзья, а есть ли какая-либо функция на запрет торговли?

Нужна для небольшого цикла:

for (при условии; запрет на торговлю; пока не закроются все текущие ордера)

 OrdersTotal()
[Удален]  
Задача такая.

Нужно запускать индикатор на всех 9-ти таймфреймах для 100 символов из Market Watch и выводить результат в виде таблицы.
Чтобы история подкачивалась и была актуальной, нужно держать открытыми 900 чартов или нет?
 
RickD:
Задача такая.

Нужно запускать индикатор на всех 9-ти таймфреймах для 100 символов из Market Watch и выводить результат в виде таблицы.
Чтобы история подкачивалась и была актуальной, нужно держать открытыми 900 чартов или нет?

Нет, достаточно 100 чартов, но, нужно правильно написать индикатор. 

 
paukas:
 OrdersTotal()

Может я не понимаю, но просто я думал что OrdersTotal()==0 это наоборот конечная цель моего цикла.

То что я хочу, можно представить еще вот так:

Условие;

while(OrdersTotal()==0)

{

Запрет на торговлю;

} 

[Удален]  
Mislaid:

Нет, достаточно 100 чартов, но, нужно правильно написать индикатор. 

Ну да. Больше 100 чартов нельзя открыть в Метатрейдере.

А как организовать своевременную подкачку истории по всем символам и таймфреймам в индикаторе?
Вызов ArrayCopySeries будет делать это?

На старте индикатора вызов ArrayCopySeries не подкачивает историю по новым инструментам.
Может не идет подкачка, потому-что рынок в выходные закрыт?