Я пытаюсь использовать CopyRates()
для поиска модели свечи бычьего поглощения (медвежья свеча, за которой следует большая бычья свеча) на нескольких таймфреймах (все таймфреймы с H2
по M10
в пределах H4
бычьей свечи после ее закрытия). Я прочитал определение CopyRates()
, но мне кажется, что его сложно реализовать. Идея здесь заключается в том, что из паттернов я хочу отфильтровать паттерн с самым большим соотношением пар медвежьих и бычьих свечей. Посмотрите, что я сделал ниже:
В OnTick()
:
for (int i=ArraySize(timeframes); i>=1; i--) {
if(CopyRates(Symbol(), timeframes[i - 1], 1, MyPeriod, rates)!=MyPeriod) {
Print("Error CopyRates errcode = ",GetLastError());
return;
}
// Using bullish engulfing pattern:
if ((rates[numCandle].open < rates[numCandle].close) &&
(rates[numCandle + 1].open > rates[numCandle + 1].close) &&
(rates[numCandle + 1].open < rates[numCandle].close) &&
(rates[numCandle + 1].close > rates[numCandle].open)) {
// Not too certain what should be done here
}
}
Вот другой связанный код:
input int numCandle=0;
MqlRates rates[];
ENUM_TIMEFRAMES timeframes[7] = {PERIOD_H2, PERIOD_H1, PERIOD_M30, PERIOD_M20, PERIOD_M15, PERIOD_M12, PERIOD_M10};
void OnInit() {
ArraySetAsSeries(rates, true);
}
ОБНОВЛЕНО
Ниже приведено определение модели бычьего поглощения:
Модель бычьего поглощения, как показано на изображении выше, представляет собой медвежью свечу, за которой следует бычья свеча. Открытие медвежьей свечи меньше, чем закрытие бычьей свечи, а закрытие медвежьей свечи больше, чем открытие бычьей свечи. Обратите внимание, что в некоторых случаях закрытие медвежьей свечи больше, чем открытие бычьей лишь на долю. Каждая из свечей имеет размер тела больше, чем ее верхний и нижний фитили вместе взятые.