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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

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

Подскажите как написать код.
Нужно в сканере получить таблицу корреляций, но отфильтровать создаваемые колонки по индустриям. Т.е. сделать так, чтобы акции из другой индустрии не создавали свои (лишние) колонки.
Код от Томаша с моими поправками ниже:
Код:
// read the list of symbols from Watchlist 0
symlist = CategoryGetSymbols( categoryWatchlist, 0 );

Industry1 = IndustryID() ; // получаем номер индустрии текушего символа

Filter = Status( "lastbarinrange" );

for ( i = 0; ( sym = StrExtract( symlist, i ) ) != ""; i++ )
{
    // calculate correlation over 252 bars
    Corr = Correlation( C, Foreign( sym, "C" ), 252 );

    Clr = 32 + SelectedValue( Corr ) * 32;

// Industry2 = IndustryID() ;  // получаем номер индустрии символа внутри цикла
// Filter = Industry2 == Industry1 ; // Добавлять колонки только при совпадении индустрии
// - Почему не работает ?

AddColumn( Corr, sym, 1.2,  ColorHSB( 128 + Clr, 255, 255 ),  ColorHSB( Clr, 255, 255 ) )   ;

}

SetSortColumns( 1 );
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вероятно ты не понял работу этого кода. Не могу понять что именно надо. Как ты хочешь его усовершенствовать?

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


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

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

Аааа. Кажись понял как хочешь.
Код:

Industry1 = IndustryID() ; // получаем номер индустрии текушего символа

// read the list of symbols from Watchlist 0
symlist = CategoryGetSymbols( categoryIndustry, Industry1 );

// display only last bar from the Analysis range
Filter = Status( "lastbarinrange" );

// iterate through symbols
for ( i = 0; ( sym = StrExtract( symlist, i ) ) != ""; i++ )
{
    // calculate correlation over 252 bars
    Corr = Correlation( C, Foreign( sym, "C" ), 252 );

    // set color dynamically based on correlation values
    // and display the output in exploration column
    Clr = 32 + SelectedValue( Corr ) * 32;
   
    AddColumn( Corr, sym, 1.2,
               ColorHSB( 128 + Clr, 255, 255 ),
               ColorHSB( Clr, 255, 255 ) );
}

SetSortColumns( 1 );

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

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

Задача такая:

1. Допустим я в неким образом обнаружил акцию для торговли.
2. Мне нужно с помощью сканера (данного скрипта) найти акции из ЭТОЙ ЖЕ индустрии по полученной таблице (наилучшей) корреляции с бумагой из п.1
Если коротко - по сути это поиск пары в одной индустрии.

Иными словами
выглядеть это должно так - выбираем в сканере
В окне Apply to -*Current жмём Explore, результатом должна выплюнуться таблица корреляций бумаг из этой же индустрии.

Объяснил как мог, вроде должно быть понятно
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Угу. Я вроде так и понял и так и написал код.

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

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

000 писал(а):
Угу. Я вроде так и понял и так и написал код.

Не понял...
Первый код от второго ничем не отличается
.................
Сорри -увидел
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ну если не видишь отличий в коде, то поробуй его в Ами. Smile

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

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

000 писал(а):
Ну если не видишь отличий в коде, то поробуй его в Ами. Smile

Амиброкер лучший!
Не, серьёзно - пересмотрел кучу программ - и не нашёл чего мне надо.
И сразу вспоминается удивительно гибкий Ами и наш замечательный ООО Exclamation

Олег Спасибо!
Посмотреть профиль Отправить личное сообщение
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Пн Апр 20, 2015 7:01 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Аааа. Кажись понял как хочешь.
Код:

Industry1 = IndustryID() ; // получаем номер индустрии текушего символа

symlist = CategoryGetSymbols( categoryIndustry, Industry1 );

Filter = Status( "lastbarinrange" );

// iterate through symbols
for ( i = 0; ( sym = StrExtract( symlist, i ) ) != ""; i++ )
{
    // calculate correlation over 252 bars
    Corr = Correlation( C, Foreign( sym, "C" ), 252 );
    Clr = 32 + SelectedValue( Corr ) * 32;
   
    AddColumn( Corr, sym, 1.2,
               ColorHSB( 128 + Clr, 255, 255 ),
               ColorHSB( Clr, 255, 255 ) );
}
 

А ещё - подскажите, как поставить фильтр - т.е. разрешить вывод колонки если
if ( Corr > 0.77) - то AddColumn разрешено? Я внутри циклов теряюсь...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Апр 20, 2015 9:42 pm Ответить с цитатой Вернуться к началу

Попробуй так
Код:
if(Corr > 0.77)
{
   AddColumn( Corr, sym, 1.2,
               ColorHSB( 128 + Clr, 255, 255 ),
               ColorHSB( Clr, 255, 255 ) );
}

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Вт Апр 21, 2015 7:00 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Попробуй так
Код:
if(Corr > 0.77)
{
   AddColumn( Corr, sym, 1.2,
               ColorHSB( 128 + Clr, 255, 255 ),
               ColorHSB( Clr, 255, 255 ) );
}


Ругается.
Filter тоже почему-то не работает
Посмотреть профиль Отправить личное сообщение
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Вт Апр 21, 2015 7:12 pm Ответить с цитатой Вернуться к началу

Понял, надо
if(LastValue (Corr) > 0.77)
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen