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



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

СообщениеДобавлено: Пт Мар 01, 2013 11:15 am Ответить с цитатой Вернуться к началу

У меня каждые 200 тиков рисуется свеча. Как определить сколько свечей появилось например за 3 минуты и как быстро появлялись свечи
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Мар 01, 2013 2:46 pm Ответить с цитатой Вернуться к началу

На вскидку.
Берем TimeNum() бара. Отнимаем 3 минуты и ищем бар у которого TimeNum() меньше. Берем индекс этого бара и сравниваем с индексом исследуемого. Разница индексов и есть число баров нарисованное за 3 минуты.

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



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

СообщениеДобавлено: Чт Янв 02, 2014 11:42 am Ответить с цитатой Вернуться к началу

000 писал(а):
На вскидку.
Берем TimeNum() бара. Отнимаем 3 минуты и ищем бар у которого TimeNum() меньше. Берем индекс этого бара и сравниваем с индексом исследуемого. Разница индексов и есть число баров нарисованное за 3 минуты.


Добрый день!
Олег, если не затруднит,распиши пожалуйста формулами.Не могу сообразить.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Не совсем так как писал, но принцип тот же
Код:

CurMinute = Minute(); // минуты бара
Time = IIf((CurMinute - 3) < 0, CurMinute - 3 + 60, CurMinute - 3); // время 3 минуты назад
j = 0;
for(i = 30; i < BarCount; i++)
{
  k = i;
  do
  {
    k--;
    j[i]++;
  } while(CurMinute[k] > Time[i]);
}

Plot(j, "qqq", colorRed);

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


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

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

Вот так правильнее
Код:

CurTime = Minute()*100 + Second(); // минуты и секунды бара
Time = IIf((CurTime - 300) < 0, CurTime - 300 + 6000, CurTime - 300); // время 3 минуты назад

j = 0;
for(i = 30; i < BarCount; i++)
{
  k = i;
  do
  {
    k--;
    j[i]++;
  } while(CurTime[k] >= Time[i]);
}

Plot(j, "qqq", colorRed);

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



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

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

В таких циклах совсем не соображаю.
Ругается:Error 10. Subscript out of range. You must not access array elements outside 0..(BarCount-1) range.
Для чего
Код:
 Minute()
умножать на 100.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вот тут
Код:
for(i = 30; i < BarCount; i++)

вместо 30 поставь 50 или еще больше.

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


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

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

denis_ писал(а):

Для чего
Код:
 Minute()
умножать на 100.

Делается такое число типа 1244 = 12 минут 44 секунды.

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



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

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

Правильно ли я понимаю.
Исходя из графика, двойка означает, что за три минуты появились две двухсот тиковые свечи.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Да

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



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

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

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

Тогда немного странно.Исходя из показателя данной формулы (см.скрин) за 3 минуты появилось 71 штука двухсот тиковых свечей. Но на графике невооруженным глазом видно, что их было несколько штук.
Если упростить , то необходим индикатор который бы показывал количество свечей в единицу времени. По сути получаем индикатор скорости.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Янв 09, 2014 10:03 pm Ответить с цитатой Вернуться к началу

Это глюк какой то в индикаторе. В остальное время он показывает правильно. Я проверял и во время проверки к сожалению на такой глюк не нарвался.

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


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

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

Вроде отловил
Код:

CurTime = Minute()*100 + Second(); // минуты и секунды бара
Time = IIf((CurTime - 300) < 0, CurTime + 5700, CurTime - 300); // время 3 минуты назад

j = 0;
for(i = 3; i < BarCount; i++)
{
  k = i;
  do
  {
    k--;
    j[i]++;
    if(k < 2)
      break;
    if(Time[i] < 60 AND CurTime[k] > 100)
      break;
  } while(CurTime[k] >= Time[i]);
}

Plot(j, "qqq", colorRed);

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen