Ответить
09.01.2014, 06:32
Аватар для ansol
ansol ansol вне форума
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,021
Поблагодарили 856 раз(а) / Репутация: 842
неточный вопрос,выше или ниже на 10 пунктов???
если допускается вниз 10 пунктов и вверх 10 пунктов,то я бы написал так:

PHP код:
if((High[1]<=High[2]+10*Point)||(High[1]>=High[2]-10*Point))
{
ваше действие;

А почему вы решили, что нужны Хай первого и второго бара?
1. Нужно зафикисровать 1 хай
2. Сравнивать текущий, нулевой хай, с зафиксенным ранее
3. Зафиксировать новый хай, сравнить и далее по обстоятельствам.

Т.е. задачка чуть сложнее, чем простой if
09.01.2014, 09:18
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
А почему вы решили, что нужны Хай первого и второго бара?
Partizan64 так описал. В прямоуголник на картинке включил по 2 бара с близкими хаями. Я то же сначала так подумал. Потом понял что вряд ли он спрашивает про соседние бары, это ведь слишком просто.
1. Нужно зафикисровать 1 хай
2. Сравнивать текущий, нулевой хай, с зафиксенным ранее
3. Зафиксировать новый хай, сравнить и далее по обстоятельствам.

Т.е. задачка чуть сложнее, чем простой if
Судя по картинке, хай может быть и не на текщем баре, они оба могут быть в истории на неопределённом расстоянии от текущего бара.
Если так то задачка ещё чуть сложнее чем Вы описали. Конечно, любая задачка решаема, при том несколькими способами. Но прежде чем что то решать, нужно что бы Partizan64 сам понял что хочет и описал подробнее.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
09.01.2014, 09:20
Аватар для ansol
ansol ansol вне форума
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,021
Поблагодарили 856 раз(а) / Репутация: 842
Цитата:
Судя по картинке, хай может быть и не на текщем баре, они оба могут быть в истории на неопределённом расстоянии от текущего бара.
Т.е. искать какие-то отдаленные бары, когда речь идет о дневных хаях?
Ну, может быть. Ждем уточнений
09.01.2014, 11:03
Аватар для olcik
olcik olcik вне форума Активный участник
Регистрация: 27.03.2011 / Адрес: Ternopil / Сообщений: 120
Поблагодарили 67 раз(а) / Репутация: 67
Друзья подскажите ,как вычислить мах мin индикатора MACD за определенный промежуток времени ,например за Азиатскую сессию.Я знаю что с помощью ArrayMaximum и ArrayMinimum но дальше темный лес.
09.01.2014, 11:15
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Друзья подскажите ,как вычислить мах мin индикатора MACD за определенный промежуток времени ,например за Азиатскую сессию.Я знаю что с помощью ArrayMaximum и ArrayMinimum но дальше темный лес.
Сначала надо определить границы сессии в барах, и вычислить количество баров в сессии. Потом можно ArrayMaximum и ArrayMinimum.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
olcik 
09.01.2014, 11:33
Аватар для olcik
olcik olcik вне форума Активный участник
Регистрация: 27.03.2011 / Адрес: Ternopil / Сообщений: 120
Поблагодарили 67 раз(а) / Репутация: 67
b1-b2 это будет количество баров.А как оформить ??

Скрытый текст

//+------------------------------------------------------------------+
//| Прорисовка объектов на графике |
//| Параметры: |
//| dt - дата торгового дня |
//| no - наименование объекта |
//| tb - время начала сессии |
//| te - время окончания сессии |
//+------------------------------------------------------------------+
void DrawObjects(datetime dt, string no, string tb, string te) {
datetime t1, t2;
double p1, p2;
int b1, b2;

t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];
ObjectSet(no, OBJPROP_TIME1 , t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2 , t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
[свернуть]
09.01.2014, 13:10
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
А почему вы решили, что нужны Хай первого и второго бара?
1. Нужно зафикисровать 1 хай
2. Сравнивать текущий, нулевой хай, с зафиксенным ранее
3. Зафиксировать новый хай, сравнить и далее по обстоятельствам.

Т.е. задачка чуть сложнее, чем простой if
ждем уточнений автора вопроса, многие не умеют ясно сформулировать что хотят...
на счет текущего Хая(High) 0-го бара,как мы его можем узнать до закрытия бара???
по моему никак, это будет известно только после закрытия бара, а после закрытия он и будет как раз 1-м, как я и написал..или я не прав?))
опытные программеры, вопрос к вам - я верно понимаю про 0 и 1 бар???
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 09.01.2014 в 13:40.
09.01.2014, 13:25
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Не правильно. High[0] есть и будет есть. В какое-то время он равен и Bid, и Close[0], а когда цена откатится от максимального значения то хай будет хаем, а Bid будет всё ещё равен Close[0]
То-же самое происходит с Low[0]
09.01.2014, 14:18
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
Не правильно. High[0] есть и будет есть. В какое-то время он равен и Bid, и Close[0], а когда цена откатится от максимального значения то хай будет хаем, а Bid будет всё ещё равен Close[0]
То-же самое происходит с Low[0]
бар - время между открытием и закрытием бара, за это время цена проходит от Open,до Close,самые низкие значения за время бара(ТФ) будут иметь название Low, самые высокие называются High, так я непонял откуда известны на текущем 0-м баре значения Хая и Лоу, у нас разве есть машина времени на форексе?))
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
09.01.2014, 14:27
Аватар для ansol
ansol ansol вне форума
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,021
Поблагодарили 856 раз(а) / Репутация: 842
бар - время между открытием и закрытием бара, за это время цена проходит от Open,до Close,самые низкие значения за время бара(ТФ) будут иметь название Low, самые высокие называются High, так я непонял откуда известны на текущем 0-м баре значения Хая и Лоу, у нас разве есть машина времени на форексе?))
Напиши в скрипте Comment(High[0]) и посмотри, что он выдаст.
Можешь просто на текущую часовую свечку посмотреть, надеюсь увидишь там такую шпилечку сверху до того, как час завершится
Milord 
09.01.2014, 14:39
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
ждем уточнений автора вопроса, многие не умеют ясно сформулировать что хотят...
Придется подождать, человек 8 лет на форексе и 2 с половиной года на форуме, и только вот первый вопрос задал. Уточнения будут к лету, вероятно.

Последний раз редактировалось qqmber; 09.01.2014 в 14:43. Причина: 2.5 года партизанил
Milord 
09.01.2014, 15:54
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
бар - время между открытием и закрытием бара, за это время цена проходит от Open,до Close,самые низкие значения за время бара(ТФ) будут иметь название Low, самые высокие называются High, так я непонял откуда известны на текущем 0-м баре значения Хая и Лоу, у нас разве есть машина времени на форексе?))
Да машина времени тут не при чём. Бар - время между открытием и текущим временем до закрытия бара. На текущем баре High и Low меняются вместе с изменением цены. Можешь удивиться, но в момент открытия бара Open[0] = High[0] = Low[0] = Close[0] а потом они начинают расходиться.Пока цена растёт High[0] меняется вместе с изменением цены. Как только цена начала откатываться вниз High[0] остаётся на прежнем уровне.

ps; Поставь в сов такой код
Код:
static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar != curbar)
    {
     lastbar = curbar;
     Print("Open[0] = ", Open[0], "High[0] = ", High[0], "Low[0] = ", Low[0], "Close[0] = ", Close[0]);
    }
Сразу получишь разные цены, а на новом баре уже будут одинаковые.

Последний раз редактировалось AlexeyVik; 09.01.2014 в 16:02.
Milord 
09.01.2014, 16:33
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
Не правильно. High[0] есть и будет есть. В какое-то время он равен и Bid, и Close[0], а когда цена откатится от максимального значения то хай будет хаем, а Bid будет всё ещё равен Close[0]
То-же самое происходит с Low[0]
какие то странные Хай и Лоу))

P.S. кстати мой вариант кода оказался верным, даже после ваших уточнений, потому что по 0-му бару High меняется динамически,и фиксится только после закрытия текущего бара, поэтому и писать код лучше по 1-му бару и более старым, чтобы ничего не перерисовывалось...верно да?)
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 09.01.2014 в 16:48.
09.01.2014, 17:29
Аватар для ansol
ansol ansol вне форума
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,021
Поблагодарили 856 раз(а) / Репутация: 842
какие то странные Хай и Лоу))

P.S. кстати мой вариант кода оказался верным, даже после ваших уточнений, потому что по 0-му бару High меняется динамически,и фиксится только после закрытия текущего бара, поэтому и писать код лучше по 1-му бару и более старым, чтобы ничего не перерисовывалось...верно да?)
Тебе и пишут, что он меняется, но тем не менее он есть
Это от стратегии зависит, как учитывать текущую свечу.
По крайней мере, текущий хай может оказаться уже выше дневного(или сессионного) и логично было бы делать на него поправку. Но это зависит от трейдера и его стратегии
Milord 
11.01.2014, 13:45
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
Надо найти два последних сегодняшних непустых значения индикатора iFractals(), сравнить их и выполнить действие, если модуль разности меньше 10 п.



Поторопился, Milord, if(true) написал.
непонял, при чем тут TRUE?

P.S. уточнение для Partizan64, код пишется в 1 строку, просто на форуме есть ограничения длинны строки, автоматически делается перенос, то есть код должен выглядеть так:
if((High[1]<=High[2]+10*Point)||(High[1]>=High[2]-10*Point))
{
ваше действие;
}
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
11.01.2014, 14:19
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
непонял, при чем тут TRUE?

P.S. уточнение для Partizan64, код пишется в 1 строку, просто на форуме есть ограничения длинны строки, автоматически делается перенос, то есть код должен выглядеть так:
if((High[1]<=High[2]+10*Point)||(High[1]>=High[2]-10*Point))
{
ваше действие;
}
Выражение в скобках if() будет истиной при любых значениях High[1] и High[2].
11.01.2014, 15:07
Аватар для 1comrad
1comrad 1comrad вне форума Местный житель
Регистрация: 30.12.2013 / Сообщений: 85
Поблагодарили 158 раз(а) / Репутация: 159
Здравствуйте! Я сам не программист, но по мере надобности в код заглядываю, потому что варианты в очередь выстраиваются и не факт что они жизнеспособные. А если на каждый вариант "дёргать" мастера то это "не есть хорошо"...
А тут такой случай - при замене индикатора в советнике на нестандартный (indicator_separate_window) при помощи iCustom(Symbol() - тестер сильно тормозит из-за того что грузит 254 шт этого индикатора - каким образом возможно решить эту проблему?
11.01.2014, 16:06
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Здравствуйте! Я сам не программист, но по мере надобности в код заглядываю, потому что варианты в очередь выстраиваются и не факт что они жизнеспособные. А если на каждый вариант "дёргать" мастера то это "не есть хорошо"...
А тут такой случай - при замене индикатора в советнике на нестандартный (indicator_separate_window) при помощи iCustom(Symbol() - тестер сильно тормозит из-за того что грузит 254 шт этого индикатора - каким образом возможно решить эту проблему?
Если в советнике используются значения индикатора на 254 барах, пожалуй стоит перенести алгоритм вычисления индикатора в код советника. Для этого нужно обратиться к специалисту.

Кстати indicator_separate_window означает что он в отдельном окне, а не то что он нестандартный.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
11.01.2014, 17:04
Аватар для 1comrad
1comrad 1comrad вне форума Местный житель
Регистрация: 30.12.2013 / Сообщений: 85
Поблагодарили 158 раз(а) / Репутация: 159
Если в советнике используются значения индикатора на 254 барах, пожалуй стоит перенести алгоритм вычисления индикатора в код советника. Для этого нужно обратиться к специалисту.

Кстати indicator_separate_window означает что он в отдельном окне, а не то что он нестандартный.
Дело в том, что на демо и реале(центовик) он в таком изменённом виде работает без проблем, пока исполняет команды чётко - как швейцарские часики.
Просто хотелось бы его по истории побыстрее прогонять с различными настройками, на всех возможных парах.... хоть по ТС и так видно "что куда, откуда, как", а это так для подстраховки - вдруг чего вылезет

.... а для "Кстати...." так и читаем: ...нестандартный (в отдельном окне)... - это что б лишнего не писать
11.01.2014, 17:32
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
Выражение в скобках if() будет истиной при любых значениях High[1] и High[2].
поясните почему при любых? там же написаны условия
PHP код:

<= >= 
подкорректируйте плиз, мой вариант кода, чтобы он выполнял логику как надо...
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 05:31. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO