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



Сообщение: 2
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 14.07.14 18:23. Заголовок: Индикатор стохастик Ди Наполи


Здравствуйте, Scriptong. Помогите пожалуйста сделать стохастик Ди Наполи мультитаймфреймным, я всю голову поломал уже не могу ни как сделать
код индюка прилагаю: Стохастик Ди Наполи
Заранее благодарен!!!!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 38 , стр: 1 2 3 All [только новые]







Сообщение: 614
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 14.07.14 20:49. Заголовок: tench72 пишет: код ..


tench72 пишет:

 цитата:
код индюка прилагаю: Стохастик Ди Наполи


Странно. Несколько раз пробовал скачать, а результат один и тот же - файл нулевого размера. Попробуйте закачать файл еще раз.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 15.07.14 00:21. Заголовок: Закачал на Яндекс ди..


Закачал на Яндекс диск вот ссылочка: _https://yadi.sk/d/wXbLBMehWcMLD

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 617
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 15.07.14 13:31. Заголовок: tench72 пишет: Зака..


tench72 пишет:

 цитата:
Закачал на Яндекс диск вот ссылочка: _https://yadi.sk/d/wXbLBMehWcMLD


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

И еще - имеется грубая ошибка:

 цитата:
double Fast=(Close-low)/(high-low)*100; //расчёт первичной быстрой линии %К
StoBuffer=StoBuffer[i+1]+(Fast-StoBuffer[i+1])/SlowK; //расчёт стохастической линии
SigBuffer=SigBuffer[i+1]+(StoBuffer-SigBuffer[i+1])/SlowD; //расчёт сигнальной линии


Во всех приведенных строках используется операция деления. Причем ни в одном из случаев корректность знаменателя перед делением не проверяется. Это приводит к частым появлениям фатальной ошибки - деления на 0. По крайней мере, у меня при первом запуске именно так и произошло.

Эту ошибку легко исправить:

 цитата:
if (diff != 0 && SlowK != 0 && SlowD != 0)
{
double Fast = (Close - low) / diff; //расчёт первичной быстрой линии %К
StoBuffer = StoBuffer[i + 1] + (Fast - StoBuffer[i + 1]) / SlowK; //расчёт стохастической линии
SigBuffer = SigBuffer[i + 1] + (StoBuffer - SigBuffer[i + 1]) / SlowD; //расчёт сигнальной линии
}



Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 15.07.14 14:14. Заголовок: Здравствуйте Scripto..


Здравствуйте Scriptong. Я не представил свои наработки, так как они все равно не работают, и приложил код индикатора как он есть в интернете то есть оригинал. Ошибку учту, спасибо! Да Вы правы индикатор должен отображать данные только того таймфрейма, который указан пользователем, например если значение 0, то отображаются данные того таймфрейма на котором установлен индикатор а если значение 15 например, а сам индикатор стоит на 5-ти минутном графике, то индикатор показывает значения 15-ти минутного графика, в подвале окна 5-ти минутного.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 618
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 15.07.14 17:28. Заголовок: tench72 пишет: Я не..


tench72 пишет:

 цитата:
Я не представил свои наработки, так как они все равно не работают, и приложил код индикатора как он есть в интернете то есть оригинал.


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

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 15.07.14 22:33. Заголовок: В программе индикато..


В программе индикатора я ввел дополнительную внешнюю переменную, которая отвечает за выбор таймфрейма, далее я в программе вычисления
максимума и минимума значения цены за определенное количество баров, ввел эту переменную в функцию индекса наибольшего найденного значения.
Так вот если TimeFrame=0 то есть по умолчанию текущий таймфрейм, то индикатор показывается как обычно в отдельном окне, но стоит выставить
например на пятиминутном графике значение TimeFrame=15, чтобы индикатор отображал данные с 15-ти минутного графика, как он сразу же исчезает! Окно есть, но оно пустое без индикатора вот в чем проблема я не знаю!

extern int TimeFrame=0; //по умолчанию текущий таймфрейм
.........................................................................................
low=Low[Lowest(NULL,TimeFrame,MODE_LOW,FastK,i)]; //минимум
high=High[Highest(NULL,TimeFrame,MODE_HIGH,FastK,i)]; //максимум

Вот все на что я был способен

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 619
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 16.07.14 12:32. Заголовок: tench72 пишет: low=..


tench72 пишет:

 цитата:
low=Low[Lowest(NULL,TimeFrame,MODE_LOW,FastK,i)]; //минимум
high=High[Highest(NULL,TimeFrame,MODE_HIGH,FastK,i)]; //максимум

Вот все на что я был способен


Ну вот, теперь хотя бы понятно, с чего нужно начинать пояснения.

Итак, при разработке мультитаймфреймного индикатора необходимо учитывать тот факт, что нумерация баров на различных таймфреймах разная. Так, один бар М15 состоит из трех баров М5. Это значит, что на графике М5 мы имеем бары с индексами 0, 1 и 2, а для графика М15 это, вполне возможно, только бар с индексом 0. Поэтому первое, что нужно делать в мультитаймфреймном индикаторе, это находить соответствия между индексами баров.

В указанном участке кода переменная цикла i указывает индексы баров текущего таймфрейма. Для того чтобы получить данные с ТФ М15, нужно сначала найти бар, которому соответствует бар №i на ТФ М15. Делается это при помощи функции iBarShift. Ей передается время открытия бара, для которого необходимо найти соответствующий бар указанного таймфрейма:

 цитата:
int indexM15 = iBarShift(NULL, PERIOD_M15, Time);


Код отображается немного неправильно. После слова "Time" следует открывающая квадратная скобка, затем символ "i", а после - закрывающая квадратная скобка. Движок форума воспринимает такую комбинацию за BB-код, указывающий на шрифт в виде курсива.

И вот этот найденный индекс уже можно использовать при нахождении минимума/максимума цены.

Это только начало. Дальше попробуйте сами. Скорее всего, еще столкнетесь с трудностями, их и опишите. Будем разбираться дальше.


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 16.07.14 22:31. Заголовок: Прошу прощения, но я..


Прошу прощения, но я ни чего не понял в какую часть кода вставлять этот индекс
из меня программист как из черепахи спринтер!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 624
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 17.07.14 13:54. Заголовок: tench72 пишет: Прош..


tench72 пишет:

 цитата:
Прошу прощения, но я ни чего не понял в какую часть кода вставлять этот индекс
из меня программист как из черепахи спринтер!


К сожалению, на этом ресурсе я не выполняю заказы на создание или модификацию программ. Помочь, подсказать, направить, указать на ошибку - могу.
Если есть желание, давайте начнем с азов. Я с этим тоже могу помочь. Но писать все будете Вы лично с полным пониманием того, что Вы делаете.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 7
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.07.14 19:17. Заголовок: Желание есть. Но как..


Желание есть. Но как и с чего начнем?

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 634
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 21.07.14 19:29. Заголовок: tench72 пишет: Жела..


tench72 пишет:

 цитата:
Желание есть. Но как и с чего начнем?


Давайте начнем.
Начнем с того, что попробуйте осмыслить хотя бы что-то из того, что я описал в посте 16.07.14. Как только запнетесь, задавайте вопрос применительно к тому предложению, которое Вы не поняли.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 8
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 23.07.14 17:04. Заголовок: Все равно мне не пон..


Все равно мне не понятно что возвращает функция iBarShift(NULL, PERIOD_M15, Time) ?

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 643
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.07.14 18:04. Заголовок: tench72 пишет: Все ..


tench72 пишет:

 цитата:
Все равно мне не понятно что возвращает функция iBarShift(NULL, PERIOD_M15, Time) ?


Индекс i в цикле указывает на индекс обрабатываемого бара текущего таймфрейма. На другом таймфрейме этому бару соответствует бар с другим индексом. Как нам определить соответствие между этими барами? Ответ: по времени открытия баров - один бар по времени будет вложен в другой.
К примеру, бар М5 со временем открытия 18:25 вложен в бар М15 со временем открытия 18:15. Оперируя этими данными, можно найти индекс бара на указанном таймфрейме, в который вложен бар с указанным временем открытия.
Это и делает функция iBarShift - возвращает индекс бара, которому принадлежит время time на таймфрейме tf. Мы ей передаем время открытия текущего обрабатываемого бара (Time[ i ]) и указываем, на каком таймфрейме нужно найти индекс бара (PERIOD_M15).

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 23.07.14 18:35. Заголовок: получается что если ..


получается что если мы на пятиминутном таймфрейме, то функция iBarShift с параметрами iBarShift(NULL, 15, Time) будет возвращать индекс равный нулю пока на пятиминутке не отрисуется три бара?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 10
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 23.07.14 19:17. Заголовок: Я подставил индекс ..


Я подставил индекс в код стохастика:
int in= iBarShift(NULL, tf, Time);
low=Low[iLowest(NULL,tf,MODE_LOW,FastK,in)]; //минимум
high=High[iHighest(NULL,tf,MODE_HIGH,FastK,in)]; //максимум
double Fast=(Close[in]-low)/(high-low)*100; //расчёт первичной быстрой линии %К
StoBuffer=StoBuffer[i+1]+(Fast-StoBuffer[i+1])/SlowK; //расчёт стохастической линии
и опять та же картина если параметр таймфрейма tf=0 индикатор рисуется в окне, а если изменить например на tf=15 а индикатор на 5-ти минутном графике, то он исчезает т.е не рисуется???!!!


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 644
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.07.14 22:01. Заголовок: tench72 пишет: Я по..


tench72 пишет:

 цитата:
Я подставил индекс в код стохастика:


В этом коде Вы получили только два правильных значения: low и high. Все остальные - неправильные. Так, при расчете значения переменной Fast Вы использовали таймсерию, обращающуюся к текущему таймфрейму: Close. При работе с другим таймфреймом/графиком необходимо использовать функцию iClose.
Ну и со значением буфера StoBuffer Вы вновь допускаете ошибку - оперируете индексом текущего таймфрейма при расчете значения. Хотя сохранять значение, конечно же, нужно по индексу текущего таймфрейма. Разберитесь с тем, в каких местах нужно использовать индекс текущего таймфрейма, а в каких - другого. Так, при расчетах всегда нужно использовать индекс бара другого ТФ, а при визуализации значения (сохранении результата в буфер индикатора) используется индекс бара текущего ТФ.

Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 11
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 28.07.14 16:38. Заголовок: Scriptong пишет: Ну..


Scriptong пишет:

 цитата:
Ну и со значением буфера StoBuffer Вы вновь допускаете ошибку - оперируете индексом текущего таймфрейма при расчете значения. Хотя сохранять значение, конечно же, нужно по индексу текущего таймфрейма. Разберитесь с тем, в каких местах нужно использовать индекс текущего таймфрейма, а в каких - другого.


я изменил код:
while(i>=0)
{
int in= iBarShift(NULL, tf, Time);
low=Low[iLowest(NULL,tf,MODE_LOW,FastK,in)]; //минимум

high=High[iHighest(NULL,tf,MODE_HIGH,FastK,in)]; //максимум

double Fast=(iClose(NULL,tf,in)-low)/(high-low)*100; //расчёт первичной быстрой линии %К

StoBuffer[in]=StoBuffer[in+1]+(Fast-StoBuffer[in+1])/SlowK;

все равно ни чего не изменилось на другом таймфрейме индикатор и исчезает

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 659
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 28.07.14 20:03. Заголовок: tench72 пишет: все ..


tench72 пишет:

 цитата:
все равно ни чего не изменилось на другом таймфрейме индикатор и исчезает


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

Итак, Вы уже сделали определенные успехи - использовали функцию iClose, т. к. необходимо было получить цену закрытия бара другого таймфрейма. Но при этом почему-то забыли, что при расчете минимума и максимума тоже нужно оперировать данными другого таймфрейма. Low и High - это массивы таймсерии, при помощи которых можно получить минимум и максимум указанного бара, но на текущем таймфрейме. Если же необходимо получить максимум и минимум бара другого таймфрейма, то следует использовать функции iLow и iHigh.

Когда исправите эту ошибку, получите следующий вид индикатора на М5 при использовании данных М15:


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


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 12
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 28.07.14 20:38. Заголовок: а как же функции iLo..


а как же функции iLowest(NULL,tf,MODE_LOW,FastK,in) и iHighest(NULL,tf,MODE_HIGH,FastK,in) они вообще не нужны????
Ни чего не пойму... как использовать функции iLow и iHigh, совместно с ними???!!!!


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 660
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 28.07.14 21:17. Заголовок: tench72 пишет: а ка..


tench72 пишет:

 цитата:
а как же функции iLowest(NULL,tf,MODE_LOW,FastK,in) и iHighest(NULL,tf,MODE_HIGH,FastK,in) они вообще не нужны????


Нужны.
Функция iLowest определяет индекс минимального бара на заданном интервале. Нам же требуется получить значение минимума бара. Для текущего таймфрейма это делается при помощи обращения к массиву-таймсерии Low, а для таймфрейма, отличного от текущего, при помощи функции iLow. Аналогично с iHighest, High и iHigh.

Для лучшего понимания прочтите документацию по этим функциям. По таймсериям документация здесь.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 13
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 31.07.14 15:49. Заголовок: Добрый вечер Scripto..


Добрый вечер Scriptong. Спасибо за консультации, но честное слово, я не иогу понять что делать... В принципе я получил три стохастика Ди Наполи по разным тайм фреймам, я воспользовался функцией iCustom() ввел функции iLowest и iHighest, их значения ввел в функцию iCustom() с соответствующим таймфреймом. Вроде как получилось, правда ступенчатые они какие то но деваться не куда, что получилось то получилось. Еще раз спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 668
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 31.07.14 19:16. Заголовок: tench72 пишет: Спас..


tench72 пишет:

 цитата:
Спасибо за консультации, но честное слово, я не иогу понять что делать...


Ну как что - разбираться, если хочется создавать программы лично
Здесь можете задавать любые глупые вопросы по теме MQL4/MQL5. Никто их тут тролить не будет.

tench72 пишет:

 цитата:
В принципе я получил три стохастика Ди Наполи по разным тайм фреймам, я воспользовался функцией iCustom() ввел функции iLowest и iHighest


При чем тут функция iCustom?

tench72 пишет:

 цитата:
Вроде как получилось, правда ступенчатые они какие то


На графике М5 показания с М15 обязательно будут ступеньками, т. к. каждый бар М15 - это 3 бара М5. То есть три подряд бара М5 будут отображать одинаковые показания.

Покажите тот код, который у Вас получился. Скорее всего, там еще есть несколько неучтенных моментов. Я то уже сделал для проверки "правильный вариант", в котором все подводные камни обнаружены.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 14
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 04.08.14 15:16. Заголовок: Код получился таким:..


Код получился таким:
int start()
{
int i,limit,y=0;

limit= ColBar-1;

for(i=0,y=0;i<limit;i++)
{

y=iBarShift(NULL, TimeFrame, Time);

ExtMapBuffer=iCustom(NULL,TimeFrame,"StochasticDN",FastK,0,y) ;
{

я позаимствовал его у индикатора MTF RSI
в параметрах самого стохастика я убрал сигнальную линию и уровни чтобы не усложнять функцию iCustom().

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 674
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 04.08.14 16:53. Заголовок: tench72 пишет: Код ..


tench72 пишет:

 цитата:
Код получился таким:


Вас занесло не в ту степь Использование функции iCustom в данном случае не нужно.
Это какой-то другой индикатор, который мы с Вами не обсуждали.
Предлагаю вернуться к прошлому обсуждению. Итак, у Вас должно было получиться что-то типа такого:

 цитата:
while (index >= 0)
{
int in = iBarShift(NULL, tf, Time[index]);

low = iLow(NULL, tf, iLowest(NULL, tf, MODE_LOW, FastK, in)); //минимум
high = iHigh(NULL, tf, iHighest(NULL, tf, MODE_HIGH, FastK, in)); //максимум
double diff = (high - low) * 100;
if (diff != 0 && SlowK != 0 && SlowD != 0)
{
double Fast = (iClose(NULL, tf, in) - low) / (high - low) * 100; //расчёт первичной быстрой линии %К
StoBuffer[index] = StoBuffer[index + 1] + (Fast - StoBuffer[index + 1]) / SlowK; //расчёт стохастической линии
SigBuffer[index] = SigBuffer[index + 1] + (StoBuffer[index] - SigBuffer[index + 1]) / SlowD; //расчёт сигнальной линии
}
index--;
}



Но это еще не совсем правильный код, хотя и рабочий.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 15
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 06.08.14 17:10. Заголовок: Здравствуйте Сэнсэй!..


Здравствуйте Сэнсэй!
А почему не совсем правильный вроде как гладкий и похож на тот который установлен на своем таймфрейме!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 676
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 06.08.14 19:27. Заголовок: tench72 пишет: А по..


tench72 пишет:

 цитата:
А почему не совсем правильный вроде как гладкий и похож на тот который установлен на своем таймфрейме!


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

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 16
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 06.08.14 19:56. Заголовок: :sm33: Ну вот те на..


Ну вот те на.... А я так обрадовался
Ноя сравнивал значения перегибов стохастиков мультитаймфрейного наМ15 установленного на М5,
и обыкновенного на М15, они вроде как совпадают

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 677
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 07.08.14 10:21. Заголовок: tench72 пишет: Ноя ..


tench72 пишет:

 цитата:
Ноя сравнивал значения перегибов стохастиков мультитаймфрейного наМ15 установленного на М5,
и обыкновенного на М15, они вроде как совпадают


Если брать первую свечу М5, то, конечно, совпадают. Если брать следующие две - не совпадут. Также в динамике будет идти накопление ошибки расчетов тем большее, чем дольше работает индикатор без перезапуска.

Но решение есть. Попробуйте подумать именно в этом направлении.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 17
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 10.08.14 20:45. Заголовок: Здравствуйте Script..


Здравствуйте Scriptong, я бы с удовольствием подумал в направлении в котором Вы указали...
Но увы я не программист, и даже не подозреваю в каком направлении думать, мой опыт программирования ограничен начальными курсоми Бейсика и Си в даааалеком 1995 году, когда я заканчивал универ. В учебнике MQL4 очень скудно описано про функции, да и мОзги уже не те что раньше

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 687
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 11.08.14 14:46. Заголовок: tench72 пишет: Но у..


tench72 пишет:

 цитата:
Но увы я не программист, и даже не подозреваю в каком направлении думать, мой опыт программирования ограничен начальными курсоми Бейсика и Си в даааалеком 1995 году, когда я заканчивал универ. В учебнике MQL4 очень скудно описано про функции, да и мОзги уже не те что раньше


Вы же вроде изъявили желание учить MQL4. Из этих соображений я и даю вводные. Если же намерений учить язык нет, то, конечно, все эти наши разговоры не имеют никакой перспективы.
Итак, продолжаю, исходя из предположения, что учиться Вы, все-таки, намерены.

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

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


Так и в рассматриваемом индикаторе. Мы берем данные с таймфрейма М15. Это "текущий масштаб линии". Отображаем мы эти данные на таймфрейме М5 - это "увеличенный масштаб".
Вопрос: что мы должны увидеть на графике М5?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 18
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 11.08.14 18:21. Заголовок: Это понятно что ступ..


Это понятно что ступеньки, полка ступеньки будет 3 свечи на пятиминутном графике. И как их получить?


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 690
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 12.08.14 14:35. Заголовок: tench72 пишет: И к..


tench72 пишет:

 цитата:
И как их получить?


По-моему, ответ очевиден: для всех свечей М5, которые относятся к одной и той же свече М15, повторять одно и то же вычисленное значение.
То есть для каждой свечи М5 нужно проверить, было ли уже вычислено значение стохастика для свечи М15, которой соответствует текущая свеча М5. Если значение уже вычислено, то нужно лишь отобразить его, и перейти к следующей свече М5.
В текущем же коде получается так, что на всех трех свечах М5 значения стохастика разные. Причем каждые две последние свечи отображают неправильные значения, т. к. они заново рассчитываются.

Алгоритм получается такой:
1. Определили индекс свечи М15, которому соответствует текущая свеча М5. Это, кстати, уже есть в коде. Определите где.
2. После этого сравниваем индекс полученной свечи с индексом свечи, полученным на предыдущей итерации цикла. Для этого нужно завести еще одну переменную, которая хранит индекс последней свечи М15, которой соответствует рассчитанное значение стохастика.
3. Если индексы равны, то отображаем данные с предыдущей свечи и уходим на следующую итерацию.
4. Если индексы не равны, то производим вычисления. Это тоже уже есть.
5. Запоминаем индекс свечи М15, для которой только что были рассчитаны значения.

Попробуйте воплотить в код. Это действительно просто: один оператор if и несколько операторов присваивания. Для перехода к следующей итерации цикла используйте оператор continue. Перед ним не забудьте уменьшить счетчик итераций цикла на 1 (index--).

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 19
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 12.08.14 15:25. Заголовок: Добрый день Scripto..


Добрый день Scriptong, сколько пользуюсь стохастиком Ди Наполи именно тем код которого мы тут потрошим, я ни разу не замечал того что этот индикатор перерисовывается, при смене таймфрейма или просто если вызвать окно его параметров и в значении периода FastK или любого другого значения поставить ТЕ ЖЕ САМЫЕ, то при нажатии кнопки ОК стохастик видоизменяется а это не есть хорошо!!!!! Блин и вот где там собака зарыта, почему так???!!!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 695
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 12.08.14 15:44. Заголовок: Что-то я не понял мы..


Что-то я не понял мысли. Здесь Вы пишете <не перерисовывается>:

tench72 пишет:

 цитата:
сколько пользуюсь стохастиком Ди Наполи именно тем код которого мы тут потрошим, я ни разу не замечал того что этот индикатор перерисовывается



а здесь <перерисовывается>:

tench72 пишет:

 цитата:
при смене таймфрейма или просто если вызвать окно его параметров и в значении периода FastK или любого другого значения поставить ТЕ ЖЕ САМЫЕ, то при нажатии кнопки ОК стохастик видоизменяется а это не есть хорошо!!!!! Блин и вот где там собака зарыта, почему так???!!!



Что же Вы хотели сказать?


Насчет перерисовки именно этим индикатором: он не перерисовывает, это точно.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 20
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 14.08.14 16:13. Заголовок: Добрый вечер Scripto..


Добрый вечер Scriptong, я сделал скрины вот посмотрите
Скрин1
Скрин2
Скрин3
где то 6 или 7 свечей в конце индикатора линия видоизменяется!


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 705
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 15.08.14 15:50. Заголовок: tench72 пишет: Добр..


tench72 пишет:

 цитата:
Добрый вечер Scriptong, я сделал скрины вот посмотрите
Скрин1
Скрин2
Скрин3
где то 6 или 7 свечей в конце индикатора линия видоизменяется!


Добрый день.

Напоминаю, мы с Вами в данной теме пока ведем речь об индикаторе StochasticDiNapoli_edit. Этот индикатор имеет следующий список настроечных параметров:

На скринах, приведенных Вами, видно только два настроечных параметра, да и индикатор называется StochDN_MTF. То есть я говорю об одном индикаторе, а Вы - о другом.
Если Вы хотите обсудить этот, другой, индикатор, то приведите его код. Но это будет как-то странно, ведь контекст темы остается в стороне.



Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 21
Зарегистрирован: 24.03.14
Репутация: 0
ссылка на сообщение  Отправлено: 17.08.14 11:33. Заголовок: Да это тот же индика..


Да это тот же индикатор просто я его так обозвал!!! код тот же !!!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 710
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 17.08.14 16:45. Заголовок: tench72 пишет: код..


tench72 пишет:

 цитата:
код тот же !!!


Почему тогда количество настроечных параметров не совпадает?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 38 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет