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



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

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

Суть его проста:
Построить график зависимости между процентом падения (прироста цены) от открытия диапозона и вероятностью его положительного (отрицательного) закрытия (будь то день или любой другой таймфрейм).
Или по другому: какое падения от открытия дня (в процентах) выдержит бумага не закрывшись в этот день отрицательно.

Второе исследование: Зависимость роста бумаги за день от величины Open-Low.

Как такое нарисовать в Ами? И возможно ли?
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

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

kosbar писал(а):
Суть его проста:
Построить график зависимости между процентом падения (прироста цены) от открытия диапозона и вероятностью его положительного (отрицательного) закрытия (будь то день или любой другой таймфрейм).
Или по другому: какое падения от открытия дня (в процентах) выдержит бумага не закрывшись в этот день отрицательно.

Второе исследование: Зависимость роста бумаги за день от величины Open-Low.

Как такое нарисовать в Ами? И возможно ли?

Если с головой подойти, то все возможно Smile . Самое простое и первое, что в голову пришло. Пишем исследование.

1. вычисляем процент падения.
2. если процент > 0 и < 1 (например), то пихаем его в новый тикер на позицию [1] при помощи AddToComposite(). Пихаем в поле High.
3. если процент > 1 и < 2 , то пихаем его в новый тикер на позицию [2]
и т.д
получаем график возможных падений где в самом конце падение меньше 1, затем от одного до 2 и т.д.

Можно одновременно с этим делать следующее. Если процент > 0 и < 1 и закрылось в плюс, то в поле Open того же символа плюсуем 1
и.т.д.
В итоге получим тикер в high которого имеем кол-во падений на определенный процент а в open сколько интересующих нас исходов было в данном случае.

Дальше думаю понятно.

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



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

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

с AddToComposite я дела не имел, почитал хелп и пришёл к выводу, что команда выдёргивает данные и составляет из них новый символ в базе данных - я правильно понял?
Как ни крутил примеры из хелпа, так ничего визуально и не увидел...


Последний раз редактировалось: kosbar (Чт Апр 09, 2009 10:20 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

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

Совершенно в точку. Только надо еще отметить, что не просто составляет, а может прибавлять данные к уже существующему символу не затирая старые.

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



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

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

У меня не хватает знаний ))
Можно какой-нть совершенно маленький пример вплоть до визуального воплощения?
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Чт Апр 09, 2009 11:05 pm Ответить с цитатой Вернуться к началу

Да я и сам с AddToComposite() работать не люблю.
Вот накидал на скору руку часть кода без AddToComposite(). Глянь. Только график надо смотреть в самой левой части
Код:

PercDwn = (O - L)/O*100; // процент падения
Up = C > O;

CumPerc = 0; // массив где считаем проценты
CumUp = 0; // массив где считаем число выросших

for( i = 1; i < BarCount; i++ )
{
   if(PercDwn[i] < 1)
   {
      CumPerc[0]++;
      if(Up[i] == 1)
         CumUp[0]++;
   }

   if(PercDwn[i] >= 1 AND PercDwn[i] < 2)
   {
      CumPerc[1]++;
      if(Up[i] == 1)
         CumUp[1]++;
   }

   if(PercDwn[i] >= 2 AND PercDwn[i] < 3)
   {
      CumPerc[2]++;
      if(Up[i] == 1)
         CumUp[2]++;
   }
   if(PercDwn[i] >= 3 AND PercDwn[i] < 4)
   {
      CumPerc[3]++;
      if(Up[i] == 1)
         CumUp[3]++;
   }

   if(PercDwn[i] >= 4 AND PercDwn[i] < 5)
   {
      CumPerc[4]++;
      if(Up[i] == 1)
         CumUp[4]++;
   }

   if(PercDwn[i] >= 5 AND PercDwn[i] < 6)
   {
      CumPerc[5]++;
      if(Up[i] == 1)
         CumUp[5]++;
   }

   if(PercDwn[i] >= 6 AND PercDwn[i] < 7)
   {
      CumPerc[6]++;
      if(Up[i] == 1)
         CumUp[6]++;
   }

   if(PercDwn[i] >= 7 AND PercDwn[i] < 8)
   {
      CumPerc[7]++;
      if(Up[i] == 1)
         CumUp[7]++;
   }
}


Plot(CumPerc, "", colorRed);


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



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

СообщениеДобавлено: Пт Апр 10, 2009 6:09 pm Ответить с цитатой Вернуться к началу

Код понятен.
Картинка тоже.
Но хочется красивее, наверное в Ексель пойду рисовать)
Посмотреть профиль Отправить личное сообщение ICQ Number
burga



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

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

Вот от меня на эту тему. Выводит в поле Note символа примерно следующий текст:
Код:


Total: 300  White: 142 47%  Black: 158 53%
 correlation Nasdaq: {EMPTY}

 Week days: Total %White %Black
         0:     0{EMPTY}{EMPTY}
         1:  2 426   47.2   52.8
         2:  2 011   46.2   53.8
         3:  2 250   48.8   51.2
         4:  1 624   48.0   52.0
         5:  1 624   48.0   52.0
         6:   794   42.2   57.8

 SAR:     White day and O>RSI 81  57.04%
     Black day and O<RSI 83  52.53%

 MACD:     White day and MACD>0 40  28.17%
     Black day and MACD<0 109  68.99%

 Time:3    White day and O>Ref(C, -per) 2 376  47.19%
     Black day and O<Ref(C, -per) 2 604  46.21%

...

 Time:15    White day and O>Ref(C, -per) 2 452  48.70%
     Black day and O<Ref(C, -per) 2 611  46.34%

 MA:60    White day and O>MA 2 561  50.86%
     Black day and O<MA 2 518  44.69%

....

 MA:100    White day and O>MA 2 536  50.37%
     Black day and O<MA 2 581  45.80%

 Extr:10    White day and O>HHV 185  3.67%
     Black day and O<LLV 236  4.19%
....

 Extr:50    White day and O>HHV 61  1.21%
     Black day and O<LLV 100  1.77%

 Day of Month: Total %White %Black
         1:   812   46.7   53.3
...
        20:     0{EMPTY}{EMPTY}



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



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

СообщениеДобавлено: Пн Фев 07, 2011 5:13 pm Ответить с цитатой Вернуться к началу

Это совсем не по теме, но всё равно спасибо за код.
Посмотреть профиль Отправить личное сообщение ICQ Number
kosbar



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

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

По мотивам темы и кода Олега нарисовал такую вот штучку:
Код:
SetBarsRequired(sbrAll);
Level = Param("Punkti", 10, 10, 1000, 5);
PercDwn = O - L;
Up = C > O;

CumPerc = 0;    // массив где считаем свечи,
            // на которых цена(Open-Low) упала ниже Level
CumUp = 0;    // массив где считаем свечи закрывшиеся вверх.

for( i = 1; i < BarCount; i++ )
{
   if(PercDwn[i] > Level)
   {
     CumPerc[i] = CumPerc[i-1]+1;
      if(Up[i] == 1)
         {
                  CumUp[i] = CumUp[i-1]+1;
            }
      else CumUp[i] = Cumup[i-1];
   }
   else
   {
      CumPerc[i] = CumPerc[i-1];
      CumUp[i] = Cumup[i-1];
   }   

}


Plot(CumUp/CumPerc*100, "", colorRed);

С удовольствием выслушаю интересные предложения по развитию))
Кстати, не менее интересные картинки рисуются, если поменять знак (PercDwn[i] > Level) на противоположный.
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen