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



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

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

Всем привет!
Научите писать условие Very Happy
Код:
m1=IIf(x1>x2,y1,y2) ;
m2=IIf(x1>x2,z1,z2) ;
Buy=Cover=x1;
Short=Sell=x2;

Вот только что бы расчеты велись лишь на последних "n" барах...
Т.е. мне нужно: x1 и x2 - ограничить в количестве оперируемых баров.

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
AlexLan73



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

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

Добрый.
"Вот только что бы расчеты велись лишь на последних "n" барах... "
-в каких последних в конце дня, часа, ...?

если у тебя 5 мин то можно выделить так
nBar=(TimeNum()>=233500 AND TimeNum()<=235000); - выделяешь бары
m1=IIf(nBar and x1>x2,y1,y2) ;
m2=IIf(nBar and x1>x2,z1,z2) ;

Если "n" бара всей последовательности

for( i = BarCount - nBar; i < BarCount; i++ )
{
if(x1[i]>x2[i])
{
m1[i]=y1[i];
m2[i]=z1[i];
}
else
{
m1[i]=y2[i];
m2[i]=y2[i];
}
}
Посмотреть профиль Отправить личное сообщение
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

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

AlexLan73 писал(а):

-в каких последних в конце дня, часа, ...?
если у тебя 5 мин то можно выделить так
nBar=(TimeNum()>=233500 AND TimeNum()<=235000); - выделяешь бары
m1=IIf(nBar and x1>x2,y1,y2) ;
m2=IIf(nBar and x1>x2,z1,z2) ;

Да, вычисления ведутся на 5 минутках. Я работал с массивом TimeNum, но до этого не додумался. Сейчас посмотрю. Это у нас значит расчеты будут начинаться с начала утренней сессии и до 23:50... Правильно я понимаю?

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
AlexLan73



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

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

Да, условие с 23:35:00 до 23:50:00 будет истинным
Посмотреть профиль Отправить личное сообщение
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

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

AlexLan73 писал(а):
Да, условие с 23:35:00 до 23:50:00 будет истинным

Хороший вариант, но что то со временем не могу разобраться. Пока что поработаю с массивом, затем проработаю вариант циклами.
Спасибо Большое!!!
Всем желаю Высокой и Стабильной Доходности!

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
AlexLan73



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

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

"но что то со временем не могу разобраться" - а в чем проблема?
Посмотреть профиль Отправить личное сообщение
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

СообщениеДобавлено: Вт Фев 14, 2017 2:15 am Ответить с цитатой Вернуться к началу

AlexLan73 писал(а):
а в чем проблема?
Операция с массивом "TimeNum" работает верно, но моя проблема в том, что я не правильно описал условие. Я пытаюсь сделать, таким образом: есть индикатор "OBV" обозначенный как X1. Вся задача состоит в том, что этот индикатор к каждым баром увеличивает или уменьшает значение, а я хочу добиться того, что бы он оперировал только с последними "n" барами, а те значения которые есть на графике до последних "n" баров - мне не нужны. Или по другому можно так сказать, что есть на графике фиксированное количество баров "n" и с каждым появлением нового бара, удаляется самый старый бар. Тем самым работа ведется со значениями только последних "n" баров. (Но удалять ранее появившиеся чем "n" бары нельзя).

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
000
Site Admin


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

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

Напиши как у тебя рассчитываются x1 и x2

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



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

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

000 писал(а):
Напиши как у тебя рассчитываются x1 и x2
Код:
a1=Cross(m1,m2);
a2=Cross(m2,m1);
Buy=Cover=a1;
Short=Sell=a2;
X1=Equity(1,0)-5000 ;
b1=Cross(m2,m1);
b2=Cross(m1,m2);
Buy=Cover=b1;
Short=Sell=b2;
X2=Equity(1,0)-5000 ;
E1=IIf(x1>x2,a1,a2) ;
E2=IIf(x1>x2,b1,b2) ;
Buy=Cover=E1;
Short=Sell=E2;

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
000
Site Admin


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

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

ну вот и ответ на вопрос.
Цитата:
equity( Flags = 0, RangeType = -1, From = 0, To = 0 )

RangeType - defines quotations range being used:
1 : n last quotes (n defined by 'From' parameter)

Т.е. пиши типа

Код:
X2=Equity(0, 1, 1000)-5000 ;

И будет обсчитывать только последние 1000 баров.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen