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


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

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

А что собственно непонятно?

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



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

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

Непонятно, как тестировать две системы одновременно, если у них разные часы торговли, как это прописать в торговле....Первая система торгует с 10:00 до 18:45. А вторая с 10:00 до 23:50....

Я в приципе общее эквити строю в экселе. Но там эквити постоено исходя из сделок а не движения рынка...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

http://amisite.ru/phpBB2/viewtopic.php?t=1192

Вот так делается система с ограничением по времени.
Делаешь 2 таких и далее как написано выше.

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



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

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

000 писал(а):
Сам по себе способ оценки там самый правильный. Но для его реализации надо создать клоны инструментов. Вот способ создания клонов там геморойный. Можно гораздо проще.


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


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

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

Вот потому и геморойный. Клон инструмента гораздо проще сделать средствами Ами.

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



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

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

000 писал(а):
Запросто.
Как это сделать на форуме обсуждалось. Или можно посмотреть вот тут http://heaventrading.wordpress.com/category/amibroker/
Мультисистемный тестер


а где это тут обсуждалось? а то я уже запарился запускать этот тестер, никак не хочет у меня работать Rolling Eyes
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Да фиг его знает. Не помню где. Спрашивай тут. Может и решим твою проблему.

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



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

СообщениеДобавлено: Вс Дек 11, 2011 7:15 pm Ответить с цитатой Вернуться к началу

Megasystem.afl:
Код:

#include "D:\\BO\\Sys1.afl";
_N(TickerList = CategoryGetSymbols( categoryWatchlist, 0 ));
InitSystem("BO", 1, 0.5);

// Sistema 2
#include "D:\\BO\\Sys2.afl";
_N(TickerList = CategoryGetSymbols( categoryWatchlist, 0 ));
InitSystem2("BO", 2, 0.5);


Sys1.afl:
Код:

// Argument - SysPosSize - predstavlyaet soboy limit, kotoryy my vydelyaem na konkretnuyu sistemu(iz gruppy testiruemyh sistem)
function LaunchSystem(SysPosSize)
{
   // Obyazatel'nye parametry, inache my budem prisvaivat' lokal'nye peremennye
   global Buy,Sell,Short,Cover;
   global BuyPrice,SellPrice,ShortPrice, CoverPrice;
   // --end

   //Pravila sistemy
Period1 = 5;
Period2 = Period1 + 15;
Buy =  Cross(MA(Close, Period1) , MA(Close, Period2));
Sell = Cross(MA(Close, Period2) , MA(Close, Period1));

   BuyPrice = SellPrice = Close;
   SetPositionSize( 30*SysPosSize, spsPercentOfEquity );
}
//
// Osnovnaya f-ziya dlya inizializatsii rascheta signalov sistemy
// Argumenty
// TickerList - spisok bazovyh aktivov (bez suffiksa "_N")!!! (perechislenye cherez zapyatuyu)
// SysID - indeks sistem, sistema s SysID = 3, budet torgovat' tol'ko instrumenty s suffiksom "_3"
// SysPosSize - obschiy limit na etu sistemy (0.3 = 30%)
function InitSystem(TickerList, SysID, SysPosSize)
{
   BaseTicker = StrLeft(Name(),StrFind(Name(), "_")-1);
   if (StrFind(TickerList, BaseTicker) > 0 && Name() == BaseTicker+"_"+SysID)
   {
      LaunchSystem(SysPosSize);      
   }
}


Sys2.afl:
Код:

function LaunchSystem2(SysPosSize)
{
   global Buy,Sell,Short,Cover;
   global BuyPrice,SellPrice,ShortPrice, CoverPrice;

   //Short = Cross(MA(C, 15), MA(C, 5));
   //Cover = Cross(MA(C, 5), MA(C, 15));

   ShortPrice = CoverPrice = Close;
   // trade size: 25% of current portfolio equity
   SetPositionSize( 30*SysPosSize, spsPercentOfEquity );
}

function InitSystem2(TickerList, SysID, SysPosSize)
{
   BaseTicker = StrLeft(Name(),StrFind(Name(), "_")-1);

   printf(BaseTicker);   

   if (StrFind(TickerList, BaseTicker) > 0 && Name() == BaseTicker+"_"+SysID)
   {
      LaunchSystem2(SysPosSize);      
   }
}


вот это всё, оно стартует, но не совершает ни одной сделки. я там что-то забыл?

с лимитами на систему не всё понятно:
InitSystem("BO", 1, 0.5); - тут мы передали системе 0.5 - 50% счёта, зачем он его тут SetPositionSize( 30*SysPosSize, spsPercentOfEquity ); на 30 умножал? нужно ж на 100 умножить?

и что там вообще с этими глобальными переменными? они в таком виде правильно написаны и работают как задуманно?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

А ты создал инструменты с индексом (типа LKOH_3) как там написано?

И вообще интересно. Это откуда?

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



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

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

000 писал(а):
А ты создал инструменты с индексом (типа LKOH_3) как там написано?

И вообще интересно. Это откуда?


вообще это творение ubertrader-а, линк на которое ты запостил в процитированном мною сообщении выше Smile а что? в коде что-то не так? плохой код?
я вот так и не понял, почему он на 30 лимит умножал. как я и ожидал система работала с позициями в 0.5*30=15%, видно, так, для теста просто вписал туда. это я поправлю.

а вот что с глобыльными переменными? тут DmZ писал, что массивы Buy, Sell, Short, Cover, PositionSize будут перезаписываться в следующих системах, как бы мне это обойти? Rolling Eyes

упс. пардон. нашел косяк, клоны инструментов скриптик мне сделал в этой БД пустые) поправил БД, всё заработало. ура)
Посмотреть профиль Отправить личное сообщение
MrDrJOKER



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

СообщениеДобавлено: Вс Дек 18, 2011 4:49 am Ответить с цитатой Вернуться к началу

тут такая проблемка нарисовалась.

если я в файлик, тот что выше - Sys1.afl, вставляю полностью код от JurikMA, а он содержит в себе функции, тоо тестер ругается на функции в функциях.

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


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

СообщениеДобавлено: Вс Дек 18, 2011 8:36 am Ответить с цитатой Вернуться к началу

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

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



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

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

000 писал(а):
Вероятно дело вот в чем.
Функции в коде должны быть сначала описаны, а уже потом вызываться. Наверное у тебя получилось наоборот.


100 лет не программировал, забыл самое элементарное.
вынес #include из функции и всё заработало)

я вот заметил, что через #include код медленее работает. так ли этоо или это только мне так показалось?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Дек 18, 2011 4:25 pm Ответить с цитатой Вернуться к началу

Так.
Это одна из причин почему я ей никогда не пользуюсь.

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



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

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

dic2005 писал(а):
дык АА не откроет новую сделку пока не закроет старую

А если убрать галку в Backtester settings на вкладке General -> Reverse entry signal forces exit. то должен разрешать.. по идее

-----------
Reverse entry signal forces exit – сигнал на открытие позиции в обратном направлении инициирует выход из существующей позиции. В зависимости от логики системы Вы можете указать тестеру, что делать в момент, когда уже открыта позиция и система генерирует сигнал на открытие противоположной позиции. Если эта опция не активирована, то сигналы на открытие противоположной позиции будет проигнорированы до тех пор, пока не появится сигнал на закрытие текущей. В противном случае позиция будет закрыта.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen