Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#2726

Доброе время суток. Возник еще один вопросик. К примеру мы запустили эксперта на оптимизацию, при каждой ли итерации ( в смысле прохода с новыми входными параметрами ) вызывается метод OnInit бот каждый раз переинициализируется?

#2727
Qj по идее инит должен отрабатывать. можно проверить косвенно с помощью ММ - в Ините менять существенно лот в зависимости от одного оптимизируемого параметра, например если больше 5, то лот*10.
Если бот не сильно сливной, то данные прогоны должны сгруппироваться.
#2728

Уважаемые программисты, можете скинуть наглядный код того как узнать значение 2го хая, вершины ZigZag. Не второго экстремума, а 2й вершины?!

ScreenShot.png

#2729

Дык, они же идут по-очереди (вершины и низины), если Вы узнали 1-ю вершину ищите через один экстремум.

#2730

Это все понятно, но как, какой код этого счетчика?!

#2731

У Вас должен быть цикл по барам в поисках значения цены в буфере инд. Зиг-Заг. а в цикле считаете экстремумы - Вам нужен 0 и 2 экстремум, если счётчик = 0 , то это 1-я вершина, если счётчик = 2, то вторая...
Счетчик описывается так: int cn = 0;
Далее в цикле по барам:
for (.....)
{
if (ZigZag > 0) // нашли экстремум
{
if (cn == 0) // первая вершина
if (cn == 2) // вторая вершина
// Вам только надо разбираться вершина или низина, если последняя - низина, а нужны вершины, то счетчик нужно уменьшать на 1.
cn++;
}
}

#2732

на сколько я понял, таким образом мы узнаем значение перелома 3го зигзага, где на скрине отображена первая фиолетовая горизонтальная линия, но она ниже первой вершины, как и следующий зигзаг, а как по счетчику добраться до второй вершины, которая будет хоть чуть больше первой вершины, и пропускать счетчик будет значения переломов, которые меньше первой вершины?

#2733

Тогда счётчик не нужен. записываем цену первой вершины и в цикле ищем большее значение, это и есть то, что Вам нужно..

#2734

я поэтому и создал тему, что бы узнать код счетчика, или цикла, или массива, смотря что в данном случае правильней будет.
Если есть какой то шаблонный вариант - можете скинуть?

#2735

Шаблонов нет. Давайте Ваш код добавим туда проверку.

#2736


Шаблонов нет. Давайте Ваш код добавим туда проверку.


попробуйте пожалуйста, скрипт

zzsl.mq48 скач.

Изменено 5 ноября, 2015 пользователем Gruler

#2737

Так что делать с этой 2 вершиной?

#2738

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

#2739

Попробуй. Я не пробовал - написал в слепую...

zzsl.mq410 скач.

#2740

Нету у меня ни какого int start, есть int onInit, есть int OnDeinit, есть void OnDeInit, void ontick, void ontimer, double ontester, void onchartEver; а int start нет @-)

#2741


Нету у меня ни какого int start, есть int onInit, есть int OnDeinit, есть void OnDeInit, void ontick, void ontimer, double ontester, void onchartEver; а int start нет @-)


http://docs.mql4.com/ru/mql4changes - первая табличка и первая строчка.
#2743

Кто-нибудь пробовал реализовать делегаты или хотя бы знает как в MQL сделать указатель на функцию?

#2744


Перезаписан под актуальные билды первый урок курса "MQL программирование":
http://tradelikeapro.ru/mql-nachalo/



Спасибо. Смотрел старые уроки и сожалел, что есть расхождение с новыми билдами. Сейчас как-раз самое время изучить MQL.
Выполнил ДЗ к первому уроку.

test.mq410 скач.

#2745

Подскажите, можно ли как то привязать лейбл к шкале времени не по левому краю (началу текста), а по правому?
Устанавливаю лейбл рядом с линией на расстояние, равное 7 свечам от этой линии - вписывается нормально


Но при уменьшении zoom'а на графике она, естественно, смещается на линию:


Как можно обойти данную проблему с целью улучшения "красоты" отображения графических фигур? :d


UPD
Разобрался )
Угол привязки определяется с помощью функции OBJPROP_ANCHOR: ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_RIGHT);

Изменено 13 ноября, 2015 пользователем Rever27

#2746

Добрый день.
Помогите пожалуйста с функцией поиска нового бара и ограничения открытия позиций на одном определённом символе и таймфрейме. С обычным советником всё понятно. Можно использовать стандартную функцию из учебника

Цитата

bool New_Bar=false;
bool Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
bool New_Bar=false; // Нового бара нет
if (New_Time != Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
return(New_Bar);
}
bool IsNewBar(){
static datetime _timeLastBar = 0;
if(_timeLastBar == (datetime)0) //первый запуск
_timeLastBar = Time[0];
if(Time[0] > _timeLastBar){
_timeLastBar = Time[0];
return true;
}
return false;
}
if (Fun_New_Bar()==true)
{}



А как эту функцию приспособить к мультивалютному эксперту?
#2747
Soldat так и применяйте - новый бар от на всех инструментах. правда тики не синхронно приходят, но с этим придётся жить...
#2748


Soldat так и применяйте - новый бар от на всех инструментах. правда тики не синхронно приходят, но с этим придётся жить...



Да это понятно. Не понятно как её использовать при мультивалютности и различных таймфреймах. Допустим у меня 10 пар и 4 таймфрейма. Мне получается через цикл for 40 вариантов прописывать? Или через оператор if? Может есть иной, более компактный способ?
#2749
Soldat у Вас 1 эксперт торгует по 10 парам - это понятно, при этом использует для поиска сигнала 4 ТФ - это можно понять, но в чём вопрос и сложность - не понятно...
Ваш эксперт будет стоять и получать тики с одного графика (пары), узнать котировку по другой паре можно только специально через запрос, т.е. Вы можете отследить закрытие бара (любого ТФ) только на основной паре, а теперь, как говориться, следите за руками: тик пришел и сова поняла, что по основной паре открылся новый бар, а по другой паре (XXXYYY) тика ещё не было, вопрос что Вам вернёт функция iClose(XXXYYY, 0, 1)?
Если Вы знаете ответ - то Вам должно быть вообще все понятно.
Я точного ответа не знаю, но могу предположить, что эта функция вернёт Вам не то, что Вы ожидали, скажу даже больше, эта функция вернёт Вам не то, даже если Вы сделаете запрос по текущей паре, но с другого ТФ.

Это я к тому, что отслеживать закрытие баров на 4 ТФ надо по той паре, где стоит сова, потом в цикле делать расчёты сигналов по всем парам (предполагая, что и там бары закрыты, или проверяя время открытия 1 бара на основной паре и рабочей паре).
#2750

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

Zadanie_№1.mq414 скач.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025