Скачать MetaTrader 5

Торговые системы: Использование платформы MetaTrader 4 для выявления благоприятных временных окон (паттернов времени)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
185289
MetaQuotes Software Corp.  

New article Использование платформы MetaTrader 4 для выявления благоприятных временных окон (паттернов времени) has been published:

Анализ паттернов времени может применяться для рынка Форекс с целью определения наилучшего времени для открытия сделок, а также периодов, когда не следует торговать вовсе. В данном случае мы используем торговую платформу MetaTrader 4 для анализа истории и оптимизации результатов, которые могут быть использованы в механических торговых системах.

Чтение интервью, опубликованных на сайте Чемпионата Automated Trading Championship, обнаруживает много интересной информации, скрытой в рассуждениях.

В интервью Уильяма Ботрайта (Wackena) (https://championship.mql5.com/2012/ru/news) меня заинтересовала идея анализа времени для выявления одного единственного часа в сутки для совершения одной единственной сделки при свинговой торговле.

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

В конце статьи приводится код советника. В нем отсутствует стратегия выхода, однако он приведен здесь только как пример временных паттернов, которые можно получить, анализируя данные и проводя статистические исследования с помощью MetaTrader 4.

Author: Giampiero Raschetti

Левитин Сергей В.
5163
Левитин Сергей В.  
//+------------------------------------------------------------------+ 
//| FILTER BLOCK MODULES 
//+------------------------------------------------------------------+ 
bool BlockTradingFilter1() 
{
 bool BlockTrade=false;  //trade by default 
 if (UseHourTrade) 
 { 
   if( !(Hour() >= FromHourTrade && Hour() <= ToHourTrade && Minute()<= 3) ) 
     { 
      //  Comment("Non-Trading Hours!"); 
      BlockTrade=true; 
     } 
  } 
 return (BlockTrade);  
}
Не очень понял к чему в условии    if( !(Hour() >= FromHourTrade && Hour() <= ToHourTrade && Minute()<= 3) )   минуты,  и как быть например с интервалом часов 22 - 5... Жаль, что атор не выложил исходники, может было бы понятнее...
Giampiero Raschetti
63
Giampiero Raschetti  
There is a check at the beginning that sounds like this:
   if(ToHourTrade < FromHourTrade)
      return(0);
And the 3 minutes tollerance is in accordance with the 15M time frame.
Владимир
1402
Владимир  

Добавление уровня Stop Loss на основе временного подхода


Возможно перевод не точен, но судя по коду входной параметр TradeHoldingPeriod приводит нашу убыточную позу к закрытию по истечению времени:
               if(UseTimeBasedStopLoss && TimeHour(TimeCurrent() - OrderOpenTime()) >= TradeHoldingPeriod && OrderProfit() < 0 )
                 {
                   OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position!!
                   return(0);
                 }
MQL4 Comments
16319
MQL4 Comments  

Оптимизировал советник, для EURUSD, NZDUSD, USDJPY, прогнал через истоию при помощи визуализации и был шокирован результатами.

Я много видел советников, ломал голову над своими, но как по мне, это самый уникальный советник, без нейросетей.

Протестирую на демо, выложу результаты. Если результаты будут такие же как и на тесте, выложу свои оптимизированные значения.

Ihor Herasko
11301
Ihor Herasko  
Надо бы некоторые мелочи подправить, как например, закрытие позиции Sell по цене Bid:
if(OrderType() == OP_BUY) 
 {
   // check profit and set trailing stops
              
   if(UseTimeBasedStopLoss && TimeHour(TimeCurrent() - OrderOpenTime()) >= TradeHoldingPeriod && OrderProfit() < 0 )
    {
      OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position!!
      return(0);
     }
  }
else // PROCESS SELL ORDER
 {
   // check profit and set trailing stops
 
   if(UseTimeBasedStopLoss && TimeHour(TimeCurrent() - OrderOpenTime()) >= TradeHoldingPeriod && OrderProfit() < 0 )
     {
       OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position!!
       return(0);
      }
  }
Rosh
93
Rosh  
Scriptong:
Надо бы некоторые мелочи подправить, как например, закрытие позиции Sell по цене Bid:


Спасибо за замечание. Поправлено.
MQL4 Comments
16319
MQL4 Comments  

Что-то я немного запутался, подскажите плиз.

Нужно к графику подключать индикаторы или нет?

Просто я чего спрашиваю:

Оптимизировал для USDJPY. Вход в рынок в 9-00, а советних не открыл ни одного ордера.

Вот меня и терзают смутные сомнения, может я что-то не так сделал.

Alexandr Galitskij
26
Alexandr Galitskij  

 

Этот график я получил за 2007г просто добавив в советник возможность выставления процентного лота. Старт с 10000. Лично я в шоке.

double LotSize()
{
    double one_lot,min_lot,step_lot;
    double value;
    one_lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);    // залог на 1 лот
    min_lot=MarketInfo(Symbol(),MODE_MINLOT);            // минимальный размер лота
    step_lot=MarketInfo(Symbol(),MODE_LOTSTEP);          // шаг изменения лота
 
    value=(AccountFreeMargin()/100*Procent)/one_lot;
    value=NormalizeDouble((value-min_lot)/step_lot,0);   // нормализация лота
    value=min_lot+value*step_lot;
 
    return (value);
}

Вызов функции производить в месте использования lots.

extern int Procent=5; // процент ставки от свободного депо
Это вставить в начале вместо объявления lots.
Alexandr Galitskij
26
Alexandr Galitskij  
Chipito:

Что-то я немного запутался, подскажите плиз. Нужно к графику подключать индикаторы или нет? Просто я чего спрашиваю: Оптимизировал для USDJPY.  Вход в рынок в 9-00, а советних не открыл ни одного ордера.Вот меня и терзают смутные сомнения, может я что-то не так сделал.


Нет, подключать ничего не надо. Просто открывает он не каждый день.
Елена
866
Елена  
Можно выложить работающий вариант этого советника?
1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий