Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сам по себе способ оценки там самый правильный. Но для его реализации надо создать клоны инструментов. Вот способ создания клонов там геморойный. Можно гораздо проще. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
по этой схеме получается, можно сваять мультисистемный робот, если есть способ котировки клонировать в реальном времени или близко к нему. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
dic2005 писал(а): |
по этой схеме получается, можно сваять мультисистемный робот, если есть способ котировки клонировать в реальном времени или близко к нему. |
Если такой робот предполгается будет работать на 1 инструменте, то ничего клонировать не надо. Для этого в код просто засовывается несколько систем, где заменяется Buy на Buy1, Buy2 и так далее.
А потом в самом роботе пишется Buy = Buy1 OR Buy2 OR... |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
а разве в таком случае откроется к примеру скажем еще один лонг, если лонг по другой системе уже открыт? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
Смотрю в анализаторе, стабильно long-short, long-short. То есть если есть один лонг, втрой не открывается |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Код: |
BuySys1 = .....;
SellSys1 = .....;
BuySys2 = .....;
SellSys2 = ......;
Buy = BuySys1 OR BuySys2;
Sell = SellSys1 OR SellSys2;
Lots = BuySys1*Lots + BuySys2*Lots |
И главное не забыть про строчку
Buy = LastValue(Buy); Sell = LastValue(Sell);
В сканнере запускаем n Last qoutations при n=1.
Такая связка работает, проверено. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
дык АА не откроет новую сделку пока не закроет старую
я сделал по другому,
Код: |
if (Name()=="SBER")
{
Periods = 90;
Width = 2;
sl=0.7;
tp=8;
AddToComposite(O, "~SBER","O",atcFlagDeleteValues+atcFlagEnableInBacktest+atcFlagEnableInIndicator);
AddToComposite(H, "~SBER","H",atcFlagDeleteValues+atcFlagEnableInBacktest+atcFlagEnableInIndicator);
AddToComposite(L, "~SBER","L",atcFlagDeleteValues+atcFlagEnableInBacktest+atcFlagEnableInIndicator);
AddToComposite(C, "~SBER","C",atcFlagDeleteValues+atcFlagEnableInBacktest+atcFlagEnableInIndicator);
AddToComposite(V, "~SBER","V",atcFlagDeleteValues+atcFlagEnableInBacktest+atcFlagEnableInIndicator);
}
if (Name()=="~SBER")
{
Periods = 90;
Width = 2;
sl=0.7;
tp=8;
}
|
получилось нормально, сделки строго парами идут
потестирую, как идет такой код в реалтайм пока |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
При сканировании роботом последнего бара АА вообще плевать в позиции мы или нет. Какой сигнал твоя система выдаст, такой робот и исполнит! Мы вообще по ходу говорим про разные вещи: я про робота, а ты про бектест. В бектесте вообще все по другому - там сначала идет сбор сигналов (первый проход кода), а потом уже их обработка и ВОЗМОЖНОЕ исполнение (второй проход кода)
ЗЫ Ничего что на ты? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
на ты без проблем
в данном случае. да я про бэктестинг
а в случае робота, как тогда робот обрабатывает ApplyStop, если не "видит" предыдущую сделку?
И потом, прежде чем запускать робот, не плохо бы посмотреть как общая система, портфель то бишь, поведет себя в целом, то есть, набор систем на наборе бумаг
или хотя бы одна система с разными параметрами на наборе бумаг |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Насчет ApplyStop() ничего сказать не могу так как никогда его не использовал.. Но подозреваю что работать будет
Для того чтобы прикинуть как себя будет вести портфель систем на одном инструменте, нужно по крайней мере выбрать веса каждой системы в портфеле, желательно не наобум Веса можно прикинуть в экселе, с помощью "поиска решения", там же построить график. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
dic2005
Зарегистрирован: 23.07.2011
Сообщения: 29
|
В екселе много чего можно делать |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
dic2005 писал(а): |
В екселе много чего можно делать |
Аха, даже робота |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
spitfire писал(а): |
dic2005 писал(а): |
по этой схеме получается, можно сваять мультисистемный робот, если есть способ котировки клонировать в реальном времени или близко к нему. |
Если такой робот предполгается будет работать на 1 инструменте, то ничего клонировать не надо. Для этого в код просто засовывается несколько систем, где заменяется Buy на Buy1, Buy2 и так далее.
А потом в самом роботе пишется Buy = Buy1 OR Buy2 OR... |
Это будет работать только если роботе нет функции Equity() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Яхфар
Зарегистрирован: 24.04.2011
Сообщения: 74
|
Добрый день!
Есть вот такой простой код, для тестирования двух систем:
Period1 = Optimize("Period1", 11, 1, 100, 1);
Period2 = Optimize("Period1D", 29, 1, 100, 1);
if(Name() == "SPFB.RTS")
{
Buy = Cover = Cross(LinearReg(C, Period1), LinearReg(C, Period2)) ;
Sell = Short = Cross(LinearReg(C, Period2), LinearReg(C, Period1)) ;
SetPositionSize( 1, spsShares);
}
else if(Name() == "RTS1")
{
Period3 = Optimize("PeriodA", 14, 1, 50, 1);
Period4 = Optimize("PeriodB", 36, 1, 50, 1);
Top = Ref(HHV(C, Period3), -1);
Bot = Ref(LLV(C, Period4), -1);
Buy = Cover= Cross(C, Top);
Sell = Short= Cross(Bot, C);
SetPositionSize( 1, spsShares);
}
как его протестировать, если первая система торгуется в дневную сессию, а вторая ситема торгуется и в ночную сессию и в дневную. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|