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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Пт Фев 02, 2018 10:54 am Ответить с цитатой Вернуться к началу

Не знаю, подымался ли тут данный вопрос...

В общем, имеем структуру, когда мы задаем начальный бар через указание даты и времени в меню.

Примерно так:

Код:

d = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

BarsStart = 1 + BarsSince(DateNum() == dd AND tt == TimeNum());
StartBar = ValueWhen(DateNum() == dd AND tt == TimeNum(), BarIndex());


Таким образом, к примеру, у меня начинают считаться нужные мне индикаторы.

Собственно, я хочу получить данные свечи, с которой по вышеуказанной структуре начинается расчет. К примеру, получить значение Хай этой свечи. И чтобы дальше это значение не менялось. Допустим я дальше определенные значения каждой последующей свечи хочу прибавлять за значению Х0, т.е. хаю самой первой свечи.

Делаю так:

Цитата:

h0 = ValueWhen (StartBar, H, 1);


Вывожу на график значение h0, а оно рисуем мне просто линию по хаям, ну, правда, начинается линия от того времени, которое я задал. А по моей задаче h0 - это прямая линия на уровне хая первой свечи.

Подскажите правильное решение.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Фев 02, 2018 8:51 pm Ответить с цитатой Вернуться к началу

Код:

dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

StartBar = DateNum() == dd AND tt == TimeNum();

h0 = ValueWhen (StartBar, H, 1);
Plot(h0, "", colorRed);
Plot(C, "", colorBlack, styleCandle);

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Фев 17, 2018 4:04 pm Ответить с цитатой Вернуться к началу

Ага, понял.

Да, действительно, линия теперь отрисовывается верно.

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

И начало расчета я делаю через следующую конструкцию:

Код:
wilkrplot2 = IIf (BarIndex() >= StartBar, wilkr, Null);


Напомню, сейчас у нас StartBar прописан как
Код:
StartBar = DateNum() == dd AND tt == TimeNum();


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

А если мы вернемся к старому способу определения СтартБара, а именно:

Код:
StartBar = ValueWhen(DateNum() == dd AND tt == TimeNum(), BarIndex());


То красная у нас выводится абсолютно верно. Но не запоминается значение на начальном баре (синяя линия).

Как быть?
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Фев 17, 2018 6:03 pm Ответить с цитатой Вернуться к началу

И сразу задам, наверное, еще вопрос.
Даже не вопрос, а просьба помочь написать код.

Допустим, мы указываем точку начала расчета определенной кривой. Через StartBar или BarsStart - не знаю - надеюсь, подскажете, как лучше. Ну как в предыдущем примере.

Таким образом имеем первый бар, на котором начинается расчет кривой. Пусть он будет бар Х. А кривая должная считаться следующим образом:

1. На баре Х кривая принимает значение: Опен или Хай или Лой или Клоуз бара Х либо заданное вручную значение (все это через контекстное меню параметров)
2. На баре Х+1 кривая рассчитывается: Лой бара Х+1 минус Разница (Значение кривой на баре Х и Лой бара Х+1). Это для случая, если мы откладываем кривую от верхнего экстремума (это мы тоже пропишем через выбор в меню). И соответственно если работаем от нижнего экстремума, то Хай бара Х+1 плюс Разница (Хай бара Х+1 и значение кривой на баре Х)
3. На баре Х+2 и далее значение кривой рассчитывает по формуле: (опять же для ситуации с верхним экстремумом) Л текущего бара ПЛЮС Суммирование разниц текущего лоя и лоя предыдущего бара начиная от первого бара)

Как-то так. Заранее благодарю.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Фев 17, 2018 10:08 pm Ответить с цитатой Вернуться к началу

Цитата:
Ага, понял.

Да, действительно, линия теперь отрисовывается верно.

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

Трудно на абстрактных примерах.
В моем примере красная линия начинает рисоваться только со стартового бара. Я не могу понять почему у тебя она рисуется и до...
Может...
Код:
dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

StartBar = DateNum() == dd AND tt == TimeNum();

MyLine = .....;

h0 = ValueWhen (StartBar, MyLine, 1);
Plot(h0, "", colorRed);
Plot(C, "", colorBlack, styleCandle);

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


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

СообщениеДобавлено: Сб Фев 17, 2018 10:21 pm Ответить с цитатой Вернуться к началу

AntColonel писал(а):
И сразу задам, наверное, еще вопрос.
Даже не вопрос, а просьба помочь написать код.

Допустим, мы указываем точку начала расчета определенной кривой. Через StartBar или BarsStart - не знаю - надеюсь, подскажете, как лучше. Ну как в предыдущем примере.

Таким образом имеем первый бар, на котором начинается расчет кривой. Пусть он будет бар Х. А кривая должная считаться следующим образом:

1. На баре Х кривая принимает значение: Опен или Хай или Лой или Клоуз бара Х либо заданное вручную значение (все это через контекстное меню параметров)
2. На баре Х+1 кривая рассчитывается: Лой бара Х+1 минус Разница (Значение кривой на баре Х и Лой бара Х+1). Это для случая, если мы откладываем кривую от верхнего экстремума (это мы тоже пропишем через выбор в меню). И соответственно если работаем от нижнего экстремума, то Хай бара Х+1 плюс Разница (Хай бара Х+1 и значение кривой на баре Х)
3. На баре Х+2 и далее значение кривой рассчитывает по формуле: (опять же для ситуации с верхним экстремумом) Л текущего бара ПЛЮС Суммирование разниц текущего лоя и лоя предыдущего бара начиная от первого бара)

Как-то так. Заранее благодарю.

Ерунда какая то
Цитата:

dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

L = IIf(DateNum() < dd OR (DateNum() < dd AND tt < TimeNum()), 0, L);
h0 = L + Cum(L - Ref(L, -1));

RestorePriceArrays();

Plot(h0, "", colorRed);
Plot(C, "", colorBlack, styleCandle);

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Фев 18, 2018 6:33 am Ответить с цитатой Вернуться к началу

Да, совсем не то, что хотелось бы...

Может я где-то что-то не совсем понятно написал? Результат должен выглядеть как красная линия предыдущей картинке. Ну практически.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Фев 18, 2018 6:36 am Ответить с цитатой Вернуться к началу

000 писал(а):

Может...
Код:
dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

StartBar = DateNum() == dd AND tt == TimeNum();

MyLine = .....;

h0 = ValueWhen (StartBar, MyLine, 1);
Plot(h0, "", colorRed);
Plot(C, "", colorBlack, styleCandle);


Да, я так тоже делал. Тогда MyLine рисуется просто прямой линией от начала расчета на уровне StartBar'а
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Фев 18, 2018 7:09 am Ответить с цитатой Вернуться к началу

AntColonel писал(а):


Да, я так тоже делал. Тогда MyLine рисуется просто прямой линией от начала расчета на уровне StartBar'а

Ну, а как надо?
Тема началась
Цитата:
Собственно, я хочу получить данные свечи, с которой по вышеуказанной структуре начинается расчет. К примеру, получить значение Хай этой свечи. И чтобы дальше это значение не менялось.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Фев 18, 2018 6:37 pm Ответить с цитатой Вернуться к началу

000 писал(а):
AntColonel писал(а):


Да, я так тоже делал. Тогда MyLine рисуется просто прямой линией от начала расчета на уровне StartBar'а

Ну, а как надо?
Тема началась
Цитата:
Собственно, я хочу получить данные свечи, с которой по вышеуказанной структуре начинается расчет. К примеру, получить значение Хай этой свечи. И чтобы дальше это значение не менялось.


По первому вопросу вопросов нет. Да, линия прямая отрисовалась при смене кода относительно StartBar.
Я уже по следующему моменту писал - что красная кривая отчего-то в данном случае рисуется и до StartBar'а.
Я код в личку отправил, чтобы было понятно о чем речь.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen