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



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

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

Добрый день.
У себя в закромах нашел калькулятор для Трейдстейшн, который выдает статистику по каждой акции на предмет сколько за год акция сделала гэповых дней вверх или вниз, сколько гепов было закрыто и т.п.
Этот код работает в РадарСкрине, но к сожалению для радара нужен онлайн
Вот хотелось бы подобную мульку в Ами-брокере поиметь. Клон этого кода есть на одном сайте. Ниже я его приведу. Только вот он работает как-то коряво. Омега выдает по инфу по тикеру одной строкой, Ами же кучей строк. В начале думал, что нужно найти последнюю дату и там будет самый достоверный отчет. Однако оказалось, что в течении всего года количество геповых дней может уменьшаться, что есть бред


Код:
 gapped = O - Ref(C,-1);

GapUpp = Sum(gapped>0,5);

GapDwn = Sum(gapped<0>0,100);

gappeddn100 = Sum(GapDwn>0,100);

CloseLoR = Ref(C,-1)-L;

CloseHiR = H - Ref(C,-1);

fillup = Sum(CloseLoR>0,1);

filldn = Sum(CloseHiR>0,1);

GapUpfilled = GapUpp*fillup;

GapDnFilled = GapDwn*filldn;

GapUp100f = Sum(gapupfilled>0,100);

GapDn100f = Sum(gapdnfilled>0,100);

gapfilled = GapUp100f + gapdn100f;

AddColumn(Close,"Close",1.2);
AddColumn(Volume*100,"Volume",1.0);
AddColumn(gappedup100,"GappedUp100",1);
AddColumn(gappeddn100,"GappedDn100",1);
AddColumn(gapfilled,"GapFilled",1);
AddColumn(GapUp100f,"GapUp100f",1);
AddColumn(GapDn100f,"GapDn100f",1);
AddColumn(MA(absgap,100),"Avg. Gap",1.2);


Сам пытался исправить ситуацию - но вышло еще печальнее

Спасибо
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Дек 18, 2008 7:32 pm Ответить с цитатой Вернуться к началу

Форум код покоцал. Прочитай http://amisite.ru/phpBB2/viewtopic.php?t=223 и повтори еще раз...

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



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

СообщениеДобавлено: Чт Дек 18, 2008 11:23 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Форум код покоцал. Прочитай http://amisite.ru/phpBB2/viewtopic.php?t=223 и повтори еще раз...

странно. но у меня эта функция отключена
на всякий случай прицепил файло.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Дек 18, 2008 11:36 pm Ответить с цитатой Вернуться к началу

Цитата:

странно. но у меня эта функция отключена

Я её потом отключил.

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



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

СообщениеДобавлено: Чт Дек 18, 2008 11:44 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

странно. но у меня эта функция отключена

Я её потом отключил.

ааа Very Happy
ну все равно прицепленная бумажка лучше
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Дек 19, 2008 12:34 am Ответить с цитатой Вернуться к началу

По коду.
1. Данные код выдает не за год, а за 100 торговых периодов.
2. Данные он выдает одной строкой, просто надо делать правильные настройки. Смотри картинку. Он выдает несколько строк потому, что выдает строку на каждый бар анализируемого периода. Поэтому в настройках АА надо поставить "n last quotation" "n = 1" См. картинку.
3. Расшифрую что за данные он выдает.

GappedUp100 - кол-во гепов верх за последние 100 баров
(геп считается если открытие хоть немного выше вчерашнего закрытия)
GappedDn100 - аналогично гепы вниз
GapFilled - число закрытых гепов за 100 дней. (закрытием гепа считается если сегодняшний минимум или максимум достиг вчерашнего закрытия)
GapUp100f - число закрытых гепов вверх за последние 100 баров
GapDn100f - число закрытых гепов вниз за последние 100 баров
Avg. Gap - Средняя величина гепа за последние 100 баров (кажется неправильно)

Вообще код написан довольно коряво и мне ужасно не понравился. Это если не считать того, что при расчете средней величины гепа за последние 100 баров допущена ошибка

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



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

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

Спасибо большое за ответ.
насчет корявости кода - возможно и так, но я не силен в программинге (и код не мой) поэтому что есть то есть. Smile Хотя и меня кое-какие моменты смущают. А что именно Вам не нравиться??? (лучше уж если переделывать, то переделывать сразу правильно)
за настройки спасибо огромнейшее. сам бы я про n=1 ниразу не допер бы. Хотя вообще-то странно. по идее n=1 это дает указание посмотреть только определенное количество баров назад (я честно признаюсь - выставил там 100 = чтоб в коде совпало Embarassed
Посмотреть профиль Отправить личное сообщение
max



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

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

Если быть точнее, я не совсем понимаю суть вот этой конструкции:

Код:
gapped = O - Ref(C,-1);

GapUpp = Sum(gapped>0,5);
GapDwn = Sum(gapped<0,5);

gappedup100 = Sum(GapUpp>0,100);
gappeddn100 = Sum(GapDwn>0,100);


В первой строчке мы определяем куда был гэп по сравнению со вчерашним закрытием (то что лучше смотреть Хай-Лоу пока опустим)
потом идет суммирование количества дней с Гэпом за последние 5 дней
а потом мы суммируем полученные значения за 100 дней....странно. Почему нельзя просто написать

GapUpp = Sum(gapped>0,100);

И не считать эти 5 дней
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Дек 19, 2008 1:25 pm Ответить с цитатой Вернуться к началу

А в приаттаченом коде нет суммирования за 5 дней. Там так
Код:

GapUpp = Sum(gapped>0,1);
GapDwn = Sum(gapped<0,1);

т.е. суммиуется за 1 день. В принципе рабочий вариант, но вот это и есть одна из корявостей кода про которые я писал.

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



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

СообщениеДобавлено: Пт Дек 19, 2008 3:54 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А в приаттаченом коде нет суммирования за 5 дней. Там так
Код:

GapUpp = Sum(gapped>0,1);
GapDwn = Sum(gapped<0,1);

т.е. суммиуется за 1 день. В принципе рабочий вариант, но вот это и есть одна из корявостей кода про которые я писал.


А ну да, это уже я руками влез Smile
а вот смысл какой в этом??? Я пытался заменить на IIF но что-то не то получил....- считать вообще перестало. Embarassed
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Дек 22, 2008 12:20 am Ответить с цитатой Вернуться к началу

Цитата:

А ну да, это уже я руками влез
а вот смысл какой в этом???

Я не знаю какой смысл. Вероятно просто кривые руки. Smile
Цитата:

Я пытался заменить на IIF но что-то не то получил

Странно, но IIF там тоже не нужен. Я бы написал так.
Код:

gapped = O - Ref(C,-1);
GapUpp = gapped > 0;
GapDwn = gapped < 0;
absgap = abs(gapped);
gappedup100 = Sum(GapUpp > 0, 100);
gappeddn100 = Sum(GapDwn > 0, 100);
CloseLoR = Ref(C,-1)-L;
CloseHiR = H - Ref(C,-1);
fillup = CloseLoR > 0;
filldn = CloseHiR > 0;
GapUpfilled = GapUpp*fillup;
GapDnFilled = GapDwn*filldn;
GapUp100f = Sum(gapupfilled > 0, 100);
GapDn100f = Sum(gapdnfilled > 0, 100);
gapfilled = GapUp100f + gapdn100f;

Filter = C > 5 AND MA(V, 30)>1000000/100 AND gapfilled > 5;

SetOption("NoDefaultColumns", True);
AddTextColumn( Name(), "Symbol", 77 , colorDefault);

AddColumn(Close,"Close",1.2);
AddColumn(Volume*100,"Volume",1.0);
AddColumn(gappedup100,"GappedUp100",1);
AddColumn(gappeddn100,"GappedDn100",1);
AddColumn(gapfilled,"GapFilled",1);
AddColumn(GapUp100f,"GapUp100f",1);
AddColumn(GapDn100f,"GapDn100f",1);
AddColumn(MA(absgap,100),"Avg. Gap",1.2);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.

Последний раз редактировалось: 000 (Вт Дек 23, 2008 10:34 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
max



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

СообщениеДобавлено: Вт Дек 23, 2008 2:40 pm Ответить с цитатой Вернуться к началу

Да, так значительно лучше
Спасибо!
Сейчас доработаю и буду пользовать
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Дек 23, 2008 10:42 pm Ответить с цитатой Вернуться к началу

Кстати. Я там не исправлял ошибку со средней величиной гепа. По моему правильнее заменить последную строку на
Код:

AddColumn(Sum(absgap,100)/(gappedup100 + gappeddn100), "Avg. Gap",1.2);

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen