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

 

Всем привет.

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

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

int accTotal=OrdersHistoryTotal();    

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

datetime ctm=OrderCloseTime();

}

 ...

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

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

 ticket=OrderSend(.....);

 }

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

 
ev85:

Всем привет.

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


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

TimeHour(),TimeMinute().
 
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 чартов, но, нужно правильно написать индикатор

Причина обращения: