Здравствуйте.
Захотел проверить одну идею на индикаторе Зиг-зага. Ну как всегда пятницу отметил. В субботу проснулся думаю начертаю по быстрому код и на оптимизацию. Ну, а пока оптимизируется, зарегистрируюсь к Герчику на 12 сентября в живые торги.
Вот тут и началось…
Скажу прямо. Перед тем как написать статью я два часа тупо смотрел в одну точку и потом, когда отошёл из астрала, ещё час лазил по интернету пытаясь хоть что-то найти из простого кода Зиг-зага которое можно вставить в советник…
Ну короче по-порядку. Ну как всем известно индикатор этот лежит в общей папке и не составляет труда его посмотреть. Для наглядности простоты скажу, что зиг-заг, по моему искреннему мнению, строится на двух логиках или одной: первая — пробой минимума или максимума канала из Н-свечей каналом за ИКС-свечей, вторая — просто пробитие канала из Н-свечей. Думаю, что большинство то же в этом уверены.
Что мы видим при открытии стандартного индикатора? Правильно — Три параметра. Как позже разобрался это длинна канала, отклонение за пять свечей и отклонение за три свечки. Зачем отклонение спросите вы? Вот… И я задумался, оказывается это ищутся максимум и минимум за 3 свечки и 5 свечек. Зачем тогда период 12? Не знаю.
Смотрю код:
int OnCalculate(const int rates_total,
const int prev_calculated,
const <u>datetime &time</u>[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const <u>long& tick_volume</u>[],
const <u>long& volume</u>[],
const <u>int& spread</u>[])
Зачем подчёркнутое в этом индикаторе я не знаю. Наверно, что бы расслаблялся. Вот… Особенно задумался над параметром ТикВолюм ( тиковый объём ) и Волюм ( реальный объём ). Учитывая что объёма нету в мт4, ну или это просто срывают разработчики, меня тут и накрыло на значении Спред… Нехилый такой вот Зиг-заг.
Как организовать простой код в советнике уже не знаю.
Нашёл небольшой очерк тут
www.mql5.com/ru/code/21452 но там под мт5 и честно ничего не понял.
Ещё небольшой код с перебором который дважды вешает систему в первый раз когда считает индикатор пересчитывая свечи, а второй раз советник:
int GetSignal()
{
int Sig = 0;
double zz_dn, zz_up;
for (i = SignalBar; i<Bars; i++)
{
zz_dn = iCustom(Symbol(), Period(), "ZigZag_Pointer", ZZ_ExtDepth, ZZ_ExtDeviation, ZZ_ExtBackstep, 0, i);
zz_up = iCustom(Symbol(), Period(), "ZigZag_Pointer", ZZ_ExtDepth, ZZ_ExtDeviation, ZZ_ExtBackstep, 1, i);
if (zz_dn > 0 && zz_up == 0)
{
Sig = 1;
break;
}
if (zz_dn == 0 && zz_up > 0)
{
Sig = -1;
break;
}
break;
}
return (Sig);
}
Индикатора на руках нету.
Надеюсь поможете.
Комментарии (8)
13 axe44 Автор Сообщений: 1149 - Алек
13 axe44 Автор Сообщений: 1149 - Алек
13 axe44 Автор Сообщений: 1149 - Алек
35 AM2 Сообщений: 16285 - Андрей
Как по учебнику.
Зигзаг обновляется при обновлении максимума или минимума за определённый период. У тебя это выглядит так.
Но такой код вешает систему на минуту. При прогоне на оптимизацию может повесить систему на 160 часов с дополнительными параметрами
Вот и ищу простой код на 5 строчек, что бы обновление минимума и максимума искалось миллисекунду. Что бы была бомба.
Как то так.
На на картинке Вселенский Коллапс не помещается )
13 axe44 Автор Сообщений: 1149 - Алек
делаю сейчас подобную штуку так примерно:
35 AM2 Сообщений: 16285 - Андрей
13 axe44 Автор Сообщений: 1149 - Алек
Если есть ошибка, говори.
13 axe44 Автор Сообщений: 1149 - Алек
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий