Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание индикаторов


Рекомендуемые сообщения

Здравствуйте! А не подскажет ли кто-нибудь (или хоть намекните :biggrin: ), как можно раскрасить линию индикатора в зависимости от часа суток? Например, разным цветом пометить время европейской и американской сессий и т.п.

Вероятно, нужен отдельный буфер для цвета?

Да, вы правы. Тут нужно использовать отдельный буфер для каждого цвета или создавать отдельный объект для каждого цвета (как это сделано в индикаторе iSession).

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 159
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Уважаемый Liv, подскажите как в индикаторе можно закрепить горизонтальную линию на уровне пересечения МА с вертикальной линией по max (min).

post-1859-1210924975_thumb.png

Ссылка на комментарий
Поделиться на другие сайты

Уважаемый Liv, подскажите как в индикаторе можно закрепить горизонтальную линию на уровне пересечения МА с вертикальной линией по max (min).

Привет!

Горизонтальная линия - это объект, которому нужен только 1 параметр - цена:

ObjectCreate("Линия", OBJ_HLINE, 0, 0, Цена);

А цену можно получить из вашей SMA, зная время (бар).

double Цена = iMA(NULL,0,ПериодМА,СдвигМА,MODE_SMA,PRICE_CLOSE,Бар);

Ссылка на комментарий
Поделиться на другие сайты

Уважаемый Liv, подскажите как в индикаторе можно закрепить горизонтальную линию на уровне пересечения МА с вертикальной линией по max (min).

Привет!

Горизонтальная линия - это объект, которому нужен только 1 параметр - цена:

ObjectCreate("Линия", OBJ_HLINE, 0, 0, Цена);

А цену можно получить из вашей SMA, зная время (бар).

double Цена = iMA(NULL,0,ПериодМА,СдвигМА,MODE_SMA,PRICE_CLOSE,Бар);

 

Спасибо. Однако требуется. чтобы горизонтальная линия не ползла за МА, а осталась на той цене, когда было пересечение МА и вертикальной линии по max (min). Чтобы эта гор. линия менялась только при смене max (min).

Ссылка на комментарий
Поделиться на другие сайты

Уважаемый Liv, подскажите как в индикаторе можно закрепить горизонтальную линию на уровне пересечения МА с вертикальной линией по max (min).

Привет!

Горизонтальная линия - это объект, которому нужен только 1 параметр - цена:

ObjectCreate("Линия", OBJ_HLINE, 0, 0, Цена);

А цену можно получить из вашей SMA, зная время (бар).

double Цена = iMA(NULL,0,ПериодМА,СдвигМА,MODE_SMA,PRICE_CLOSE,Бар);

 

Спасибо. Однако требуется. чтобы горизонтальная линия не ползла за МА, а осталась на той цене, когда было пересечение МА и вертикальной линии по max (min). Чтобы эта гор. линия менялась только при смене max (min).

EMA на указанном баре уже не меняется. Скорее всего это вы меняете бар и тогда, конечно, будет меняться и цена от ЕМА.

Ссылка на комментарий
Поделиться на другие сайты

EMA на указанном баре уже не меняется. Скорее всего это вы меняете бар и тогда, конечно, будет меняться и цена от ЕМА.

Извини, не совсем понимаю как указать бар в МА. МА одна, а цена максимум или минимум. И горизонтальная линия меняется в зависимости от того, чего достигла цена -максимума или минимума. Получается, что при достижении максимума горизонтальная линия одна, а при достижении минимума уже другая.

С уважением.

Ссылка на комментарий
Поделиться на другие сайты

Бар (свеча) считается от 0 (текущий) и в расчёте EMA указывается самым последним аргументом:

double Цена = iMA(NULL,0,ПериодМА,СдвигМА,MODE_SMA,PRICE_CLOSE,Бар);

Таким образом, если вы будете знать максимум (или минимум - что вам нужно), то будете знать бар, на котором был этот макимум (минимум) и вы получите расчётное значение МА.

Ссылка на комментарий
Поделиться на другие сайты

Я тоже скачал этот индикатор, но никак не удаётся с ним разобраться... извините, времени не хватает!... :rolleyes:

Здравствуйте! Вот новая версия: свободно меняем набор инструментов. Файл выкладываю.

Проблема всё та же: несовпадение показаний индикатора ALLVSUSD с котировками. При появлении свежих тиков почему-то немного ползают вверх-вниз старые бары, хотя они уже посчитаны! При хождении по таймфреймам тоже немного могут поменяться старые бары. Что-то не то в пересчете старых баров. Хотя в индикатор вставлен блок для проверки посчитанных баров из поста Liv.

Вот пример опасности такой нестабильности: вхожу на истинном пробое поддержки, через час возвращаюсь, а это был отскок от поддержки, слизавший мой стоп-лосс.

Для примера взял 6 мая 2008г.: посмотрите прилагаемый архив. Там 3 рисунка и таблица Excel.

ALLVSUSD_06.rar

6_____2008.rar

Ссылка на комментарий
Поделиться на другие сайты

Такая незначительная просьба для тех кто пишент индикаторы сам.

Что бы хотелось от переделанного инд Parabolic Sar. да все просто допустим я выбираю торговый ТФ 1мин но от пораболика мне нужно что бы он ставил сигналы со всех ТФ т.е я сижу на 1мин а на чарте вижу 1мин параболик, 5мин, 15 мин, 30 мин, 1ч, 4ч, День, Неделя, Месяц. Что бы можно было настраивать параметры на каждый Параболик, задавать цвет. Платить за работу нечем к сожалению. Огромное спасибо тем кто откликнулся.

Ссылка на комментарий
Поделиться на другие сайты

Привет всем!

Вы наверняка знаете индикатор Pivot_AllLevels.mq4.

В нем есть такой отрывок

if(TimeDay(Time) != TimeDay(Time[i+1]))

{

P = (LastHigh + LastLow + Close[i+1]) / 3;

R1 = (2*P) - LastLow;

S1 = (2*P) - LastHigh;

R2 = P + (LastHigh - LastLow);

S2 = P - (LastHigh - LastLow);

R3 = (2*P) + (LastHigh - (2*LastLow));

S3 = (2*P) - ((2* LastHigh) - LastLow);

LastLow = Open;

LastHigh = Open;

Я хочу его подогнать под время альпари, как известно время у них GMT+1... Я не могу вот что понять:

1. Что за переменная i?

2. Как сделать так, чтобы он считал Close не от последнего часового бара, а от предпоследнего?..

Ссылка на комментарий
Поделиться на другие сайты

Я не могу вот что понять:

...

if(TimeDay(Time) != TimeDay(Time[i+1]))

...

1. Что за переменная i?

2. Как сделать так, чтобы он считал Close не от последнего часового бара, а от предпоследнего?..

обычно целочисленную переменную i используют в данном контексте как номер бара... 0 - текущий бар, 1 - предпоследний и т.д.

 

конечно, можно использовать любую переменную с тем именем, которое нравится. :-)

Ссылка на комментарий
Поделиться на другие сайты

if(TimeDay(Time) != TimeDay(Time[i+1]))

т.е. Если мне нужно посчитать HLC до предпоследнего часового бара предыдущего дня, я должен написать:

 

if(TimeDay(Time) != TimeDay(Time[i+1]) + TimeHour(Time[i+1])). Чего-то не хватает... Чего?

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Уважаемые програмисты!!!

Есть потребность в индикаторе PIVOT с возможностью в ручную вносить параметры High, Low, Ciose по стандартной формуле

P=(H+L+C)/3

R1=2*P-L

R2=P+(R1-S1)

R2=H+2*(P-L)

S1=2*P-H

S2=P-(R1-S1)

S3=L-2*(H-P)

А он сам потом чертил все линии Pivot и R,S. на графиках.

Если нетрудно сделайте такой или подскажите где взять.

Ссылка на комментарий
Поделиться на другие сайты

Всем привет!

 

Подскажите пожалуйста, что могут означать следующие строки кода.

 

int i=0, j=0;

int cbars=IndicatorCounted();

if (cbars<0) return(-1);

if (cbars>0) cbars--;

 

В частности непонятна 3-я строчка. Разве может cbars быть меньше 0, и даже если такое допустить, то что и куда возвращает (-1) return.

 

Если где-то подобное уже обсуждалось, то дайте ссылку.

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...