АвторСообщение
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



Сообщение: 144
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 26.11.14 21:15. Заголовок: Добрый вечер! Не ум..


Добрый вечер!

Не умею объяснять.

Начну с того, что идет речь о инструменте, а не о методе тех. анализа.
Инструмент разбивается на два – для истории и для реала.

С начало с этого –
Scriptong пишет:

 цитата:
На рисунках же приведено что-то странное. Если крайняя правая колонка указывает тиковый объем,
то каким образом все четыре цены минутного бара оказываются разными?
Скорее всего, в данных, откуда взята минутная история, не было информации о тиковом объеме.
Его просто добавили для совместимости с МТ4. Но тогда на эти единички не стоит о



Рисунки взяты с графика равновысоких баров по истории.
1 заложена в алгоритме синбара.

В этом и проблема.

Четыре цены – это значения у разложенной минутки на равновысокие бары.
При этом объёма на истории равновысоких баров нет, хотя на 1 минутке он есть.
На реале на равновысоких барах объём есть.

Все это время, попытки разложить объём 1 минутки (история) пропорционально на равновысокие бары не удались.
Т.е. брал синбар, для работы по истории.

Я сделать не могу
.

Ну и в данный момент, кроме прочего, советники, в т.ч. штатные, перестали видеть всю «скаченную» историю (только недели 2)
– тут масса вопросов.
Накопленную историю с реала советники пока «видят» - или Метаквосты «стараются» или что-то опять с кодом.

Т.е. попробую далее на словах (без картинок) –
Scriptong пишет:

 цитата:
Эта фраза вроде бы говорит о том, что все-таки требуется некий микс из эквиобъемных и равновысоких баров.
Меня именно этот способ сначала заинтересовал, но потом вроде бы понял, что требуется другое.
Теперь вновь возвращаемся назад.
Видимо придется набраться тебе терпения и объяснять мне до тех пор, пока не дойдет до меня.



Когда я писал про «не надо солянку» подразумевал, что надо 2 графика, а не один график – «сурогат».

Еще раз – исходный 1 минутный бар размахом 20 пунктов и «условный объем» 20 единиц.

А) задаем 10 пунктов р/в и 10 ед. объема, раскладываем на равновысокие по 10 пунктов и по 10 ед. объёма
получим 2 совпадающих бара.

Б) задаем 10 пунктов р/в и 5 ед. объема, при этом на первые 10 пунктов р/в бара приходится 5 ед. обьема,
а на 2 р/в бар приходится 15 ед. обьема, раскладываем на
равновысокие по 10 пунктов и по объёму на первый р/в бар 1 бар объема, на 2 р/в бар 3 бара объема.

С) задаем 10 пунктов р/в и 15 ед. объема, при этом на первые 10 пунктов р/в бара приходится 12 ед. обьема (бар по объему не сформирован) и
формирование бара по объему происходит на 2 р/в баре и 5 ед. объема «уйдет» на следующую минуту.
Получим 2 р/в барам соответствует 1 бар по объему.

Основная задача «связать» 2 графика, «без разрывов квждый», равновысоких и равнообъёмных баров.

Мы имеем на баре цены, тиковый объем и время. Хотя и цены и время формирования могут быть разные,
но по специфики построения (время р/в бара – по цене закрытия) будет связка по времени равновысокого бара.
Остаточный объём не принципиален – он компенсирует сам себя (разность уйдет на "0" бар).

Как бы линейный график времени превращаем в 2 нелинейных графика и пытаемся их согласовать.



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





Сообщение: 1012
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 27.11.14 18:58. Заголовок: Balbesik пишет: Все..


Balbesik пишет:

 цитата:
Все это время, попытки разложить объём 1 минутки (история) пропорционально на равновысокие бары не удались.
Т.е. брал синбар, для работы по истории.


Возьми TicksCollector. Он даст реальный тиковый объем для равновысоких баров, а не 1.

Balbesik пишет:

 цитата:
С) задаем 10 пунктов р/в и 15 ед. объема, при этом на первые 10 пунктов р/в бара приходится 12 ед. обьема (бар по объему не сформирован) и
формирование бара по объему происходит на 2 р/в баре и 5 ед. объема «уйдет» на следующую минуту.
Получим 2 р/в барам соответствует 1 бар по объему.


Я именно так себе и представлял совмещение равновысоких и эквиобъемных графиков. И уже говорил о проблеме, которая возникнет - постоянное рассогласование по количеству баров. На графике это будет выглядеть как рассогласование по времени.
Берем график равновысоких свечей с высотой 10 пунктов (М313) и эквиобъемный график с количеством тиков 100 (М314) на свечу. В одном случае получим бОльшее количество свечей, приходящееся на выбранный промежуток времени, на графике равновысоких свечей:


Во втором случае бОльшее количество свечей будет на стороне эквиобъемного графика:


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

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



Сообщение: 145
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 28.11.14 12:29. Заголовок: Добрый день, Игорь! ..


Добрый день, Игорь!

Scriptong пишет:

 цитата:
Возьми TicksCollector. Он даст реальный тиковый объем для равновысоких баров, а не 1.



Брал для равновысоких.
Я с ним справится не могу, я об этом писал раннее - с момента публикации и позднее – первая картинка –
Отправлено: 17.10.14 13:20. Заголовок: http://f6.s.qip.ru/2..
Предположил, что у меня проблема памяти, а память, из-за оптимизации в советнике, на пределе.
Сейчас повторно, но уже с равнообъёмными, поставил – посмотрю.

Scriptong пишет:

 цитата:
Я именно так себе и представлял совмещение равновысоких и эквиобъемных графиков.
И уже говорил о проблеме, которая возникнет - постоянное рассогласование по количеству баров.
На графике это будет выглядеть как рассогласование по времени.
Берем график равновысоких свечей с высотой 10 пунктов (М313) и
эквиобъемный график с количеством тиков 100 (М314) на свечу.
В одном случае получим бОльшее количество свечей, приходящееся на выбранный промежуток
времени, на графике равновысоких свечей:



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

Тут конечно масса вариантов.

Четыре вопроса:
1. Модель формирования равновысокого бара.
2. В зависимости от модели равновысокого – модель формирования равнообъемного бара.
3. Проблема масштабирования.
4. Знание программирования.

Я и предлагаю «на посмотреть» приведение закрытия равнообъемного бара ко времени закрытия равновысокого бара –
на картинке обведено красным.

Исходил из того, что например, между минутками может быть сколько угодно равновысоких баров и
соответственно между равновысокими равнообьемных.

А дальше проще.




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





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


Balbesik пишет:

 цитата:
Я и предлагаю «на посмотреть» приведение закрытия равнообъемного бара ко времени закрытия равновысокого бара –
на картинке обведено красным.


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

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

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



Сообщение: 29
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 28.12.14 19:03. Заголовок: Добрый, суток. Где ..


Добрый, суток.

Где хранится звуковые файлы?
В документации указана каталог_терминала\Sounds или его подкаталоге.
А как поточнее их найти? А если их нету, то самому создать папку?!

Спасибо: 0 
Профиль
Genry
постоянный участник




Сообщение: 1100
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 28.12.14 19:29. Заголовок: Anatoliy пишет: Где..


День добрый, Анатолий!

Anatoliy пишет:

 цитата:
Где хранится звуковые файлы? В документации указана каталог_терминала\Sounds



Обычно здесь: C:\Program Files (x86)\MT4\Sounds

С уважением! Спасибо: 0 
Профиль
Anatoliy



Сообщение: 30
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 28.12.14 19:51. Заголовок: Спасибо, Genry :sm36..


Спасибо, Genry

Я нашёл!
Не так сразу можно найти!!!


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





Сообщение: 1072
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 30.12.14 17:58. Заголовок: Существует универсал..


Существует универсальный способ нахождения папки данных терминала: меню "Файл" - "Открыть каталог данных".
Откроется проводник с корневой папкой данных терминала. В ней будут и папка Sounds, и папка MQL4 и т. д.

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





Сообщение: 1
Зарегистрирован: 05.01.15
Репутация: 0
ссылка на сообщение  Отправлено: 05.01.15 02:55. Заголовок: Привет Scriptong! Мн..


Привет Scriptong! Мне надо код Number of Retry Attempts for Order Execution(Количество повторных попыток для выполнения заказа). Пожалуйста помогите меня?!

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





Сообщение: 1089
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 05.01.15 19:47. Заголовок: skilful_coder пишет:..


skilful_coder пишет:

 цитата:
Привет Scriptong! Мне надо код Number of Retry Attempts for Order Execution(Количество повторных попыток для выполнения заказа). Пожалуйста помогите меня?!


Ответил здесь.

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



Не зарегистрирован
Зарегистрирован: 23.01.15
Репутация: 0
ссылка на сообщение  Отправлено: 23.01.15 19:02. Заголовок: Интересно, после уда..


Интересно, после удаления меня, как гр. РФ, будет текст или нет?
Есть такой Аксин на Лайте, мы много спорили с Александром, что такое дивергенция?
А есть ли она?
Еще никто мне не доказал, что это имеет место быть, в принципе!
А что это такое?
Если это сообщение "проскочит" может кто прояснит, как и откуда берется это рассогласование?

P.S.
Игорь, вопрос снят - видишь форум меня "пропустил"???.

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





Сообщение: 1135
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 23.01.15 21:46. Заголовок: Balbesiuk пишет: Ес..


Balbesiuk пишет:

 цитата:
Есть такой Аксин на Лайте, мы много спорили с Александром, что такое дивергенция?


Тут спорить не о чем. Есть понятие - "расхождение показаний индикатора и цены". В общей трактовке, если не вдаваться в точные математические формулировки, имеет достаточно однозначное определение: разнонаправленность трендовых линий, проведенных через точки локальных экстремумов.
Если же копать дальше, в правила, то у дивергенции таких общепринятых правил нет. Каждый строит дивергенции по своим правилам.

Balbesiuk пишет:

 цитата:
Игорь, вопрос снят - видишь форум меня "пропустил"???.


Да я уже привык к тому, что ты часто "паникуешь" Вспомнил пароль - ну и хорошо.

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



Сообщение: 156
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 23.01.15 22:08. Заголовок: Привет, Игорь! Нм ч..


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

Нм чего не вспоминал и не забывал!
Это "глюк" на форуме, кстати Balbesiuk - не регистрировал, сам "вошел".
Ну ладно, суть в другом - используя периодические и непериодические колебания для расчета
и в качестве фильтра взяв ОBV с изменением, удалось уменьшить дивергенцию с порядка 15-18 за период,
до 2-3 значений - это здорово для фильтра.
Все таки интересно вернуться к "обьему".
По OBV -
for(i=nLimit; i>=0; i--) // слево - из истории
{
if(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i))!=0)
DeltaOH=NormalizeDouble(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iOpen(NULL,PERIOD_CURRENT,i))
/
MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i)),5);
if(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i))!=0)
DeltaOL=NormalizeDouble(MathAbs(iLow(NULL,PERIOD_CURRENT,i)-iOpen(NULL,PERIOD_CURRENT,i))
/
MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i)),5);

if(iClose(NULL,PERIOD_CURRENT,i)==iHigh(NULL,PERIOD_CURRENT,i) && DeltaOH!=0)DeltaOH1=iVolume(NULL,PERIOD_CURRENT,i) * DeltaOH;
DeltaOL1=MathAbs(iVolume(NULL,PERIOD_CURRENT,i) - DeltaOH1);

if(iClose(NULL,PERIOD_CURRENT,i)==iLow(NULL,PERIOD_CURRENT,i) && DeltaOL!=0) DeltaOL1=iVolume(NULL,PERIOD_CURRENT,i) * DeltaOL;
DeltaOH1=MathAbs(iVolume(NULL,PERIOD_CURRENT,i) - DeltaOL1);

DeltaV1=MathAbs(DeltaOH1 - DeltaOL1);

//if(DeltaOH > DeltaOL)DeltaV1=DeltaOH1;
//if(DeltaOH < DeltaOL)DeltaV1=DeltaOL1; // -

//Print(" DeltaOH1 ",DeltaOH1);
//Print(" DeltaOL1 ",DeltaOL1);
//Print(" DeltaV1 ",DeltaV1);
//Print(" iVolume(NULL,PERIOD_CURRENT,i) ",iVolume(NULL,PERIOD_CURRENT,i));

if(i==iBars(NULL,PERIOD_CURRENT)-1)
ExtOBVBuffer=DeltaV1; // стартовый обьем DeltaV1 iVolume(NULL,PERIOD_CURRENT,i)
else
{
dCurrentPrice=GetAppliedPrice(ExtOBVAppliedPrice, i);
dPreviousPrice=GetAppliedPrice(ExtOBVAppliedPrice, i+1);
if(dCurrentPrice==dPreviousPrice || iVolume(NULL,PERIOD_CURRENT,i)==0)
ExtOBVBuffer=ExtOBVBuffer[i+1];
else
{
if(dCurrentPrice<dPreviousPrice) // dCurrentPrice<dPreviousPrice
// iClose(NULL,PERIOD_CURRENT,i)==iHigh(NULL,PERIOD_CURRENT,i) DeltaOH > DeltaOL

ExtOBVBuffer=ExtOBVBuffer[i+1] - DeltaV1; // -
//ExtOBVBuffer=dPreviousPrice+DeltaV1;
else
ExtOBVBuffer=ExtOBVBuffer[i+1] + DeltaV1;
//ExtOBVBuffer=dPreviousPrice+DeltaV1;
}
и т.д.

Было бы интересно вернуться к теме.

P.S. Рендж бары - равновысокие.

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





Сообщение: 1139
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 25.01.15 12:51. Заголовок: Balbesik пишет: исп..


Balbesik пишет:

 цитата:
используя периодические и непериодические колебания для расчета
и в качестве фильтра взяв ОBV с изменением, удалось уменьшить дивергенцию с порядка 15-18 за период,
до 2-3 значений - это здорово для фильтра.


О чем здесь идет речь?
Что за периодические и непериодические колебания?
Каковы изменения в стандартном OBV? Приведенный код неполон, т. к. не отображает сути изменений.
Что понимается под периодом: интервал истории или количество баров, используемых для расчета значений индикатора?
Что такое порядок дивергенций: количество дивергенции в течение какого-то времени или их величина?

Таким образом, в твоих рассуждениях нет конкретики. Мне не за что зацепиться, чтобы поддержать разговор.

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



Сообщение: 157
Зарегистрирован: 13.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 25.01.15 21:49. Заголовок: Под периодическими я..


Под периодическими я принимаю «идеальную» синусоиду (ЗигЗаг) – одна амплитуда и один период.
Под непериодическими я принимаю – пропорционально растет (уменьшается) амплитуда и
аналогично пропорционально растет (уменьшается) период.

Это все условно (давным-давно тебе я рисунки скидывал).

Основная задача при построении ЗигЗага определить, по некоторому алгоритму, будет ли
продолжение движения (заданной или расчетной величины) или нет.

Сравнил, при прочих равных (по своему алгоритму оценку ЗигЗага), получилось,
что при наличии дивергенции по OBV прогноз продолжения движения ЗигЗага хуже.

Для качественного сравнения и не более, чуть изменил штатный OBV (выбор связан с отсутствием периода у OBV).
Изменение минимально - в зависимости от цены Открытия просто количество тиков (на равновысоком баре) вверх это «+», вниз это «-»
и на их разности построение графика OBV.

На одном временном интервале, при одной величине равновысокого бара и одного и того же (Н) ЗигЗага количество рассогласований (дивергенция) уменьшилось в единицах количества случаев.

Вот в последние дни (вплоть до сегодня) у меня не работает почтовый ящик на Ремблере.
Что только не делал, бесполезно, пока не догадался залезть в интернет –
«К сожалению, сервис Рамблер-Почта до сих пор остается недоступен из-за DDoS-атаки.
Более того, это сильнейшая DDoS-атака в истории Рамблера…»

Это я к чему.

Я не уверен, что смогу сам сделать равнообъёмный индикатор и буду искать решение проблемы там, где ее нет по аналогии с Рамблер-Почта.

Только видимо получается не равнообъёмный, а что-то типа равно кратный по обьему.

Т.е. бар привязан (соответствует) к бару по цене, задана величина кол-во тиков , различие будет по цене закрытия бара.
Например бар по цене 100 пунктов и в нем 40 или 60 или 120 тиков по «обьему».
Задаем 50 тиков по «обьему».

Если 40 на баре – цена открытия равна цене закрытия и эти 40 тиков «перенеслись» на следующий бар на котором как только добавится 10 тиков появиться «первая условная цена закрытия».
Если 60 на баре – цена закрытия равно цене, когда набралось 50 тиков и 10 тиков переносится на следующий бар
Если 120 на баре – цена закрытия равно цене, когда набралось 100 тиков («первая условная цена закрытия» - пропускается) т.е. цена закрытия на 2-х заданных 50 тиков.

Задержка на один бар мне не принципиальна, но и не уверен, что это даст некий «плюс».
Пока получается, что в частном моем случае, дивергенция это мне плохо.
Плохо и что объяснить не умею.

P.S. С графикой, как раньше получалось и мучиться не надо.



Спасибо: 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 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет