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


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

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

Цитата:

Вот занялся sigScaleIn SigScaleOut - может пояснишь - так и не понял что это за жуткие цифири и как их юзать

Сигналы sigScaleIn и SigScaleOut добавляют и сокращают размер позициипри этом не открывая новую позицию. Изменяется только размер открытой позиции и цена открытия. При этом позиция не закрывается даже если её размер равен 0.
Прстой пример двух систем с дабавлением и сокращением позиции
Код:

///////// система 1 /////////
Buy1  = Cross(MACD(), Signal());
Sell1 = Cross(Signal(), MACD());

///////// система 2 /////////
Buy2  = Cross(StochK(), StochD());
Sell2 = Cross(StochD(), StochK());

///////// Объединяем системы /////////
SetPositionSize(1, 4); // торгуем одним лотом

Buy  = Buy1*sigScaleIn + Buy2*sigScaleIn + Sell1*sigScaleOut + Sell2*sigScaleOut;
Sell = 0;

В настройках тестера необходимо установить Position Long
Недостаток такого подхода в том, что в итоге тестер покажет только одну сделку, которая на самом деле всевремя изменялась на протяжении всей истории. Если захочется посмотреть изменение позиции, то в настройках тестера на закладке Report нужно включить опцию Detailed Log.
На мой взгляд более удобный способ заключается в том, чтобы создать в базе несколько одниаковых инструментов с разными названиями.
Этот способ описан тут http://heaventrading.wordpress.com/2008/02/19/multisystem-backtester-part1/
В двух словах. Создаем да одинаковых инструмента с разными названиями в базе. Например SPFB.RTS и SPFB.RTS1 Далее делаем код типа
Код:

SetPositionSize(1, 4); // торгуем одним лотом

///////// система 1 /////////
if(Name() == SPFB.RTS)
{
   Buy  = Cross(MACD(), Signal());
   Sell = Cross(Signal(), MACD());
}

///////// система 2 /////////
if(Name() == SPFB.RTS1)
{
   Buy2  = Cross(StochK(), StochD());
   Sell2 = Cross(StochD(), StochK());
}

и прогоняем её на портфеле из этих "двух" бумаг. В результате одна система торгует на "первой" бумаге, а другая на "второй".
В итоге видо все сделки и общий результат работы этих систем.

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



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

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

000 писал(а):
На мой взгляд более удобный способ заключается в том, чтобы создать в базе несколько одниаковых инструментов с разными названиями.
В результате одна система торгует на "первой" бумаге, а другая на "второй".
В итоге видо все сделки и общий результат работы этих систем.


Идея! Попробую.

Но вот основной смысл "объединения" систем - это таки объединить х систем на разных таймфрэймах. Две системы-один фрэйм это упрощенная задача. Самый интерес - это "сокращение" сигналов или размера позиции (если стоим в позе по большому таймфрэйму и получаем противоположный). Ну и самое неприятное в решении с 2мя тикерами - это управление плечами. При тестировании на истории (в группе просто 4 фьюча RIхх , чтоб не склеивать) каждый новый фьюч начинает считаться с первоначального размера депо, хотя депо уже отнюдь не первоначального размера. В итоге если система с ММ и плечами - протестить можно очень приблизительно. Вплоть до получения в реалии сливной просадки.
Посмотреть профиль Отправить личное сообщение
pitero



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

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

000 писал(а):

Buy = Buy1*sigScaleIn + Buy2*sigScaleIn + Sell1*sigScaleOut + Sell2*sigScaleOut;
Sell = 0;
В настройках тестера необходимо установить Position Long


Вдогонку - а реверсную систему с sigScale не написать что-ли? Принудительно закрыть сделку даже если размер=0 никак нельзя?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

pitero писал(а):

Но вот основной смысл "объединения" систем - это таки объединить х систем на разных таймфрэймах. Две системы-один фрэйм это упрощенная задача. Самый интерес - это "сокращение" сигналов или размера позиции (если стоим в позе по большому таймфрэйму и получаем противоположный). Ну и самое неприятное в решении с 2мя тикерами - это управление плечами. При тестировании на истории (в группе просто 4 фьюча RIхх , чтоб не склеивать) каждый новый фьюч начинает считаться с первоначального размера депо, хотя депо уже отнюдь не первоначального размера. В итоге если система с ММ и плечами - протестить можно очень приблизительно. Вплоть до получения в реалии сливной просадки.

Портфельный тестер Ами учитывает уже открытые позиции по "другим" инструментам. Он считает как общее число уже открытых позиций так и учитывает средства связанные уже открытыми позициями по другим инсрументам. Проблемма действительно есть с тестированием на разных фреймах, т.к. в настройках тестера придется указать минимальный тестируемый фрейм, а остальные системы делать через изменение фрейма в коде (но это проблемма только кодирования систем)

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


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

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

pitero писал(а):

Вдогонку - а реверсную систему с sigScale не написать что-ли? Принудительно закрыть сделку даже если размер=0 никак нельзя?

Необходимо иметь правила полного закрытия позиций. Sell = 1; Закрывает позиции полностью не зависимо от сайза.

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



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

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

Олег подскажи вот у меня две разные системы для каждой бумаги своя, они колбасятся каждая в своем окне, но у каждой робот сделки пишет в один файл который для квика, подскажи может быть здесь конфликт? Или как это можно красивее сделать?


Последний раз редактировалось: Сергей (Вт Ноя 18, 2008 10:28 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Робот, как я понял этот http://www.russian-trader.ru/articles/automate.php
Все должно быть нормально. Возможен только один косяк. Не знаю как сработают коды если будет попытка одновременного открытия tri (если Ами такое сделает).
Но я бы сделал всеравно через АА. Только в коде записи системы надо её разделить на 2 в зависимости от символа.

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



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

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

000 писал(а):
Робот, как я понял этот http://www.russian-trader.ru/articles/automate.php
Все должно быть нормально. Возможен только один косяк. Не знаю как сработают коды если будет попытка одновременного открытия tri (если Ами такое сделает).
Но я бы сделал всеравно через АА. Только в коде записи системы надо её разделить на 2 в зависимости от символа.

Да робот оттуда, а как через АА, только не ругайся не очень понимаю это, т.е. две системы в одном коде? Но котировки то разные? Системы в принципе похожи только параметры для каждой бумаги свои.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Цитата:

а как через АА, только не ругайся не очень понимаю это

Вот так http://www.amisite.ru/afl/exp/0001.htm
АА это Автоматический Анализатор

Цитата:

т.е. две системы в одном коде? Но котировки то разные?

Очень просто. Пишешь примерно так
Код:

if (Name() == "RIZ8")
{
 Правила системы или параметры для RIZ8
}
else if(Name() == "SPZ8")
{
 Правила системы или параметры для SPZ8
}


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



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

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

000 писал(а):
Цитата:

а как через АА, только не ругайся не очень понимаю это

Вот так http://www.amisite.ru/afl/exp/0001.htm
АА это Автоматический Анализатор

Цитата:

т.е. две системы в одном коде? Но котировки то разные?

Очень просто. Пишешь примерно так
Код:

if (Name() == "RIZ8")
{
 Правила системы или параметры для RIZ8
}
else if(Name() == "SPZ8")
{
 Правила системы или параметры для SPZ8
}


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


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

СообщениеДобавлено: Ср Ноя 19, 2008 12:03 am Ответить с цитатой Вернуться к началу

Цитата:

А на экране два разных графика?

На экране что хочешь, не влияет, в том и фишка. Главное чтобы в Ами была открыта база в которой есть эти котировки. Smile
Цитата:

И еще АА будет прогонять системы с периодичностью 1 сек или сделка будет писаться по факту поступления сигнала сигнала?

С периодичностью в 1 сек он будет проверять поступление новых сигналов (это слишком редко)?

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



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

СообщениеДобавлено: Ср Ноя 19, 2008 12:07 am Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

А на экране два разных графика?

На экране что хочешь, не влияет, в том и фишка. Главное чтобы в Ами была открыта база в которой есть эти котировки. Smile
Цитата:

И еще АА будет прогонять системы с периодичностью 1 сек или сделка будет писаться по факту поступления сигнала сигнала?

С периодичностью в 1 сек он будет проверять поступление новых сигналов (это слишком редко)?

Да не быстро)
Просто хотелось чтобы система в реалтайме по поступлению сигнала отправляла запись, так скажем по собственной инициативе, а не когда ее АА проверит. Я вот думаю есть ли такое средство чтобы в один код как бы подтягивало обе котировки в реалтайме, надеюсь понял что я хотел написать
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Ноя 19, 2008 12:23 am Ответить с цитатой Вернуться к началу

Цитата:

Да не быстро)

Фиг знает. Может можно и быстрее... Написать не 1sec? а 0,5sec я не пробовал...

Цитата:

Я вот думаю есть ли такое средство чтобы в один код как бы подтягивало обе котировки в реалтайме

В принципе можно. Функция foreign()

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


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

СообщениеДобавлено: Ср Ноя 19, 2008 12:30 am Ответить с цитатой Вернуться к началу

Цитата:

Фиг знает. Может можно и быстрее... Написать не 1sec? а 0,5sec я не пробовал...

Попробовал. Быстрее не получается.

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



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

СообщениеДобавлено: Ср Ноя 19, 2008 12:31 am Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

Да не быстро)

Фиг знает. Может можно и быстрее... Написать не 1sec? а 0,5sec я не пробовал...

Цитата:

Я вот думаю есть ли такое средство чтобы в один код как бы подтягивало обе котировки в реалтайме

В принципе можно. Функция foreign()

Во точно, пойду разбираться, спасибо Олег
if (Name() == "RIZ8")
{
Правила системы или параметры для RIZ8
}
else if(Name() == "SPZ8")
{
Правила системы или параметры для SPZ8
}
Я так понял что то типа этого тока Name по менять на foreign()
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen