Условие, ограничивающие торговлю эксперта по сессиям.

 
Приветствую.

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

В моём случает хочу написать условие, ограничивающие торговлю эксперта по сессиям, а именно если эксперт торговал в начале, середине скажем европейской сессии и успел закрыть прибыльный или убыточный ордер по паре, то вход в рынок осуществляется по условию входа только на новой сессии.
Для понимания экспертом когда закрылся последний ордер по той или иной паре использую следующию функцию.
//+----------------------------------------------------------------------------+
//|  Возвращает время закрытия ордера.                                         |
//|  Параметры:                                                                |
//|    mn  - MagicNumber              (-1 - любой магик)                       |
//+----------------------------------------------------------------------------+
int GetTimeClose(int mn=-1) {
  datetime l = 0;
  int    i, k=OrdersHistoryTotal();
  for (i=0; i<=k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
            if (OrderMagicNumber()==mn && OrderSymbol()==Symbol()) {
              l=OrderCloseTime();
        }
      }
    }
  }
  return(l);
}

Естественно время возвращается в секундах, как привязать время последнего закрытоого ордера к торговой сессии?

Помогите разобраться в данном вопросе, желательно на примере:
if (GetTimeClose(MAGICMA)<14) return(0);

14 - час по времени MT4.
 
Получить время закрытия ордера в часах TimeHour(OrderCloseTime())
 

Спасибо, как же я пропустил то этот момент. Всё заканчиваю праздновать.

 
HIDDEN:
Приветствую.

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

В моём случает хочу написать условие, ограничивающие торговлю эксперта по сессиям, а именно если эксперт торговал в начале, середине скажем европейской сессии и успел закрыть прибыльный или убыточный ордер по паре, то вход в рынок осуществляется по условию входа только на новой сессии.
Cамый простой способ входа по новой сессии - это проверка на дневках сформировавшегося бара. Новый дневной бар формируется в начале любой сессии, а завершается в конце. И проверку следует делать не по времени, а по дате. Если дата поменялась, значит и сессия уже другая.
 

В течение суток проходит три сессии. Поэтому нельзя ориентироваться ни на дату ни на начало дневного бара.
Собственно начало сессии - это условное событие. Граница между сессиями размыта так же, как размыта граница между утром и днём, днём и вечером. Отдельно взятый трейдер может вести торговлю когда хочет, и не обязан привязываться к началу сессии.

Начало сессии - это событие, которое можно условно связать со временем открытия бирж. Если временем начала американской сессии считать время открытия Нью-Йоркской биржи, то это время 16:20 по Москве (не 16:30).

Лучше отслеживать события, о времени начала которых заранее известно. Обычно такие события случаются в 12:30 (Мск) в Лондоне (могут сильно повлиять на GBP) и 16:30 в Нью-Йорке (влияет на USD) или в любое другое время, о кот. можно узнать из публикуемого календаря событий.

 
SK. писал (а):

В течение суток проходит три сессии. Поэтому нельзя ориентироваться ни на дату ни на начало дневного бара.
Собственно начало сессии - это условное событие. Граница между сессиями размыта так же, как размыта граница между утром и днём, днём и вечером. Отдельно взятый трейдер может вести торговлю когда хочет, и не обязан привязываться к началу сессии.

Начало сессии - это событие, которое можно условно связать со временем открытия бирж. Если временем начала американской сессии считать время открытия Нью-Йоркской биржи, то это время 16:20 по Москве (не 16:30).

Лучше отслеживать события, о времени начала которых заранее известно. Обычно такие события случаются в 12:30 (Мск) в Лондоне (могут сильно повлиять на GBP) и 16:30 в Нью-Йорке (влияет на USD) или в любое другое время, о кот. можно узнать из публикуемого календаря событий.


Для отслеживания событий из календаря у меня другой модуль есть.

Мне нужно просто ограничить эксперта, что-бы если он закрыл 1 ордер в сессию до следующей сессии не торговал.
Только пока что-то не получается.
 
HIDDEN писал (а):

Для отслеживания событий из календаря у меня другой модуль есть.

Мне нужно просто ограничить эксперта, что-бы если он закрыл 1 ордер в сессию до следующей сессии не торговал.
Только пока что-то не получается.

Для этого нужно формализовать задачу. Если критерии точно известны, то решение зачастую кроется в самой постановке задачи:
1. Численно задать время начала сессий.
2. Учесть имеющиеся ордера.
3. Ввести в состав советника блок, в кот. анализировалось бы сочетание ордеров, факт закрытия ордеров в течение текущей сессии и текущего момента (т.е. в какой сессии находимся) . Этот блок может, например, менять флаг, разрешающий торговлю: если флажок поднят и было закрытие, то опустить его (торговля запрещена в соотв. с алгоритмом). По окончании сессии флажок нужно поднять (торговля разрешена в соотв. с алгоримом).
4. В торговом блоке разрешать новые ордера в зависимости от состояния этого флага (и, если это предусматривается, то и от наличия сигнала на откр. ордера).
 

Вроде все устаканилось. Работает всем спасибо

 
SK. писал (а):

В течение суток проходит три сессии. Поэтому нельзя ориентироваться ни на дату ни на начало дневного бара.
Собственно начало сессии - это условное событие. Граница между сессиями размыта так же, как размыта граница между утром и днём, днём и вечером. Отдельно взятый трейдер может вести торговлю когда хочет, и не обязан привязываться к началу сессии.

Начало сессии - это событие, которое можно условно связать со временем открытия бирж. Если временем начала американской сессии считать время открытия Нью-Йоркской биржи, то это время 16:20 по Москве (не 16:30).

Лучше отслеживать события, о времени начала которых заранее известно. Обычно такие события случаются в 12:30 (Мск) в Лондоне (могут сильно повлиять на GBP) и 16:30 в Нью-Йорке (влияет на USD) или в любое другое время, о кот. можно узнать из публикуемого календаря событий.

Это я запарился. Отвык от Forex, т.к. торгую на акциях по CFD
Причина обращения: