Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Олег, имеется база 5 мин, но работаю я с ней часовыми значениями индюков и возникла проблема. Как на 5 мин барах ввести нумерацию с начала часового бара для работы с BarsSince( ARRAY ) может ARRAY можно присвоить условие начала 1 пятиминутки любого часа? Это первое, второе при возникновении условия ну к примеру пересечение средней с 3 пятиминуткой часа, мы можем это условие привезать к конкретному старшему фрейму, т.е. пересечение идет на 5 мин, но систему мы оповещаем что, условие соблюдено на конкретном часе и в течении только этого часа возможно исполнить второе условие? Очень надо. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Олег, имеется база 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
Откуда: от "Верблюда"
|
По второму вопросу есть идея приисполнеии 1 условия расчитывать для него дату и час, после чего проверку условия производить при совпадении даты и часа, но при условии count1<count2; count1 = BarsSince(Cond1); count2 = BarsSince(Cond2); Но для этого нужно определить 1 бар пятиминутки в часе. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А чем мой способ не устраивает?
По моему все логично. Сработало инициирующее условие, включили включатель и ждем сработки второго. Если час кончился, то выключаем включатель и больше не ждем... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
А чем мой способ не устраивает?
По моему все логично. Сработало инициирующее условие, включили включатель и ждем сработки второго. Если час кончился, то выключаем включатель и больше не ждем... |
Я предыдущий пост написал одновременно с тобой, не удалил т.к. некогда, идею реализовываю. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
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
|
Блин. Ты как-то непонятно пишешь. Постарайся понятнее мысль излагать, а то непонимаю что надо...
Если надо номер бара (на котором выполнилось словие 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
|
Там еще надо будет прибавить 1 чтобы правильный номер бара получить... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Там еще надо будет прибавить 1 чтобы правильный номер бара получить... |
Т.е. 1 бар часа будет нулевым? |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
commenced писал(а): |
000 писал(а): |
Там еще надо будет прибавить 1 чтобы правильный номер бара получить... |
Т.е. 1 бар часа будет нулевым? |
Да. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Блин. Ты как-то непонятно пишешь. Постарайся понятнее мысль излагать, а то непонимаю что надо...
Если надо номер бара (на котором выполнилось словие 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.
|
_________________ Юра
Последний раз редактировалось: commenced (Пн Янв 12, 2009 3:20 pm), всего редактировалось 2 раз(а) |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Чета потерялась привязка к текущему часовому бару
|
Угу. Потерялась. Привязка к часовому бару есть в первом варианте, где Flip()
Можно скрестить эти варианты. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Цитата: |
Чета потерялась привязка к текущему часовому бару
|
Угу. Потерялась. Привязка к часовому бару есть в первом варианте, где Flip()
Можно скрестить эти варианты. |
Так я в посте скрестил, пойдет так или нет |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
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
Откуда: от "Верблюда"
|
Код: |
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 |
|
|