Автор |
Сообщение |
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Суть его проста:
Построить график зависимости между процентом падения (прироста цены) от открытия диапозона и вероятностью его положительного (отрицательного) закрытия (будь то день или любой другой таймфрейм).
Или по другому: какое падения от открытия дня (в процентах) выдержит бумага не закрывшись в этот день отрицательно.
Второе исследование: Зависимость роста бумаги за день от величины Open-Low.
Как такое нарисовать в Ами? И возможно ли? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
kosbar писал(а): |
Суть его проста:
Построить график зависимости между процентом падения (прироста цены) от открытия диапозона и вероятностью его положительного (отрицательного) закрытия (будь то день или любой другой таймфрейм).
Или по другому: какое падения от открытия дня (в процентах) выдержит бумага не закрывшись в этот день отрицательно.
Второе исследование: Зависимость роста бумаги за день от величины Open-Low.
Как такое нарисовать в Ами? И возможно ли? |
Если с головой подойти, то все возможно . Самое простое и первое, что в голову пришло. Пишем исследование.
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
|
с AddToComposite я дела не имел, почитал хелп и пришёл к выводу, что команда выдёргивает данные и составляет из них новый символ в базе данных - я правильно понял?
Как ни крутил примеры из хелпа, так ничего визуально и не увидел... |
Последний раз редактировалось: kosbar (Чт Апр 09, 2009 10:20 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Совершенно в точку. Только надо еще отметить, что не просто составляет, а может прибавлять данные к уже существующему символу не затирая старые. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
У меня не хватает знаний ))
Можно какой-нть совершенно маленький пример вплоть до визуального воплощения? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да я и сам с 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
|
Код понятен.
Картинка тоже.
Но хочется красивее, наверное в Ексель пойду рисовать) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
burga
Зарегистрирован: 04.09.2009
Сообщения: 23
|
Вот от меня на эту тему. Выводит в поле 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
|
Это совсем не по теме, но всё равно спасибо за код. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
По мотивам темы и кода Олега нарисовал такую вот штучку:
Код: |
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 |
|
|