Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 ValueWhen Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
pitero



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

СообщениеДобавлено: Ср Ноя 19, 2008 1:18 pm Ответить с цитатой Вернуться к началу

Напрягает меня функция 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
Откуда: от "Верблюда"

СообщениеДобавлено: Ср Ноя 19, 2008 3:02 pm Ответить с цитатой Вернуться к началу

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
Откуда: Екатеринбург

СообщениеДобавлено: Ср Ноя 19, 2008 3:48 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Чт Ноя 20, 2008 1:09 am Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Чт Ноя 20, 2008 1:17 am Ответить с цитатой Вернуться к началу

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
Откуда: Екатеринбург

СообщениеДобавлено: Чт Ноя 20, 2008 9:12 am Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Чт Ноя 20, 2008 9:48 am Ответить с цитатой Вернуться к началу

Цитата:

понятно, спасибо. Но тут есть нюанс, которого я не понимаю.
если вставить код
Title = "gapRes :"+Ref(gapRes,-1)+"\n";
то на первом баре в 10-30 значение гэпа будет - значение прошлого дня. Линию оно нарисует, но хорошо виден переход, соединяющий 2 точки - последний бар дня и ВТОРОЙ бар дня. а Первый бар дня??? А он имеет gapRes прошлого дня.... Это и сбивает всю картину! И ValueWhen тут не помогает

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 20, 2008 9:49 am Ответить с цитатой Вернуться к началу

И непонятно зачем Ref в ?
Title = "gapRes :"+Ref(gapRes,-1)+"\n";

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
pitero



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

СообщениеДобавлено: Пт Ноя 21, 2008 7:44 am Ответить с цитатой Вернуться к началу

000 писал(а):
И непонятно зачем Ref в ?
Title = "gapRes :"+Ref(gapRes,-1)+"\n";


ой... туплю.
Глаз замылился. Спасибо, правда получается все.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen