datetime time=D'2023.08.25 20:00';
ENUM_TIMEFRAMES tf=PERIOD_H1;
bool exact=false;
//--- если бара на указанное время нет - iBarShift вернет индекс ближайшего бараint bar_index=iBarShift(_Symbol,tf,time,exact);
Print(bar_index);
Результат будет 3, т.к. время задано 20:00, а текущее время 23:17.
Добрый день, господа знатоки! Несколько дней бьюсь над своей проблемой, но безрезультатно. Совсем недавно (меньше недели) начал изучать MQL5. До этого никаких языков, кроме английского не изучал. Сильно не бейте!
Для начала хочу написать советника для ручной торговли. В моем понимании, это, когда советник собирает торговые сигналы с разных пользовательских индикаторов и выводит их на информационную панель. Написал, вернее отредактировал поставляемый с МТ5 торговый сигнал, суть которого сводится к следующему:
//+------------------------------------------------------------------+//| Возвращает силу сигнала на покупку |//+------------------------------------------------------------------+int CSignalTemaDema::LongCondition()
{
int signal=0;
//--- для режима работы по тикам idx=0, в режиме работы по сформировавшимся барам idx=1int idx=StartIndex();
//--- значения средних на последнем сформировавшемся бареdouble last_fast_value=MAFast(idx);
double last_slow_value=MASlow(idx);
//--- значения средних на предпоследнем сформировавшемся бареdouble prev_fast_value=MAFast(idx+1);
double prev_slow_value=MASlow(idx+1);
//--- если быстрая скользящая выше медленной на последних двух закрытых барахif((last_fast_value>last_slow_value) && (prev_fast_value>prev_slow_value))
{
signal=100; // сигнал на покупку естьPrint("TEMA(",m_ma_period_fast, ") выше DEMA(",m_ma_period_slow,") на таймфрейме ",
EnumToString(m_period) //показывает и пишет таймфрейм индикатора, а не графика.
);
Print("Сигнал равен =",signal);
Comment(signal);
}
//--- вернем значение сигналаreturn(signal);
}
//+------------------------------------------------------------------+//| Возвращает силу сигнала на продажу |//+------------------------------------------------------------------+int CSignalTemaDema::ShortCondition()
{
int signal=0;
//--- для режима работы по тикам idx=0, в режиме работы по сформировавшимся барам idx=1int idx=StartIndex();
//--- значения средних на последнем сформировавшемся бареdouble last_fast_value=MAFast(idx);
double last_slow_value=MASlow(idx);
//--- значения средних на предпоследнем сформировавшемся бареdouble prev_fast_value=MAFast(idx+1);
double prev_slow_value=MASlow(idx+1);
//--- если быстрая скользящая ниже медленной на последних двух закрытых барахif((last_fast_value<last_slow_value) && (prev_fast_value<prev_slow_value))
{
signal=-100; // сигнал на продажу естьPrint("TEMA(",m_ma_period_fast, ") ниже DEMA(",m_ma_period_slow,") на таймфрейме ",
EnumToString(m_period) //показывает и пишет таймфрейм индикатора, а не графика.
);
Print("Сигнал равен =",signal);
Comment(signal);
}
//--- вернем значение сигналаreturn(signal);
}
и соответственно подключил этот торговый сигнал к торговому советнику с помощью "Мастера MQL5: Советник (сгенерировать)".
Закомментил ненужные строки кода, отвечающие за трейлинг и прочее, запустил советник на исторических данных, посмотрел журнал тестирования и окно графика во время тестирования и нашел артифакт, который не могу для себя объяснить.
В журнал функцией Print пишется положение быстрой TEMA относительно медленной DEMA, что соответствует реальным расположениям на графике. Так же в журнал пишется торговый сигнал 100/-100, как это задумано кодом.
НО! на графике функцией Comment, после образования третьего бара от пересечения (в любом направлении) быстрой TEMA медленной DEMA, отображается длинное число (каждый раз увеличивающееся). Затем, как ни в чем ни бывало, Comment опять показывает сигнал: 100/-100.
Что я делаю не так? Это нормально или что-то где-то не работает? Я же практически ничего не изменил в коде сигнала поставляемого с MT5.
Добрый день, коллеги - интересует, на МТ5, оптимальный вариант расчета средней цены за например 5 лет в один и тот же день. Типа 10 день года - то вот такой код...
Если например, в какой - то из годов - выходной и не было торгов в этот день года - то этот день пропускается и все. ИНтересует вообще типа такого индикатора:
1. текущий год - цена, цвет линия 1
2. усредненный за 2 (предыдущих) года - цена (средняя) - другой цвет линия 2,
3. усредненный за 5 (предыдущих) лет - цена (средняя) - другой цвет линия 3,
все это на эране на дневках (можно в доп окне (снизу)) - сразу все видно. Снизу также шкала времени.
типа этого (нормировку к 100 можно не делать, можно и в ценах цены и все) - интересует оптимальных подход к расчету средних значений цен - за определенный день года (-лет).
подскажите пожалуйста, как проще всего получать данные индикатора которые приходятся на открытие дня?
сейчас через структуру времени получаю час и с помощью часа смотрю в массиве буфера индикатора, не нравится такой вариант
iBarShift
iBarShift
голова совсем не соображает
результат - 0
должен быть 22
голова совсем не соображает
результат - 0
должен быть 22
С чего бы результат должен быть 22, а не ноль?
Попробуйте так:
Результат будет 3, т.к. время задано 20:00, а текущее время 23:17.
С уважением, Владимир.
С чего бы результат должен быть 22, а не ноль?
Попробуйте так:
Результат будет 3, т.к. время задано 20:00, а текущее время 23:17.
С уважением, Владимир.
понял, не с той стороны считаю, думаю о начале дня..)
голова совсем не соображает
результат - 0
должен быть 22
Как соединить два включаемых файла в один код?
Пожалуйста.
Добрый день, господа знатоки! Несколько дней бьюсь над своей проблемой, но безрезультатно. Совсем недавно (меньше недели) начал изучать MQL5. До этого никаких языков, кроме английского не изучал. Сильно не бейте!
Для начала хочу написать советника для ручной торговли. В моем понимании, это, когда советник собирает торговые сигналы с разных пользовательских индикаторов и выводит их на информационную панель. Написал, вернее отредактировал поставляемый с МТ5 торговый сигнал, суть которого сводится к следующему:
и соответственно подключил этот торговый сигнал к торговому советнику с помощью "Мастера MQL5: Советник (сгенерировать)".
Закомментил ненужные строки кода, отвечающие за трейлинг и прочее, запустил советник на исторических данных, посмотрел журнал тестирования и окно графика во время тестирования и нашел артифакт, который не могу для себя объяснить.
В журнал функцией Print пишется положение быстрой TEMA относительно медленной DEMA, что соответствует реальным расположениям на графике. Так же в журнал пишется торговый сигнал 100/-100, как это задумано кодом.
НО! на графике функцией Comment, после образования третьего бара от пересечения (в любом направлении) быстрой TEMA медленной DEMA, отображается длинное число (каждый раз увеличивающееся). Затем, как ни в чем ни бывало, Comment опять показывает сигнал: 100/-100.
Что я делаю не так? Это нормально или что-то где-то не работает? Я же практически ничего не изменил в коде сигнала поставляемого с MT5.
Добрый день, коллеги - интересует, на МТ5, оптимальный вариант расчета средней цены за например 5 лет в один и тот же день. Типа 10 день года - то вот такой код...
Если например, в какой - то из годов - выходной и не было торгов в этот день года - то этот день пропускается и все. ИНтересует вообще типа такого индикатора:
1. текущий год - цена, цвет линия 1
2. усредненный за 2 (предыдущих) года - цена (средняя) - другой цвет линия 2,
3. усредненный за 5 (предыдущих) лет - цена (средняя) - другой цвет линия 3,
все это на эране на дневках (можно в доп окне (снизу)) - сразу все видно. Снизу также шкала времени.
типа этого (нормировку к 100 можно не делать, можно и в ценах цены и все) - интересует оптимальных подход к расчету средних значений цен - за определенный день года (-лет).
Остальное я сам сделаю.
вот на эту строчку
если в документации написано:
Для функции PositionGetInteger()
ENUM_POSITION_PROPERTY_INTEGER
Идентификатор
Описание
Тип
POSITION_TIME
Время открытия позиции
datetime