Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 877

 
Возможно, что Upper[i] на некоторых барах не заполнен (равен 0).
 
Sergey Savinkin:
Возможно, что Upper[i] на некоторых барах не заполнен (равен 0).

Кажется я нашел некоторую улику к решению: когда условие прописано против текущего состояния цены до запуска кода, лог выдает следующее:

Важный момент - эти параметры совпадают с уже сформированной ранее ценой

Для наглядности:

Именно здесь последняя строка лога указывает, что цена выходила за пределы линии Upper. Вопрос только в одном - зачем она это делает? Есть версия, что вовремя пересчета индикатора от начала до настоящего момента код под этим условием регистрирует эти события и останавливается на таком, которое последним произошло - это обьясняет расхождение данных логов цены с текущей, но не обьясняет ничего остального - мне нужно, чтобы код просто провел сравнение в логике "цена вышла за пределы upper - подать алерт, не вышла - ничего не выполнять".

Также проверил условие кода, когда цена ниже линии upper - в логах она попросту не записала событие, которое на скрине выше - я его в конец перестал понимать, работает ли он вообще.

 

друзья, в MQL5 я новичок, поэтому, если проблемы, о которых я здесь пишу, являются моими косяками, прошу сильно не пинать.

Хотел сделать мультивалютный сов., но столкнулся с некоторыми странностями работы тестера стратегий, проявляющимися исключительно при тестировании мультивалютников. Происходит непонятный сдвиг таймсерий символов, отличных от символа основного графика. Сделал простейший сов., который в начале каждого бара получает время открытия нулевого и первого бара по двум символам. Почему-то через 1 бар начинается сдвиг таймсерии второго символа. Проявляется на любом символе и любом таймфрейме. Я тестировал на EURUSD, вторым символом был GBPUSD. Пробовал также наоборот, пробовал на других парах-ошибка проявляется всегда. Картинка из журнала после тестирования на М15:

Картинка из журнала после тестирования на Н1:

Настройки тестера стратегий:

Собственно, код для проверки:

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
input string SecondSymbol="GBPUSD";

int OnInit()
  {
   SymbolSelect(SecondSymbol,true);//выбираем второй символ в MarketWatch(для тестера)
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
//---

  }

void OnTick()
  {
   static datetime BarTime;//время начала бара
   int per=PeriodSeconds(PERIOD_CURRENT);

   datetime time_curr=TimeCurrent()/per*per;
   if(time_curr!=BarTime)
     {
      BarTime=time_curr;

      datetime Time_One[],Time_Two[];
      bool yes=ArraySetAsSeries(Time_One,true);
      yes=ArraySetAsSeries(Time_Two,true);

      int i=CopyTime(NULL,PERIOD_CURRENT,0,2,Time_One);    //текущий символ
      i=CopyTime(SecondSymbol,PERIOD_CURRENT,0,2,Time_Two);//второй символ
      
      Print("ВремяНачалаБара по ",Symbol(),":",Time_One[0]," ВремяНачалаБара по ",SecondSymbol,":",Time_Two[0]);
     }
  }

Буду признателен за любую помощь.

 
stroganow:

друзья, в MQL5 я новичок, поэтому, если проблемы, о которых я здесь пишу, являются моими косяками, прошу сильно не пинать.

Хотел сделать мультивалютный сов., но столкнулся с некоторыми странностями работы тестера стратегий, проявляющимися исключительно при тестировании мультивалютников. Происходит непонятный сдвиг таймсерий символов, отличных от символа основного графика. Сделал простейший сов., который в начале каждого бара получает время открытия нулевого и первого бара по двум символам. Почему-то через 1 бар начинается сдвиг таймсерии второго символа. Проявляется на любом символе и любом таймфрейме. Я тестировал на EURUSD, вторым символом был GBPUSD. Пробовал также наоборот, пробовал на других парах-ошибка проявляется всегда. Картинка из журнала после тестирования на М15:

Картинка из журнала после тестирования на Н1:

Настройки тестера стратегий:

Собственно, код для проверки:

Буду признателен за любую помощь.

Тестер работает правильно. Ошибка в логике работы программы: два символа - это как две жизни разных людей (здесь "человек" - это аналог "символ"). А второй человек не обязан просыпаться в тоже время, что и первый ("просыпаться" - это аналог "появление нового бара").

То есть нужно ждать появления нового бара И на первом символе И на втором.


Добавлено: статья Обработчик события "новый бар"

 

Подскажите, вот рисунок бычьего пин-бара, как должен выглядеть принципиальный код условия его распознавания?

if(low[i] <= open[i] && high[i] > close[i] && open[i] >= close[i] && close[i] <= Base[i]) // верно ли это утверждение?
 
clickaider:

Подскажите, вот рисунок бычьего пин-бара, как должен выглядеть принципиальный код условия его распознавания?

Это медвежий пин-бар. Направление свечи не принципиально. ВажнО расположение длинной тени: вверх - медвежий, вниз - бычий. И требуется подтверждение от уровневых индикаторов.
 
Artyom Trishkin:
Это медвежий пин-бар. Направление свечи не принципиально. ВажнО расположение длинной тени: вверх - медвежий, вниз - бычий. И требуется подтверждение от уровневых индикаторов.
А можно это показать кодовой конструкцией? Просто не совсем понятно, как код правильно должен выглядеть
 
clickaider:
А можно это показать кодовой конструкцией? Просто не совсем понятно, как код правильно должен выглядеть
С мобильного не смогу вам код написать. Навскидку:
Вам нужен размер свечи от Хай ло Лоу, размер тела свечи, процентное отношение тела к размеру всей свечи, размер короткой тени должен не превышать некий порог (чтобы она отсутствовала, либо была относительно маленькой к телу), ну и расположение верха/низа тела относительно полного размера свечи.
Как-то так...
 
Artyom Trishkin:
С мобильного не смогу вам код написать. Навскидку:
Вам нужен размер свечи от Хай ло Лоу, размер тела свечи, процентное отношение тела к размеру всей свечи, размер короткой тени должен не превышать некий порог (чтобы она отсутствовала, либо была относительно маленькой к телу), ну и расположение верха/низа тела относительно полного размера свечи.
Как-то так...

Графически это выглядит вот так:

 
clickaider:

Графически это выглядит вот так:

А теперь опишите словами то, что описали графически. Используйте high, low, open, close.
Как только опишете словами - считайте, что ТЗ для себя уже написали :)
Останется заменить словесные конструкции кодом.
Причина обращения: