Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А что собственно непонятно? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Яхфар
Зарегистрирован: 24.04.2011
Сообщения: 74
|
Непонятно, как тестировать две системы одновременно, если у них разные часы торговли, как это прописать в торговле....Первая система торгует с 10:00 до 18:45. А вторая с 10:00 до 23:50....
Я в приципе общее эквити строю в экселе. Но там эквити постоено исходя из сделок а не движения рынка... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
000 писал(а): |
Сам по себе способ оценки там самый правильный. Но для его реализации надо создать клоны инструментов. Вот способ создания клонов там геморойный. Можно гораздо проще. |
Олег, почему геморойный? Ubertrader там написал же скриптик, для создания клонов инструментов. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот потому и геморойный. Клон инструмента гораздо проще сделать средствами Ами. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
а где это тут обсуждалось? а то я уже запарился запускать этот тестер, никак не хочет у меня работать |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да фиг его знает. Не помню где. Спрашивай тут. Может и решим твою проблему. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
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
|
А ты создал инструменты с индексом (типа LKOH_3) как там написано?
И вообще интересно. Это откуда? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
000 писал(а): |
А ты создал инструменты с индексом (типа LKOH_3) как там написано?
И вообще интересно. Это откуда? |
вообще это творение ubertrader-а, линк на которое ты запостил в процитированном мною сообщении выше а что? в коде что-то не так? плохой код?
я вот так и не понял, почему он на 30 лимит умножал. как я и ожидал система работала с позициями в 0.5*30=15%, видно, так, для теста просто вписал туда. это я поправлю.
а вот что с глобыльными переменными? тут DmZ писал, что массивы Buy, Sell, Short, Cover, PositionSize будут перезаписываться в следующих системах, как бы мне это обойти?
упс. пардон. нашел косяк, клоны инструментов скриптик мне сделал в этой БД пустые) поправил БД, всё заработало. ура) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
тут такая проблемка нарисовалась.
если я в файлик, тот что выше - Sys1.afl, вставляю полностью код от JurikMA, а он содержит в себе функции, тоо тестер ругается на функции в функциях.
как тут быть? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вероятно дело вот в чем.
Функции в коде должны быть сначала описаны, а уже потом вызываться. Наверное у тебя получилось наоборот. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
000 писал(а): |
Вероятно дело вот в чем.
Функции в коде должны быть сначала описаны, а уже потом вызываться. Наверное у тебя получилось наоборот. |
100 лет не программировал, забыл самое элементарное.
вынес #include из функции и всё заработало)
я вот заметил, что через #include код медленее работает. так ли этоо или это только мне так показалось? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Так.
Это одна из причин почему я ей никогда не пользуюсь. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
knell009
Зарегистрирован: 21.11.2011
Сообщения: 24
|
dic2005 писал(а): |
дык АА не откроет новую сделку пока не закроет старую |
А если убрать галку в Backtester settings на вкладке General -> Reverse entry signal forces exit. то должен разрешать.. по идее
-----------
Reverse entry signal forces exit – сигнал на открытие позиции в обратном направлении инициирует выход из существующей позиции. В зависимости от логики системы Вы можете указать тестеру, что делать в момент, когда уже открыта позиция и система генерирует сигнал на открытие противоположной позиции. Если эта опция не активирована, то сигналы на открытие противоположной позиции будет проигнорированы до тех пор, пока не появится сигнал на закрытие текущей. В противном случае позиция будет закрыта. |
_________________ knell |
|
Посмотреть профиль Отправить личное сообщение |
|
|