Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1471

 
ANDREY:

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

Вашу задачу будет проще решить если вы сможете объяснить как вы определяете локальный экстремум.

Если подходит для этого индикатор Fractals то проверяете на втором баре присутствие фрактала и от этого значения считаете вам нужные 30 пунктов или пипок… как душе угодно.

 
MakarFX:

Проверка в твоем коде нагрузки не несет, но если сильно хочешь попробуй

Попробывал. Снова открывает ордера не те ( по времени, цене и количеству)

Твой код

double LoU;
int OnInit()
  {
   LoU=Bid;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Bid;
     }
  }


Спасибо за помощь.

 
Alexey Viktorov:

Вашу задачу будет проще решить если вы сможете объяснить как вы определяете локальный экстремум.

Если подходит для этого индикатор Fractals то проверяете на втором баре присутствие фрактала и от этого значения считаете вам нужные 30 пунктов или пипок… как душе угодно.

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

 
ANDREY:

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

Экстремум это локальный минимум или локальный максимум. Как вы его определяете?

 
Alexey Viktorov:

Вашу задачу будет проще решить если вы сможете объяснить как вы определяете локальный экстремум.

Если подходит для этого индикатор Fractals то проверяете на втором баре присутствие фрактала и от этого значения считаете вам нужные 30 пунктов или пипок… как душе угодно.

Мне кажется что индикатор фракталов мне не  подходит. Многие ордера он будет пропускать.

Голубым выделен ордер открытый мои кодом с проверкой цены на каждом тике. Как мне кажется фрактал ни о чем нужном для меня  в данном случает не говорит.

 
Alexey Viktorov:

Экстремум это локальный минимум или локальный максимум. Как вы его определяете?

В моем случае - минимум.

 
ANDREY

Что такое

Pr

как инициализируется?

 
MakarFX:
Смотря где ее прописать

Например между открытием двух соседних ордеров. То, есть запомнить бар последнего открытого ордера и как только цена будет выше лоу, которую определит  эта функция на 30 п. - открыть ордер. Но правда тогда эту функцию нужно будет вызывать на каждом тике. Менять шило на мыло.......

 
ANDREY:

Менять шило на мыло.......

Даже хуже...еще надо знать кол-во баров


Я подправил ...попробуй

 
MakarFX:

Что такое

как инициализируется?

double LoU,Pr;
void OnTick()//484
{
Tick++;
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
Pr - это переменная для того что бы через 30 пп  открывался только 1 ордер. А без этой переменной открываются на каждом тике
Причина обращения: