Автор |
Сообщение |
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
Напрягает меня функция ValueWhen.
Работает как хочет, а не как написано. Почти в каждом индюке то выдает значения то нет, мож я чего не понимаю? Скажем вот, код, который отслеживает величину утрешнего гэпа, т.е. на каждом баре в течении дня хочу иметь величину утрешнего гэпа.
NumdayChange=DateNum()!=Ref(DateNum(),-1);
GapDelta=IIf(NumDayChange,O-Ref(C,-1),0);
GapRes=IIf(NumdayChange,GapDelta,ValueWhen(NumdayChange,GapDelta)) ;
все видно, но только не на первом баре каждый день (таймфрэйм меньше дня), на первом баре GapRes имеет значение GapRes прошлого дня, хотя GapDelta текущего бара уже посчитана и заполнена.
Что не так? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
pitero писал(а): |
Напрягает меня функция ValueWhen.
Работает как хочет, а не как написано. Почти в каждом индюке то выдает значения то нет, мож я чего не понимаю? Скажем вот, код, который отслеживает величину утрешнего гэпа, т.е. на каждом баре в течении дня хочу иметь величину утрешнего гэпа.
NumdayChange=DateNum()!=Ref(DateNum(),-1);
GapDelta=IIf(NumDayChange,O-Ref(C,-1),0);
GapRes=IIf(NumdayChange,GapDelta,ValueWhen(NumdayChange,GapDelta)) ;
все видно, но только не на первом баре каждый день (таймфрэйм меньше дня), на первом баре GapRes имеет значение GapRes прошлого дня, хотя GapDelta текущего бара уже посчитана и заполнена.
Что не так? |
Голова не очень работает, но если мы понимаем Гэп одинаково, то все просто переход на дневки z=o-Ref(c,-1); разжимаем на нужный тайм, величину гепа будет отображать прямая линия, либо величина будет отображаться на графике в виде тира показывая значение для текущего бара. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
commenced писал(а): |
Голова не очень работает, но если мы понимаем Гэп одинаково, то все просто переход на дневки z=o-Ref(c,-1); разжимаем на нужный тайм, величину гепа будет отображать прямая линия, либо величина будет отображаться на графике в виде тира показывая значение для текущего бара. |
про гэп
TimeFrameSet(inDaily);
wc=Ref(C,-1);
TimeFrameRestore(in15Minute);
этот код не пишет в wc прошлую цену закрытия дня. на каждом баре в 15-минутке это значение меняется. Есть еще компрессия/разкомпрессия
wc=ref(TimeFrameCompress(C,inDaily),-1);
вроде тоже должен дать цену закрытия прошлого дня - ан нет.
wc скачет как обезьяна.... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
pitero писал(а): |
Напрягает меня функция ValueWhen.
Работает как хочет, а не как написано. Почти в каждом индюке то выдает значения то нет, мож я чего не понимаю? Скажем вот, код, который отслеживает величину утрешнего гэпа, т.е. на каждом баре в течении дня хочу иметь величину утрешнего гэпа.
NumdayChange=DateNum()!=Ref(DateNum(),-1);
GapDelta=IIf(NumDayChange,O-Ref(C,-1),0);
GapRes=IIf(NumdayChange,GapDelta,ValueWhen(NumdayChange,GapDelta)) ;
все видно, но только не на первом баре каждый день (таймфрэйм меньше дня), на первом баре GapRes имеет значение GapRes прошлого дня, хотя GapDelta текущего бара уже посчитана и заполнена.
Что не так? |
Проще вот так
Код: |
NewDay = DateNum()!= Ref(DateNum(),-1);
GapRes = ValueWhen(NewDay, O-Ref(C,-1));
Plot(C, "", colorBlack, styleCandle);
Plot(GapRes, "GapRes", colorRed, styleOwnScale);
|
Проверил, все работает хорошо. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
pitero писал(а): |
commenced писал(а): |
Голова не очень работает, но если мы понимаем Гэп одинаково, то все просто переход на дневки z=o-Ref(c,-1); разжимаем на нужный тайм, величину гепа будет отображать прямая линия, либо величина будет отображаться на графике в виде тира показывая значение для текущего бара. |
про гэп
TimeFrameSet(inDaily);
wc=Ref(C,-1);
TimeFrameRestore(in15Minute);
этот код не пишет в wc прошлую цену закрытия дня. на каждом баре в 15-минутке это значение меняется. Есть еще компрессия/разкомпрессия
wc=ref(TimeFrameCompress(C,inDaily),-1);
вроде тоже должен дать цену закрытия прошлого дня - ан нет.
wc скачет как обезьяна.... |
Если с переключением на дневки, то так
Код: |
SetBarsRequired(100000, 0);
TimeFrameSet(inDaily); // переключаемся на дневки
GapRes = O - Ref(C,-1);
TimeFrameRestore(); // возвращаемся на базовый фрейм
GapRes = TimeFrameExpand(GapRes, inDaily, expandFirst); // расжимаем массив GapRes на базовый фрейм
Plot(C, "", colorBlack, styleCandle);
Plot(GapRes, "GapRes", colorRed, styleOwnScale);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
000 писал(а): |
Код: |
SetBarsRequired(100000, 0);
TimeFrameSet(inDaily); // переключаемся на дневки
GapRes = O - Ref(C,-1);
TimeFrameRestore(); // возвращаемся на базовый фрейм
GapRes = TimeFrameExpand(GapRes, inDaily, expandFirst); // расжимаем массив GapRes на базовый фрейм
Plot(C, "", colorBlack, styleCandle);
Plot(GapRes, "GapRes", colorRed, styleOwnScale);
|
|
понятно, спасибо. Но тут есть нюанс, которого я не понимаю.
если вставить код
Title = "gapRes :"+Ref(gapRes,-1)+"\n";
то на первом баре в 10-30 значение гэпа будет - значение прошлого дня. Линию оно нарисует, но хорошо виден переход, соединяющий 2 точки - последний бар дня и ВТОРОЙ бар дня. а Первый бар дня??? А он имеет gapRes прошлого дня.... Это и сбивает всю картину! И ValueWhen тут не помогает
pitero писал(а): |
все видно, но только не на первом баре каждый день (таймфрэйм меньше дня), на первом баре GapRes имеет значение GapRes прошлого дня, хотя GapDelta текущего бара уже посчитана и заполнена.
|
поясню что выделил - значение Gapres посчитано строкой выше оператора ValueWhen, значит оно должно попадать в выборку. Если по дефолту выборка идет без учета текущего бара - можно ведь попросить ее заглянуть в будущее, я пытался - результата 0. Если значение я расчитал на текущем баре - я не могу его получить этой функцией никаким образом. (да и другими функциями, если чесно)
Может я как-то не так настраиваю Ами? Ну там время бара по началу/окончанию бара или еще чего? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
понятно, спасибо. Но тут есть нюанс, которого я не понимаю.
если вставить код
Title = "gapRes :"+Ref(gapRes,-1)+"\n";
то на первом баре в 10-30 значение гэпа будет - значение прошлого дня. Линию оно нарисует, но хорошо виден переход, соединяющий 2 точки - последний бар дня и ВТОРОЙ бар дня. а Первый бар дня??? А он имеет gapRes прошлого дня.... Это и сбивает всю картину! И ValueWhen тут не помогает
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
И непонятно зачем Ref в ?
Title = "gapRes :"+Ref(gapRes,-1)+"\n"; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
000 писал(а): |
И непонятно зачем Ref в ?
Title = "gapRes :"+Ref(gapRes,-1)+"\n"; |
ой... туплю.
Глаз замылился. Спасибо, правда получается все. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|