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



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

СообщениеДобавлено: Чт Апр 02, 2015 12:44 pm Ответить с цитатой Вернуться к началу

Добрый день.
1. убери из цикла строки

fb1 = TimeFrameGetPrice("O", inDaily, -2); // открытие позавчера
lb1 = TimeFrameGetPrice("C", inDaily, -2); // закрытие позавчера
fb2 = TimeFrameGetPrice("O", inDaily, -1); // открытие вчера
lb2 = TimeFrameGetPrice("C", inDaily, -1); // закрытие вчера
fb = TimeFrameGetPrice("O", inDaily, 0); // открытие сегодня

priceDayMax = TimeFrameGetPrice("H", inDaily, -1); // вчерашний макс
priceDayMin = TimeFrameGetPrice("L", inDaily, -1); // вчерашний мин

or(i=1;i<BarCount;i++)
{
perRost1[i] = PerIzm(fb1[i], lb1[i]); // функция
perRost2[i] = PerIzm(fb2[i], lb2[i]); // функция

}

2. "открытие вчерашнего последнего бара на минутке" - нужно торговать на минутках
Посмотреть профиль Отправить личное сообщение
AlexLan73



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

СообщениеДобавлено: Чт Апр 02, 2015 12:51 pm Ответить с цитатой Вернуться к началу

"открытие вчерашнего последнего бара на минутке"
можно так - торгуем на минутках

t=TimeNum()>=234900;
_O=ValueWhen(t, O, 1);


Последний раз редактировалось: AlexLan73 (Чт Апр 02, 2015 6:06 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 02, 2015 1:10 pm Ответить с цитатой Вернуться к началу

А вдруг не Фортс? Вот так.
Код:
LastMinOpen = ValueWhen(Day() != Ref(Day(), 1), Open);

Не проверял.

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



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

СообщениеДобавлено: Чт Апр 02, 2015 2:38 pm Ответить с цитатой Вернуться к началу

AlexLan73 писал(а):
"открытие вчерашнего последнего бара на минутке"
можно так - торгуем на минутках

t=TimeNum()>=234900;
_O=ValueWhen(ExRem(t), O, 1);


Сделал цикл как у вас, так лучше оказалось.

Открытие вчерашнего последнего бара не считает - missing arguments в ExRem. Там по идее два аргумента должно быть.
Посмотреть профиль Отправить личное сообщение
crn



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

СообщениеДобавлено: Чт Апр 02, 2015 2:45 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А вдруг не Фортс? Вот так.
Код:
LastMinOpen = ValueWhen(Day() != Ref(Day(), 1), Open);

Не проверял.


не работает. Возвращает сегодняшнее открытие. Причем менял последний аргумент в ValueWhen на разные числа -1,+2 - все равно одно и тоже возвращает.
Если указать 0 - ничего не возвращает.
Посмотреть профиль Отправить личное сообщение
AlexLan73



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

СообщениеДобавлено: Чт Апр 02, 2015 3:32 pm Ответить с цитатой Вернуться к началу

Олег, наверно поторопился
LastMinOpen = ValueWhen(Day() != Ref(Day(), -1), Open);
1. на начало дня
2. Ref(Day(), -1), - сдвиг на 1 день (-2 на два дня) если +1 это подглядывание в будущее.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 02, 2015 5:31 pm Ответить с цитатой Вернуться к началу

Не может оно не работать.
Day() != Ref(Day(), 1) это последняя свечка дня. Да, такой код подглядывает вперед, но он это делает только для определения последней свечи а в жизни мы и так знаем, что свеча последняя. Просто это универсальный способ который определит последнюю свечку не зависимо от времени окончания торгов.
Т.е. последнюю свечку дня нашли. Теперь берем ее открытие
ValueWhen(...., Open); Это будет именно открытие последней свечки дня.

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



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

СообщениеДобавлено: Чт Апр 02, 2015 5:36 pm Ответить с цитатой Вернуться к началу

Круто)))) спасибо за науку Very Happy
Красивое решение нужно запомнить
Посмотреть профиль Отправить личное сообщение
crn



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

СообщениеДобавлено: Чт Апр 02, 2015 5:52 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Не может оно не работать.
Day() != Ref(Day(), 1) это последняя свечка дня. Да, такой код подглядывает вперед, но он это делает только для определения последней свечи а в жизни мы и так знаем, что свеча последняя. Просто это универсальный способ который определит последнюю свечку не зависимо от времени окончания торгов.
Т.е. последнюю свечку дня нашли. Теперь берем ее открытие
ValueWhen(...., Open); Это будет именно открытие последней свечки дня.

да не надо никуда вперед заглядывать))
мне нужно Open последней свечи Вчерашнего дня, не сегодняшнего.
Открылись торги на акциях например, в 10:00 сегодня, и на состояние 10:01 сегодня на минутных барах мне нужно получить вчерашнюю последнюю свечку - ее Open и Close, причем без послемаркета. т.е. на 18:40.
Это все мне нужно для расчета утреннего гэпа.
Посмотреть профиль Отправить личное сообщение
AlexLan73



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

СообщениеДобавлено: Чт Апр 02, 2015 5:58 pm Ответить с цитатой Вернуться к началу

А чем тебе не нравится этот вариант
t=TimeNum()>=234900;
_O=ValueWhen(t, O, 1);

была ошибка ExRem(t) Embarassed
Посмотреть профиль Отправить личное сообщение
crn



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

СообщениеДобавлено: Чт Апр 02, 2015 6:16 pm Ответить с цитатой Вернуться к началу

AlexLan73 писал(а):
А чем тебе не нравится этот вариант
t=TimeNum()>=234900;
_O=ValueWhen(t, O, 1);

была ошибка ExRem(t) Embarassed


чуть подправил ваш вариант.
если делать >=, то ами и послемаркет берет.

t=TimeNum()==183959;
Посмотреть профиль Отправить личное сообщение
AlexLan73



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

СообщениеДобавлено: Чт Апр 02, 2015 6:41 pm Ответить с цитатой Вернуться к началу

Можно много придумать вариантов
Мой был для фьючей
В программе у меня, начало дня считается от 19:00
вот так
tnewDay=TimeNum()>=184500;
newDay=ValueWhen(ExRem(tnewDay, NOT tnewDay), Ref(C,-1), 1);
давно писал но работает как часы

в Вашем варианте t=TimeNum()==183959;
а если прога не попала в эту сек. то работать не будет...
Посмотреть профиль Отправить личное сообщение
crn



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

СообщениеДобавлено: Чт Апр 02, 2015 6:46 pm Ответить с цитатой Вернуться к началу

AlexLan73 писал(а):
Можно много придумать вариантов
Мой был для фьючей
В программе у меня, начало дня считается от 19:00
вот так
tnewDay=TimeNum()>=184500;
newDay=ValueWhen(ExRem(tnewDay, NOT tnewDay), Ref(C,-1), 1);
давно писал но работает как часы

в Вашем варианте t=TimeNum()==183959;
а если прога не попала в эту сек. то работать не будет...


ну по идее это же исторические данные из текстового файла. я вот щас в квике в реалтайме смотрю, последний бар обозначен 18:39. Это для квика видимо переделать надо будет уже потом. А так вроде все свечки в расчет попадают.
Посмотреть профиль Отправить личное сообщение
AlexLan73



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

СообщениеДобавлено: Чт Апр 02, 2015 6:50 pm Ответить с цитатой Вернуться к началу

Стараюсь сформировать фронт и от него работать.
Наверно осталось от цифровых микросхем Smile
Посмотреть профиль Отправить личное сообщение
crn



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

СообщениеДобавлено: Чт Апр 02, 2015 6:51 pm Ответить с цитатой Вернуться к началу

единственно, что смущает, в массив попадают абсолютно все минутные свечки инструмента. видимо я что-то с таймфреймами намудрил.
Если я ставлю в Analysis > Settings период Daily, то данные рассчитываются уже раз в день, нет дубликации, но вот последняя свечка вчерашнего дня (код который ты написал) уже не попадает.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen