АвторСообщение
Anatoliy



Сообщение: 2
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.07.14 21:22. Заголовок: Я новичок.


Пишу пользовательский индикатор на основе пересечение уровни 20 и 80. Если главная линия Stochastic пересекла уровень 80 (сверху - вниз), то выводит стрелка Sell на ценовых графиках, а если главная линия Stochastic пересекла уровень 20 (снизу - верх), то стрелка Buy на ценовых графиках.

#property strict
#property indicator_chart_window
#property indicator_buffers 2
//--- plot Buy
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot Sell
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrRed
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- input parameters

//--- indicator buffers
double BuyBuffer[];
double SellBuffer[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
//---
SetIndexBuffer(0,BuyBuffer);
SetIndexArrow(0,233);
SetIndexStyle(0,DRAW_ARROW);
//---
SetIndexBuffer(1,SellBuffer);
SetIndexArrow(1,234);
SetIndexStyle(1,DRAW_ARROW);
//---
SetIndexEmptyValue(0,80.0);
SetIndexEmptyValue(1,20.0);
//---
return(0);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция пользовательского индикатора итерации |
//+------------------------------------------------------------------+
int start()
{
//---
int i, Counted_bars;

double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); // бар 1
double mainStoc_2 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2); // бар 2

Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1;

for(i=0;i>=0;i--)
{
if (mainStoc_2 > 80.0 && mainStoc_1 < 80.0)
SellBuffer = Low-5*Point;
else
SellBuffer = 0.0;

if (mainStoc_2 < 20.0 && mainStoc_1 > 20.0)
BuyBuffer = High+5*Point;
else
BuyBuffer = 0.0;
}
//---
return(0);
}

И в результатах индикатор вообще не работает.
Как его исправит?



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]


Balbesik



Сообщение: 166
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 20.02.15 17:42. Заголовок: Scriptong пишет: ....


Scriptong пишет:

 цитата:
... Опиши необходимые изменения как можно подробнее. Так, чтобы я смог понять, что нужно (или я сам задам наводящие вопросы в процессе).
После этого вполне возможно, что я сам внесу необходимые изменения...



Добрый вечер, Игорь!

Прежде всего здесь, видимо, вопрос как бы разбивается на два –
ИНСТРУМЕНТ (как дополнение к TicksCollector) и ИНДИКАТОР.

При этом совпадающие задачи и там, и там –

– Согласовать тиковый объем (активность) конкретного равновысокого бара с «неким» конкретным (совпадающему с равновысоким) баром АКТИВНОСТИ.
Т.е. в данный момент равнообъемный бар привязан к некоему (1 минута) ВРЕМЕННОМУ графику,
а при этом, если брать равновысокий бар (т.к. он «не имеет» времени как такового), то последний существует как бы сам по себе.

– Определить точку отсчета, тут могут быть варианты, на мой взгляд –
удобней – iOpen(NULL,PERIOD_CURRENT,i).
Тики выше Open – суммируются с «+», ниже Open суммируются с «-» и определяется количество тиков выше и ниже Open.

– Желательно, для равнообъемного где-то знать цену, т.е. например –
100 тиков – Close_1=… , 200 тиков – Close_2=… , 300 тиков – Close_3=… и т.д.

Т.е. ИНСТРУМЕНТ с возможностью получения максимума информации и
применить другую схему алгоритма (например -
построения нескольких равнообъемных значений на одном баре )
для использования в работе.

Ну это если рассматривать ИНСТРУМЕНТ.

А как ИНДИКАТОР (калькулятор), то тут конечно вариантов масса.

Возможно рассматривать, как равнообъемный, но хотелось бы обязательно в рамках одного бара или
наращивать по высоте, или вверх-вниз разных цветов на одном баре и
соответственно остаток переносится без знака (со знаком надо смотреть – не знаю) на следующий бар.
Может быть как РСИ или как равновысокие, или варианты OBV – на Рис. «накидал» и т.д. ( вариантов масса).

Рис. –



Я рассматриваю, как оценка рассогласования (дисбаланс) количества тиков между
Open – High и Open – Low на одном баре.


barHeight = iHigh(NULL,PERIOD_CURRENT,i) - iLow(NULL,PERIOD_CURRENT,i);

if(barHeight != 0)
{
ProcClosOH = NormalizeDouble(MathAbs(iHigh(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
ProcClosOL = NormalizeDouble(MathAbs(iLow(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
}

if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && ProcClosOH != 0)
{
DeltaVol_H = iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOH;
DeltaVol_L = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_H;
}

if(iClose(NULL,PERIOD_CURRENT,i) == iLow(NULL,PERIOD_CURRENT,i) && ProcClosOL != 0)
{
DeltaVol_L = iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOL;
DeltaVol_H = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_L;
}

if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && iVolume(NULL,PERIOD_CURRENT,i) != 0)
DeltaV1 = (DeltaVol_H - DeltaVol_L) / iVolume(NULL,PERIOD_CURRENT,i); // знак значим
else
DeltaV1 = (DeltaVol_L - DeltaVol_H) / iVolume(NULL,PERIOD_CURRENT,i); // знак значим

Соответственно буфер (отличие от штатного OBV) –

ExtOBVBuffer = - DeltaV1;
else
ExtOBVBuffer = + DeltaV1;

Выбор данной схемы (подхода) обусловлен – как «вписалась» АКТИВНОСТЬ в готовую систему в качестве дополнительного фильтра.

Сравнение с ЗигЗагом и штатным OBV после оптимизации по форвард участкам –

ЗигЗаг –



OBV –



Дисбаланс (дивергенция не используется) –






Спасибо: 0 
Профиль
Balbesik



Сообщение: 167
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 20.02.15 20:35. Заголовок: Решил добавить («…я ..


Решил добавить («…я сам внесу необходимые изменения…»),
т.к. я ранее писал, что у меня «предубеждение» к дивергенции.

Выше выложенный форвард участок с «Дисбаланс» был без дивергенции.

Ниже по дивергенции, но добавлен в твоем индикаторе ЗигЗага маленький фильтр –

При g_sell[index] идет High[index] != Close[index] и
для g_buy[index] соответственно Low[index] != Close[index]

а вот в самом индикаторе по "объему" –

if (
iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && iVolume(NULL,PERIOD_CURRENT,i) != 0
&&
iClose(NULL,PERIOD_CURRENT,i+1) == iHigh(NULL,PERIOD_CURRENT,i+1) && iVolume(NULL,PERIOD_CURRENT,i+1) != 0
&&
iClose(NULL,PERIOD_CURRENT,i+2) == iHigh(NULL,PERIOD_CURRENT,i+2) && iVolume(NULL,PERIOD_CURRENT,i+2) != 0
)
DeltaV1 = (DeltaVol_H_0 + DeltaVol_H_1 + DeltaVol_H_2 - DeltaVol_L_0 - DeltaVol_L_1 - DeltaVol_L_2)
/
(iVolume(NULL,PERIOD_CURRENT,i) + iVolume(NULL,PERIOD_CURRENT,i+1) + iVolume(NULL,PERIOD_CURRENT,i+2));
else
DeltaV1 = (DeltaVol_L_0 + DeltaVol_L_1 + DeltaVol_L_2 - DeltaVol_H_0 - DeltaVol_H_1 - DeltaVol_H_2)
/
(iVolume(NULL,PERIOD_CURRENT,i) + iVolume(NULL,PERIOD_CURRENT,i+1) + iVolume(NULL,PERIOD_CURRENT,i+2));

Расчет идет по 3 барам.
Из посыла, что экстремум формируется из минимум 3 баров.

Возможно, что-то даст (но это уже не при «прочих равных») .

Рис. Форвард участок «Дисбаланс» по дивергенции.




Спасибо: 0 
Профиль
Balbesik



Сообщение: 168
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 20.02.15 23:23. Заголовок: Совсем забыл - Штат..


Совсем забыл -

Штатный OBV по дивергенции на том же форвард участке.



Спасибо: 0 
Профиль
Balbesik



Сообщение: 169
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 22.02.15 12:05. Заголовок: Игорь, привет! Увид..


Игорь, привет!

Увидел тебя на форуме.
Если примешь решение по "калькулятору",
то (просто общее для сравнения)
MathAbs(DeltaVol_H - DeltaVol_L) / iVolume(NULL,PERIOD_CURRENT,i);
по схеме
5-Typical-(H+L+C)/3
или
6-Weighted-(H+L+2*C)/4
все "сложиться".
Кстати с наступающим.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 1218
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 22.02.15 12:29. Заголовок: Добрый день. Пока и..


Добрый день.

Пока из всего описанного за 21 - 22.02.2015 понял лишь одно - есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия. Для этого потребуется разработать индикатор по типу BearBullBalance. В принципе, идея интересная. Стоит посмотреть, что покажет этот индикатор.
Если такое начало устраивает, то принимаются идеи насчет внешнего вида индикатора. Самый простой вариант - оставить вид от BearBullBalance. Но возможны варианты.

По поводу совмещения равновысоких с эквиобъемными все равно не понимаю, как-то сумбурно описана идея.

P. S. Пожалуйста, не выкладывай результаты тестирования. Они не только ничего никому из форумчан не говорят, но даже мне. Хотя и понимаю, на основе какого советника все это строится. Это просто замусоривание форума.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 170
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 22.02.15 14:10. Заголовок: Scriptong пишет: До..


Scriptong пишет:

 цитата:
Добрый день.

Пока из всего описанного за 21 - 22.02.2015 понял лишь одно - есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия. Для этого потребуется разработать индикатор по типу BearBullBalance. В принципе, идея интересная. Стоит посмотреть, что покажет этот индикатор.
Если такое начало устраивает, то принимаются идеи насчет внешнего вида индикатора. Самый простой вариант - оставить вид от BearBullBalance. Но возможны варианты.

По поводу совмещения равновысоких с эквиобъемными все равно не понимаю, как-то сумбурно описана идея.

P. S. Пожалуйста, не выкладывай результаты тестирования. Они не только ничего никому из форумчан не говорят, но даже мне. Хотя и понимаю, на основе какого советника все это строится. Это просто замусоривание форума.



«Кто празднику рад, то заранее пьян» - как-то так.

1. «…выше цены открытия и ниже цены открытия…» именно так и более мне не надо – вид любой все равно под себя переделывать..
2. «…поводу совмещения равновысоких с эквиобъемными…» ну это просто на усмотрение, иначе «кто в лес, кто по дрова» - не понимаю,
я вообще не понимаю зачем делать не связанные друг с другом разработки при связанных параметрах.
3. Иначе не представлял, как объяснять – «не выкладывай результаты тестирования» - то идея «с потолка» не принимается, то идея на основании результатов не подходит (вообще-то, видимо ты прав, зря время тратил – "от нечего делать"), как обосновывать не понятно - "инструкцию в студию"(возможно пригодится).

Плоские у меня шутки!


Спасибо: 0 
Профиль
Balbesik



Сообщение: 171
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 23.02.15 08:59. Заголовок: Всех с праздником! ..


Всех с праздником!

Желаю здоровья и спокойствия.

Хоть голова и «болит», но еще раз посмотрел ответ.

Делаешь инструмент, тогда выше выложенное не надо.

Scriptong пишет:

 цитата:
«…есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия…»



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

Например BearBullBalance с равновысокими не работает (считает «настроение бабушки»,
т.к. привязан по ВРЕМЕНИ, а в равновысоких "времени нет" - я об этом писал).

P.S.

Scriptong пишет:

 цитата:
«…на основе какого советника все это строится…»



Твой советник, твой индикатор и штатный OBV - и гадать не надо.



Спасибо: 0 
Профиль
Scriptong





Сообщение: 1220
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 23.02.15 20:05. Заголовок: Balbesik пишет: Гла..


Balbesik пишет:

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


ОК. Со временем сделаю.

Balbesik пишет:

 цитата:
Например BearBullBalance с равновысокими не работает (считает «настроение бабушки»,
т.к. привязан по ВРЕМЕНИ, а в равновысоких "времени нет" - я об этом писал).


Действительно, эти индикаторы не работают на графиках, у которых бары не привязаны к конкретному шагу времени. Исправлено.

Balbesik пишет:

 цитата:
Твой советник, твой индикатор и штатный OBV - и гадать не надо.


В том то и дело, что мне это ясно. Другим то это неясно. У них нет этого советника и индикатора. Поэтому они тем более "не в теме".

Спасибо: 0 
Профиль
Balbesik



Сообщение: 172
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 24.02.15 10:09. Заголовок: Scriptong пишет: ОК..


Scriptong пишет:

 цитата:
ОК. Со временем сделаю.



Спасибо!
Здорово.

Scriptong пишет:

 цитата:
Исправлено.



Мне не помогло.
Первый бар перерисовывается и фиксируется, как становится вторым.
С нулевого бара весь объем сбрасывается на первый, т.е. как бы задержка (сдвиг) на один бар.
Но это уже хорошо, т.к. появляется система (а возможно так и должно быть).
Возможно связано, что я использую Синбар.
Разбираться буду с будущим индикатором по цене Открытия (понятно, что делать).
Спасибо.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 1225
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 24.02.15 19:00. Заголовок: Balbesik пишет: Мне..


Balbesik пишет:

 цитата:
Мне не помогло.
Первый бар перерисовывается и фиксируется, как становится вторым.
С нулевого бара весь объем сбрасывается на первый, т.е. как бы задержка (сдвиг) на один бар.
Но это уже хорошо, т.к. появляется система (а возможно так и должно быть).
Возможно связано, что я использую Синбар.


Да, график равновысоких свечей нужно формировать при помощи TicksCollector.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 174
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 25.02.15 15:58. Заголовок: Scriptong пишет: Да..


Scriptong пишет:

 цитата:
Да, график равновысоких свечей нужно формировать при помощи TicksCollector.



Да, кажется работает.
Как инструмент, с допуском на качественный анализ - вещь.
Но так не должно быть, почему с Синбаром не работает, потом разберусь.
Меня беспокоит ПАМЯТЬ (тоже потом).
Жду по Открытию и "кратности" (выше описывал) - "кратность" на истории "сгладит",
по аналогии с логарифмом (сглаживающая мат. функция) и
картинка может быть интересна (но, это Игорь, на твое усмотрение).
Мне достаточно - Открытия.

Спасибо: 0 
Профиль
Balbesik



Сообщение: 176
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 25.02.15 16:33. Заголовок: Еше посмотрел - "..


Еше посмотрел - "+" (не знаю как ставить).
Прелесть, что система работает согласованно.

P.S.
"Спасибо" нажимаю - "ноль реакции".

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 31
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 28.02.15 21:23. Заголовок: Добрый суток, Игорь ..


Добрый суток, Игорь и всем.

Вот пишу индикатор на MQL4, будущим перенести в MQL5 или наоборот, но оказалось не так просто. В MQL4 один стандарт, а в MQL5 другой стандарт, т.е. непереносимый код. Для того чтобы проделать работу не копировать код потом вставит или переписать код, а переделать на другой стандарт, но это не комфортно и глупо.

Существует такой вариант переносимый код для MQL4 и MQL5?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 1240
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 01.03.15 12:24. Заголовок: Добрый день, Anatoli..


Добрый день, Anatoliy.

Anatoliy пишет:

 цитата:
Существует такой вариант переносимый код для MQL4 и MQL5?


Универсального способа не существует. Но можно облегчить перенос кода с MQL4 на MQL5 и обратно, выполняя код в стиле обновленного MQL4. Если действовать подобным образом, то код индикатора, написанного на MQL4, можно будет использовать в МТ5 с минимальными исправлениями.
С советниками дело обстоит сложнее, т. к. логика работы с ордерами и позициями в платформах отличается кардинально.


Спасибо: 0 
Профиль
Balbesik



Сообщение: 181
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 03.03.15 12:28. Заголовок: «Ой ли? :sm67: » Т..


«Ой ли? »

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

Ну кроме положительной практики, а здесь основную роль играет цена по которой идет расчет (функция GetAppliedPrice – это я пропустил).

На мой взгляд в индикаторе BearBullBalance при построении отсутствует точка отсчета (база),
т.е. построение на каждом баре происходит, как бы в «воздухе» (без привязки к соседям).

«…Она отображает количество изменений цены (тиков), пришедшее за единицу времени, а не размер реально заключенных сделок…»

Т.е. да тут нет объема в денежном выражении, но может быть количество заключенных сделок и
возможна фильтрация (каждый дилинг индивидуально – что плохо, но это мы не знаем, хотя есть основания так думать),
т.к. на картинке (график цены) – «Отправлено: 14.02.15 01:10. Заголовок: Scriptong пишет: Чт..» на первый взгляд
есть соответствие количеству изменения цены, но на Синбаре часто встречается несоответствие (сам индикатор может быть некорректен),
так как на TicksCollector этого не наблюдаем – принимаем количество изменений цены .

А если это так, то данное изменение в виде количества тиков вроде бы логичней рассчитывать от чего-то!

Пусть цена Открытия в качестве базы может быть не корректна, но хоть, что-то.

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

Поэтому просто активность выше – ниже цены Открытия (не важно, куда идет цена вверх или вниз), на мой взгляд, более значима.
Как-то так.
Хотя могу ошибаться.


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет