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



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

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

Нашел для себя интересную арбитражную систему, но не могу ее написать в Wealth Labe - там нет возможности оптимизировать системы где есть множество бумаг (то есть это можно сделать там через так называемый Wathclist но этот лист не работает с адаптерем квика).

Арбитражная система простая - покупаем фьючи которые в наибольшей степени коррелируют с индексом РТС, продаем фьюч на РТС если есть большая разница, тоже самое наоборот если фьючи (корзинка) стоят дешевле чем индекс РТС.


Поэтому и прошу помощи в написании системы на Ami.

Первые вопросы

1) Может ли ами динамически получать и обрабатывать а одном скрипте 6-7 потоков по фьючерсам из Квика?

2) Как примерно на языке АМИ отобразить следующий код

var ST1, ST2, St3, S4 ...... массивы данных отвичающие за стоимость фьючей. St1 - фьючерс РТС, St2 -фьюч газпрома, st3 - фьючь лукойла и т.д.
var q1, q2, q3, q4: float - переменные для голосовалки системы арбитражера.
virtualcost: внутренняя переменная


we_are_short_to ST1=true; (понадобится чтобы первый раз войти в позицию)

For i=1 till end of data

vitrualcost=q2*ST2[i]+q3*St3[i]+q4*St4[i] - понимаем сколько стоит корзинка фьючей

if virtualcost<ST1(индекс РТС)-q1(нужный спред) and we_are_long_toST1 then
sell (1) ST1
buy (1) ST2....6


if virtualcost>ST1(индекс РТС)+q1(нужный спред) and we_are_short_to St1 then
buy (1) ST1
sell (1) ST2....6

next (цикл закрывается)

3) для оптимизации по q1.....q7 надо как то загрузить исторически данные и провести оптимизацию - подскажите в двух словах как это делается в ами.

Очень жду помощи - обещаю любую помощь по wealth labу если кому то нужно.


Вообщемто такой скрипт может потом просто с использованием замены даных и оптимизацией работать на любом рынке где может быть арбитраж - например форекс.
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Gluhov писал(а):
Нашел для себя интересную арбитражную систему, но не могу ее написать в Wealth Labe - там нет возможности оптимизировать системы где есть множество бумаг (то есть это можно сделать там через так называемый Wathclist но этот лист не работает с адаптерем квика).

Вообщемто такой скрипт может потом просто с использованием замены даных и оптимизацией работать на любом рынке где может быть арбитраж - например форекс.


т.е. торговать ты будеш только фьючем индекса, а фьючи бумаг нужны расчета. И зачем скрипт или цикл, тут вроде обычного кода хватит. делай экспорт нужных фьючей в ами, только в одну базу. открываеш, график на фьюче индекса, делаеш чтото наподобие и в перед, да в настройках поставь цены сделок по C.



X = Optimize("X", 1, 1, 15, 1);
Y = Optimize("Y",2, 1, 15, 1);


s1 = x*Foreign( gp, "Close");
s2 = e*Foreign( luk, "Close"); и т.д.
s10=s1+s2*......;
после чего можно сделать так

d = (ref(c,-1)-c)/c;
d1 = (ref(s10,-1)-s10)/s10;
buy = d1>d;
short = d>d1;
sell = short;
cover = buy;

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Gluhov



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

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

нет имется ввиду

buy - индексного фьючерса
sell всех остальных фьючерсов (хедж).


и наоборот когда контанго по индексу большое.
Посмотреть профиль Отправить личное сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Вс Фев 08, 2009 7:58 pm Ответить с цитатой Вернуться к началу

Gluhov писал(а):
нет имется ввиду

buy - индексного фьючерса
sell всех остальных фьючерсов (хедж).


и наоборот когда контанго по индексу большое.


Блин , хорошая идея! Smile Расскажешь потом как получилось..
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вс Фев 08, 2009 8:18 pm Ответить с цитатой Вернуться к началу

reg4all писал(а):
Gluhov писал(а):
нет имется ввиду

buy - индексного фьючерса
sell всех остальных фьючерсов (хедж).


и наоборот когда контанго по индексу большое.


Блин , хорошая идея! Smile Расскажешь потом как получилось..


И зачем дело встало, помоги человеку тем паче и тебе интересно. операторов IIF и Foreign хватит за глаза. Писать код и заодно правила не стану, сами думайте, еще подсказка, возможно для облегчения кода нужно написать 2 системы одна для индекса, вторая для бумаг.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Gluhov



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

СообщениеДобавлено: Пт Фев 13, 2009 6:51 am Ответить с цитатой Вернуться к началу

Мда пока ничаго не получается.

Где бы взять дестоко большой справочник с примерами по програмированию на AMI. Wealth Lab как то попроще с точке зрения синтексиса и похожести на основные языки.
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Gluhov писал(а):
Мда пока ничаго не получается.

Где бы взять дестоко большой справочник с примерами по програмированию на AMI. Wealth Lab как то попроще с точке зрения синтексиса и похожести на основные языки.


У тебя конкретный вопрос?

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Пт Фев 13, 2009 8:24 am Ответить с цитатой Вернуться к началу

Gluhov писал(а):
Мда пока ничаго не получается.

Где бы взять дестоко большой справочник с примерами по програмированию на AMI. Wealth Lab как то попроще с точке зрения синтексиса и похожести на основные языки.

Пиши циклом. Тогда AFL это голимый С или jS
А примеры (без коментов) можно смотреть например тут http://amibroker.com/library/list.php а с коментами тут http://www.amibroker.com/kb/

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



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

СообщениеДобавлено: Вс Фев 15, 2009 1:47 pm Ответить с цитатой Вернуться к началу

Вопрос - а как всетаки купить продать с foreing акциями - во всех примерах которые я нашел они используются только для вычесления =(
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вс Фев 15, 2009 8:26 pm Ответить с цитатой Вернуться к началу

Gluhov писал(а):
Вопрос - а как всетаки купить продать с foreing акциями - во всех примерах которые я нашел они используются только для вычесления =(


Да очень просто у тебя кроме кода системы есть еще робот, где ты иожеш влиять на то какими акциями и по сколько ты будеш торговать при появлении сигнала
Код:
Lots=1;             // сколько лотов желаете торговать

например.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

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

Gluhov писал(а):
Вопрос - а как всетаки купить продать с foreing акциями - во всех примерах которые я нашел они используются только для вычесления =(

Вопрос непонятен. Sad
Еслим нажо продавать/покупать несколько бумаг, то для этого есть портфельный тестер. Если надо получать сиигнал на основе другого тикера, то это делается при помощи ф-ции foreing(). Типа
Код:

Buy = foreing(блаблабла);

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Фев 16, 2009 7:27 am Ответить с цитатой Вернуться к началу

Gluhov писал(а):
Вопрос - а как всетаки купить продать с foreing акциями - во всех примерах которые я нашел они используются только для вычесления =(


Вобщем напиши конкретно, тикер какова его пропорция(по каждому), и отношение кол-ва бумаг к индексу, 50-50 или 20-80%%.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Gluhov



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

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

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

Вопрос - есть идеи как уменьшить время на оптимизацию ?
Может у меня ошибка в коде?

Код:



// copyright Sergey Gluhov sergey@gluhov.com

X = Optimize("X", 1, 1, 20, 1);
Y = Optimize("Y",1, 1, 20, 1);
Z = Optimize("Z",1, 1, 20, 1);
up = Optimize("up",1, 1, 5500, 200); //максимальная граница отклонения фьючерса РТС вверх от виртуального фьчерса при которой происходит вход в позицию
down = Optimize("down",1, 1, 5500, 200);  //максимальная граница отклонения фьючерса РТС вниз от виртуального фьчерса при которой происходит вход в позицию
exitup = Optimize("exitup",1, 1, 2500, 200); // на каком уровнее надо выходить из позиции короткой позиции по фьючерсу
exitdown = Optimize("exitdown",1, 1, 2500, 200); // на каком уровнее надо выходить из позиции длинной позиции по фьючерсу
exitup = exitup-1000; //чтобы граница выхода могла быть меньше чем виртульный фьючь
exitdown = exitdown-1000; //чтобы граница выхода могла быть меньше чем виртульный фьючь

s1 = x*Foreign( "GZH9", "Close",1);
s2 = y*Foreign( "LKH9", "Close",1);
s3 = z*Foreign( "SNH9", "Close",1);
RTS = Foreign( "RIH9", "Close",1);

Currentstate = 0; // нужна чтобы понимать какая сейчас позиция шорт (-1), нет позиции (0); или лонг по фьючерсу (+1);

for( i = 1; i < BarCount; i++ )
{
   

si1 =s1[i];
si2 =s2[i];
si3 =s3[i];

RTSv=si1+si2+si3; //считаем РТС виртуальный



if (RTS [i]>RTSv+up) { if  (Currentstate>-1) {

//входим в позицию  - фьючерс РТС перекуплен - нужно продать 1 фьючерса на индекс, купить все остальные фьючерсы в количестве равным весам

SetPositionSize( 1, spsShares );
Short=Foreign( "RIH9", "Close");


SetPositionSize( x, spsShares );
Buy=Foreign( "GZH9", "Close");

SetPositionSize( y, spsShares );
Buy=Foreign( "LKH9", "Close");

SetPositionSize( z, spsShares );
Buy=Foreign( "SNH9", "Close");

Currentstate=-1;
}}

if (RTS [i]<RTSv+exitup) { if  (Currentstate==-1) {

//выходим из позиции  - фьючерс РТС вернулся к нормальному уровню - нужно купить 1 фьючерс на индекс (cover), продать (sell) все остальные фьючерсы в количестве равным весам

SetPositionSize( 1, spsShares );
Cover=Foreign( "RIH9", "Close");


SetPositionSize( x, spsShares );
Sell=Foreign( "GZH9", "Close");

SetPositionSize( y, spsShares );
Sell=Foreign( "LKH9", "Close");

SetPositionSize( z, spsShares );
Sell=Foreign( "SNH9", "Close");

Currentstate=0;
}}



if (RTS [i]<RTSv-down) { if  (Currentstate<1) {

//входим в позицию  - фьючерс РТС перепродан - нужно купить 1 фьючерс на индекс, продать все остальные фьючерсы в количестве равным весам

SetPositionSize( 1, spsShares );
Buy=Foreign( "RIH9", "Close");


SetPositionSize( x, spsShares );
Short=Foreign( "GZH9", "Close");

SetPositionSize( y, spsShares );
Short=Foreign( "LKH9", "Close");

SetPositionSize( z, spsShares );
Short=Foreign( "SNH9", "Close");

Currentstate=1;
}}

if (RTS [i]>RTSv-exitup) { if  (Currentstate==1) {

//выходим из позиции  - фьючерс РТС вернулся к нормальному уровню - нужно продать 1 фьючерс на индекс (Sell), купить   (cover) все остальные фьючерсы в количестве равным весам

SetPositionSize( 1, spsShares );
Sell=Foreign( "RIH9", "Close");


SetPositionSize( x, spsShares );
Cover=Foreign( "GZH9", "Close");

SetPositionSize( y, spsShares );
Cover=Foreign( "LKH9", "Close");

SetPositionSize( z, spsShares );
Cover=Foreign( "SNH9", "Close");

Currentstate=0;
}}



} // закрываем основной цикл

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


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

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

7 параметров оптимизации
1 - 20 шагов
2 - 20 шагов
3 - 20 шагов
4 - 27 шагов
5 - 27 шагов
6 - 12 шагов
7 - 12 шагов

итого 20*20*20*27*27*12*12 = 839808000 прогонов

Почти миллиард прогонов....
Можно зафиксировать некоторые параметры и провести сперва оптимизацию по остальным, или увеличить шаг оптимизации и сделать сперва прикидку, дальше посмотреть какие параметры дают приемлимые результаты и прогнать оптимизацию в районе этих значений с меньшим шагом...

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вт Фев 17, 2009 12:15 pm Ответить с цитатой Вернуться к началу

000 писал(а):
7 параметров оптимизации
1 - 20 шагов
2 - 20 шагов
3 - 20 шагов
4 - 27 шагов
5 - 27 шагов
6 - 12 шагов
7 - 12 шагов

итого 20*20*20*27*27*12*12 = 839808000 прогонов

Почти миллиард прогонов....
Можно зафиксировать некоторые параметры и провести сперва оптимизацию по остальным, или увеличить шаг оптимизации и сделать сперва прикидку, дальше посмотреть какие параметры дают приемлимые результаты и прогнать оптимизацию в районе этих значений с меньшим шагом...


Проще на РТС взять пропорции, ведь состав известен, к примеру взять 5 самых больших по объему и найти соотношение, в противном случае подгонка чистой воды.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen