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



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

СообщениеДобавлено: Пн Сен 24, 2012 3:27 pm Ответить с цитатой Вернуться к началу

Приветствую!

Я не могу найти опцию в Ami, где можно нарисовать импортировать все кривую капитала (включая те дни, в которых система была вне рынка).

Пример:

Стратегия основана на пересечении кривых капитала двух стратегий.

Банальный пример: берем стратегию пересечения средних смотрим, как изменяется кривая капитала. Строим график кривой капитала
Берем вторую стратегию - Стохастик. Тестируем. Рисуем и там кривую капитала.

Дальше накладываем две кривые капитала одну на другую.

Как видно одна будет работат хорошо в тренде вторая во флете.

И дальше начинаем торговать. Соответственно, торгуем по первой стратегии, а когда пересекаются кривая капитала опускается ниже второй кривой мы торгуем по второй стратегии.

Мне нужно эту идею протестировать на исторических данных.

Вопрос №1: Можно ли забить то что я описал в код AFL?
Вопрос №2: Можно ли хотя бы экспортировать в Excel сделки по днях, в том числе с учетом тех дней, в которых система была вне рынка (см. рис ниже, взял его с MetaStock, закладка Equity)? Тогда можно бы было наложить две кривые капитала одну на другую.

Заранее благодарю.
Посмотреть профиль Отправить личное сообщение
Mechanic



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

СообщениеДобавлено: Пн Сен 24, 2012 9:48 pm Ответить с цитатой Вернуться к началу

Портфельный тестер создаёт новый инструмент "~~~EQUITY", в котором, собственно, эквити и находится. Прогоните тест первой системы, переименуйте созданную "~~~EQUITY" в "Stoch_Equity" (только напрямую символ переименовать нельзя, а создайте новый символ с нужным именем и скопируйте в него данные из "~~~EQUITY" через Symbol->Merge), потом то же самое сделайте со второй системой. Получите два символа с эквити ваших систем, к которым можно обращаться из кода через Foreign() - отображать на графике, тестировать пересечение и т.д. Их же и в текстовик можно скриптом перегнать, как любой другой символ.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Вт Сен 25, 2012 1:01 am Ответить с цитатой Вернуться к началу

Можно и по другому.
Код:
// Система 1
Buy = Buy1 = ...;
Sell = Sell1 = ...;

Eq1 = Equity(1);

Buy = 0;
Sell = 0;

// Система 2
Buy = Buy2 = ...;
Sell = Sell2 =...;

Eq2 = Equity(1);

Buy = 0;
Sell = 0;

// Система по эквити
Buy = ...Eq1...Eq2...Buy1...Buy2;
Sell = ...Eq1...Eq2...Sell1...Sell2;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.

Последний раз редактировалось: 000 (Вт Сен 25, 2012 10:56 am), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Mechanic



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

СообщениеДобавлено: Вт Сен 25, 2012 10:26 am Ответить с цитатой Вернуться к началу

000 писал(а):
Можно и по другому.

Так удобнее, конечно, но работать будет только если тестируется один инструмент. Если речь о тесте портфеля, то только танцы с бубном через ~~~Equity.

Кстати, зачем в твоём примере Equity(2)? Опечатка поди?
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Вт Сен 25, 2012 10:56 am Ответить с цитатой Вернуться к началу

С замечанием согласен.
Точно опечатка. Исправил.

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



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

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

Спасибо за совет.

Только не совсем понятно что вписать после //Система по Equity?

/ Система по Equity
Buy = Eq1; Eq2; Buy1; Buy2;
Sell = ...Eq1...Eq2...Sell1...Sell2;[/code]

Сейчас код выгладит так:

Код:
// Trix 1

period1=Optimize("period1",3,3,30,5);
period2=Optimize("period2",15,30,60,5);

Buy = buy1= Cross(Trix(period1), Trix(period2)) AND Trix(period1)>Trix(60);

ApplyStop(stopTypeLoss,stopModePoint,2*ATR(10),True );

Sell= sell1 = Cross(Trix(period2),Trix(period1)) AND Trix(period1)>Trix(60);


Eq1 = Equity(1);

Buy = 0;
Sell = 0;

// Stoch 2
period1=  Optimize("period1",90,70,100,2);
period2= Optimize("period2",7,1,30,2);


Buy = Ref(StochD(14,3),-1)<period1 AND StochD(14,3)>period1;
ApplyStop(stopTypeLoss,stopModePoint,2*ATR(14),1);
Sell = Cross(StochD(14,3),period1)OR Cross(StochD(14,3),period2);


Short = Ref(StochD(14,3),-1)> period2 AND (StochD(14,3)<period2);
ApplyStop(stopTypeLoss,stopModePoint,2*ATR(14),1);
Cover = Cross(StochD(14,3),period2)OR Cross(StochD(14,3),period1);


Eq2 = Equity(2);

Buy = 0;
Sell = 0;

// Система по Equity
Buy = Eq1; Eq2; Buy1; Buy2;
Sell = ...Eq1...Eq2...Sell1...Sell2;
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Хм. ApplyStop(stopTypeLoss,stopModePoint,2*ATR(14),1);...
Откровенно говоря не знаю как анулировать эту функцию.

У тебя есть ошибка.
Во второй системе пиши period3 и period4

А в конце типа так

Код:
Buy = IIf(Eq1 > Eq2, Buy1, Buy2);

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


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

СообщениеДобавлено: Вт Сен 25, 2012 11:21 am Ответить с цитатой Вернуться к началу

По поводу анулирования стопов предыдущей системы.
Попробуй там где
Код:
Buy = 0;
Sell = 0;


Еще добавить
Код:
ApplyStop(stopTypeLoss,stopModeDisable,2*ATR(14),1);

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



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

СообщениеДобавлено: Вт Сен 25, 2012 11:43 am Ответить с цитатой Вернуться к началу

Супер, заработало!!!!

Спасибо! Smile

Только хотелось бы еще проверить:
1. Был ли выход по стопу и когда на графике (ApplyStop)
2. Когда работала первая система, а когда вторая?

Можно ли это отобразить на графике?
Посмотреть профиль Отправить личное сообщение
pylyp



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

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

Да, что-то мне кажется, что ApplyStop она не захватила. См. рисунок...

Хотя я ApplyStop и прописал. Сейчас код выглядит вот так:
Код:
// Trix 1

period1=Optimize("period1",3,3,30,5);
period2=Optimize("period2",15,30,60,5);

Buy = buy1= Cross(Trix(period1), Trix(period2)) AND Trix(period1)>Trix(60);

ApplyStop(stopTypeLoss,stopModePoint,2*ATR(10),True );

Sell= sell1 = Cross(Trix(period2),Trix(period1)) AND Trix(period1)>Trix(60);


Eq1 = Equity(1);

Buy = 0;
Sell = 0;

ApplyStop(stopTypeLoss,stopModeDisable,2*ATR(14),1);

// Stoch 2
period1=  Optimize("period1",90,70,100,2);
period2= Optimize("period2",7,1,30,2);


Buy = Buy2 = Ref(StochD(14,3),-1)<period1 AND StochD(14,3)>period1;
ApplyStop(stopTypeLoss,stopModePoint,2*ATR(14),1);
Sell = Sell2 = Cross(StochD(14,3),period1)OR Cross(StochD(14,3),period2);


Short = Ref(StochD(14,3),-1)> period2 AND (StochD(14,3)<period2);
ApplyStop(stopTypeLoss,stopModePoint,2*ATR(14),1);
Cover = Cross(StochD(14,3),period2)OR Cross(StochD(14,3),period1);


Eq2 = Equity(2);

Buy = 0;
Sell = 0;
ApplyStop(stopTypeLoss,stopModeDisable,2*ATR(14),1);

// Система по Equity


Buy = IIf(Eq1>Eq2, Buy1, Buy2);
Sell = IIf(Eq1 > Eq2, Sell1, Sell2);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Цитата:

в данном место должен был сработать следящий стоп. А он не сработал.

А у тебя в коде вроде нет трейлинга....

Для того, чтобы смотреть где какая система работает надо написать специальный индикатор.... Его не сложно сделать из этой системы.

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



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

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

Так..

Поменял ApplyStop. Теперь он выглядит так:

ApplyStop(stopTypeTrailing,stopModePoint,2*ATR(10),True );


Все равно не срабатывает.

Формула трелинга должна выглядеть так:
1. (Цена покупки-2*ATR)="стоп лосс". Фиксируем эту разницу. Этот стоп лосс остается постоянным на протяжении всей сделки.
2. Далее, начиная со следующего бара от максимума отнимаем "стоп лосс" (СЛ).
3. Если цена идет вверх - подтягиваем СЛ. Если цена идет вниз или остается на месте - СЛ не изменяем. Когда цена пересекает СЛ - закрываем позицию.

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


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

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

Если фиксируем, то должно быть Volatile = FALSE

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



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

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

000 писал(а):
Если фиксируем, то должно быть Volatile = FALSE


Ок. подставил - пошло.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen