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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 9:57 am Ответить с цитатой Вернуться к началу

Олег, имеется база 5 мин, но работаю я с ней часовыми значениями индюков и возникла проблема. Как на 5 мин барах ввести нумерацию с начала часового бара для работы с BarsSince( ARRAY ) может ARRAY можно присвоить условие начала 1 пятиминутки любого часа? Это первое, второе при возникновении условия ну к примеру пересечение средней с 3 пятиминуткой часа, мы можем это условие привезать к конкретному старшему фрейму, т.е. пересечение идет на 5 мин, но систему мы оповещаем что, условие соблюдено на конкретном часе и в течении только этого часа возможно исполнить второе условие? Очень надо. Crying or Very sad

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

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

Цитата:

Олег, имеется база 5 мин, но работаю я с ней часовыми значениями индюков и возникла проблема. Как на 5 мин барах ввести нумерацию с начала часового бара для работы с BarsSince( ARRAY ) может ARRAY можно присвоить условие начала 1 пятиминутки любого часа?

Не совсем понял. Нужно "посчитать" 5 мин в часе? Т.е. первая пятиминутка в часе обозначена 1, вторая 2 и т.д.?
Код:

Num = BarsSince(Hour() != Ref(Hour(), -1));

Цитата:

при возникновении условия ну к примеру пересечение средней с 3 пятиминуткой часа, мы можем это условие привезать к конкретному старшему фрейму, т.е. пересечение идет на 5 мин, но систему мы оповещаем что, условие соблюдено на конкретном часе и в течении только этого часа возможно исполнить второе условие? Очень надо.

Пожалуй я бы сделал через Flip(). Т.е. при возникновении условия включаем триггер и выключаем его в момент окончания часа.
Код:

up = Cross(C, MA(C, 20));
Cond1 = Flip(Up, Hour() != Ref(Hour(), 1));

Затем Если Сond1 == 1, то значит первое условие сработало и час еще не кончился.

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 10:21 am Ответить с цитатой Вернуться к началу

По второму вопросу есть идея приисполнеии 1 условия расчитывать для него дату и час, после чего проверку условия производить при совпадении даты и часа, но при условии count1<count2; count1 = BarsSince(Cond1); count2 = BarsSince(Cond2); Но для этого нужно определить 1 бар пятиминутки в часе.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 10:37 am Ответить с цитатой Вернуться к началу

А чем мой способ не устраивает?
По моему все логично. Сработало инициирующее условие, включили включатель и ждем сработки второго. Если час кончился, то выключаем включатель и больше не ждем...

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 10:57 am Ответить с цитатой Вернуться к началу

000 писал(а):
А чем мой способ не устраивает?
По моему все логично. Сработало инициирующее условие, включили включатель и ждем сработки второго. Если час кончился, то выключаем включатель и больше не ждем...


Я предыдущий пост написал одновременно с тобой, не удалил т.к. некогда, идею реализовываю. Smile

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 11:23 am Ответить с цитатой Вернуться к началу

000 писал(а):

Не совсем понял. Нужно "посчитать" 5 мин в часе? Т.е. первая пятиминутка в часе обозначена 1, вторая 2 и т.д.?
Код:

Num = BarsSince(Hour() != Ref(Hour(), -1));

Пожалуй я бы сделал через Flip(). Т.е. при возникновении условия включаем триггер и выключаем его в момент окончания часа.
Код:

up = Cross(C, MA(C, 20));
Cond1 = Flip(Up, Hour() != Ref(Hour(), 1));

Затем Если Сond1 == 1, то значит первое условие сработало и час еще не кончился.


Олег мне нужен номер бара на котором произошла сработка, засунуть в барсинг cond1 не получиться т.к. условие усполняется с 4 по 10 бар, ну если условие исполненио именно на 4 баре. т.к. во втором условии summ(gsdfgs,n); где n кол-во баров от начала часа, до следующего бара после исполнения условия.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 12:27 pm Ответить с цитатой Вернуться к началу

Блин. Ты как-то непонятно пишешь. Постарайся понятнее мысль излагать, а то непонимаю что надо... Sad
Если надо номер бара (на котором выполнилось словие 1) от начала часа, то можно так
Код:

Num = BarsSince(Hour() != Ref(Hour(), -1));
Cond1 = Cross(C, MA(C, 20));
Cond_Num = ValueWhen(Cond1, Num);

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


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

СообщениеДобавлено: Пн Янв 12, 2009 12:31 pm Ответить с цитатой Вернуться к началу

Там еще надо будет прибавить 1 чтобы правильный номер бара получить...

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 1:56 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Там еще надо будет прибавить 1 чтобы правильный номер бара получить...


Т.е. 1 бар часа будет нулевым?

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 1:59 pm Ответить с цитатой Вернуться к началу

commenced писал(а):
000 писал(а):
Там еще надо будет прибавить 1 чтобы правильный номер бара получить...


Т.е. 1 бар часа будет нулевым?

Да.

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 2:19 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Блин. Ты как-то непонятно пишешь. Постарайся понятнее мысль излагать, а то непонимаю что надо... Sad
Если надо номер бара (на котором выполнилось словие 1) от начала часа, то можно так
Код:

Num = BarsSince(Hour() != Ref(Hour(), -1));
Cond1 = Cross(C, MA(C, 20));
Cond_Num = ValueWhen(Cond1, Num);


Чета потерялась привязка к текущему часовому бару, а она очень важна т.к. второе условие исполняется только на массиве 5 мин часового бара где выполнено 1 условие, плюс важен номер бара где условие 1 выполнено, чтоб второе начанало работу со следующего 5 мин бара, но только до конца часа :
Код:
Num = BarsSince(Hour() != Ref(Hour(), -1))+1;
Cond1 = Flip(Cross(C, MA(C, 20)), Hour() != Ref(Hour(), 1));
Buy = cond1;
Cond_Num = ValueWhen(Cond1, Num);
Cond2 =условия выхода;
Num1 = BarsSince(Cond2); ???????
Sell = cond1 and Cond2 AND Cond_Num<Num1;


Там нигде нет сбоя в расчете номера бара? Обрати внимание на расчет Num я тупо прибавил 1.
Embarassed

_________________
Юра

Последний раз редактировалось: commenced (Пн Янв 12, 2009 3:20 pm), всего редактировалось 2 раз(а)
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 2:27 pm Ответить с цитатой Вернуться к началу

Цитата:

Чета потерялась привязка к текущему часовому бару

Угу. Потерялась. Привязка к часовому бару есть в первом варианте, где Flip()
Можно скрестить эти варианты.

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 2:56 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

Чета потерялась привязка к текущему часовому бару

Угу. Потерялась. Привязка к часовому бару есть в первом варианте, где Flip()
Можно скрестить эти варианты.


Так я в посте скрестил, пойдет так или нет

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 5:02 pm Ответить с цитатой Вернуться к началу

commenced писал(а):
000 писал(а):
Цитата:

Чета потерялась привязка к текущему часовому бару

Угу. Потерялась. Привязка к часовому бару есть в первом варианте, где Flip()
Можно скрестить эти варианты.


Так я в посте скрестил, пойдет так или нет

Пойти то пойдет. Только не пойму зачем этот огород.
Сам по себе первый вариант и так дает аналогичный результат (второе условие должно произойти после первого, но на том же часе).
Код:

up = Cross(C, MA(C, 20));
Cond1 = Flip(Up, Hour() != Ref(Hour(), 1));
Cond2 = ...; // второе условие
Buy = Cond2 AND Cond1;

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Янв 12, 2009 5:26 pm Ответить с цитатой Вернуться к началу

Код:
Cond1 = Flip(условие, Hour() != Ref(Hour(), 1));
Cond2 = Flip(условие, Hour() != Ref(Hour(), 1));
Cond1 = ExRem(Cond1,Cond2);
Cond2 = ExRem(Cond2,Cond1);
Num1 = ValueWhen(Cond1, Num);
Num2 = ValueWhen(Cond2, Num);
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
PlotShapes(IIf(Cond1,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Cond2,shapeDownArrow,0),4,0,Graph0,-15);


Олег функция ExRem должна оставлять 1 сигнал при наступлении 2 сигнала в точке должен появиться следующий сигнал и т.д. а у меня отрисовавает все бары ну к примеру штук 10 за cond1 потом 300 Cond2. Почему?

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen