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



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

СообщениеДобавлено: Пн Апр 06, 2009 1:59 pm Ответить с цитатой Вернуться к началу

как узнать в AFL во время бектеста в позе находится система или нет?
(примечание: система также выходит по трейлинг-стопам).
Посмотреть профиль Отправить личное сообщение
ID
Советник


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

СообщениеДобавлено: Пн Апр 06, 2009 2:03 pm Ответить с цитатой Вернуться к началу

Это зависит от системы.
Попробуй так:

Код:
buy = cond1;
sell = cond2;
v_pose = flip(buy,sell);
plot(v_pose,"",colorred,2);
Посмотреть профиль Отправить личное сообщение
Novi4ok



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

СообщениеДобавлено: Пн Апр 06, 2009 2:26 pm Ответить с цитатой Вернуться к началу

нет, я хочу узнать до инициализации buy sell
в позе ли она с прошлых баров.
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Апр 06, 2009 2:38 pm Ответить с цитатой Вернуться к началу

Novi4ok писал(а):
нет, я хочу узнать до инициализации buy sell
в позе ли она с прошлых баров.


Переделай под себя

Код:
Top = Ref(H, -1);
Bot = Ref(L, -1);
m = EMA(H,3);
Buy =  H>Top AND m>=Ref(m,-1);
Sell = Bot>C AND Ref(m,-1)>=m;
Short = Sell;
Cover = Buy;


Equity(1);

count1 = BarsSince(Buy);
count2 = BarsSince(Short);
FlipBuy = Flip(Buy, Sell);
FlipShort = Flip(Short, Cover);
BuyStart = IIf(FlipBuy, Ref(BuyPrice,-count1),0 );
ShortStart = IIf(FlipShort, Ref(ShortPrice,-count2) ,0 );
Buyx = IIf(FlipBuy, count1 ,0 );
Shortx = IIf(FlipShort, count2 ,0 );
///////////// Рисуем всякое ///////////////////////////////////


SetChartOptions(0,chartShowArrows|chartShowDates);

Title = Name() + StrFormat("{{INTERVAL}}") + Date()+"\n\n" +

"Buy баров :" +Buyx+"\n"+
"Buy цена :" +BuyStart+"\n"+
"Для лонга :" +Top+"\n"+
"Short баров :" +Shortx+"\n"+
"Short цена :" +ShortStart+"\n"+
"Для шорта :" +Bot+"\n"+
"m :" +m+"\n"+
"h :" +H+"\n"+
"o :" +O+"\n";



Plot(m,"m", 1,1);

Plot(Top,"Top", 4,1);
Plot(Bot,"Bot", 6,1);
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Novi4ok



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

СообщениеДобавлено: Пн Апр 06, 2009 3:26 pm Ответить с цитатой Вернуться к началу

Цитата:
Переделай под себя


ну тут опять сначала инициализируются Buy, Sell
а потом уже к ним обращение.

а мне нужно узнать в позе ли система, БЕЗ обращений к Buy Sell, т.к. я их еще сначала не инициализировал
осложнение еще и в том, что система дает сигналы по ApplyStop трейлингу
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Апр 06, 2009 9:31 pm Ответить с цитатой Вернуться к началу

2 варианта.
Либо полностью переписать систему через цикл в котором расчеты всех трейлигов и т.п. делать ручками без использования ApplyStop(). Там же в цикле легко вычисляется в позе система или нет.
Либо сделать это при помощи advanded portfolio Backtester Interface. Это вроде совсем не тружно, но я с ним не разбирался (не было необходимости), только мельком просмотрел

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Novi4ok писал(а):
Цитата:
Переделай под себя


ну тут опять сначала инициализируются Buy, Sell
а потом уже к ним обращение.

а мне нужно узнать в позе ли система, БЕЗ обращений к Buy Sell, т.к. я их еще сначала не инициализировал
осложнение еще и в том, что система дает сигналы по ApplyStop трейлингу


Ты похоже что то не понимаеш кинь код не изменяя на чарт и посмотри как он работает на истории, ля этого тыкай на разные бары, а стоп действительно проще переписать через цикл

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

СообщениеДобавлено: Вт Апр 07, 2009 4:34 pm Ответить с цитатой Вернуться к началу

А вот еще подумал. Если использовать
SetPositionSize()
spsPercentOfPosition (=3) - объем выражается как процент от объема уже открытой позиции (для SCALING IN и SCALING OUT)
и таким макаром проверять в позе система или нет?
Типа пишем SetPositionSize(100, 3); ипотом проверяем чему равна positionsize. Если не равнв нолю, то система в позе.

С функцией Equity() такой метод конечно не сработает точно... Да и вообще не факт, что сработает.

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



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

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

000 писал(а):

Типа пишем SetPositionSize(100, 3); ипотом проверяем чему равна positionsize. Если не равнв нолю, то система в позе.

ээээ и как же это проверить?
мне ж как раз и нужно проверить positionsize, точнее определить, есть она или нет.

мне нужно что-то типа функции GetPositionSize, но такой нету Sad

а что значит в цикле переделать - как я тогда это в бектестере запущу?

и еще: к описанию функции SetPositionSize написано, что она возвращает МАССИВ. а вот что за массив она возвращает не сказано...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Апр 08, 2009 1:16 am Ответить с цитатой Вернуться к началу

Не. Идея с spsPercentOfPosition (=3) не прокатит...

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


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

СообщениеДобавлено: Ср Апр 08, 2009 1:35 am Ответить с цитатой Вернуться к началу

Novi4ok писал(а):

мне ж как раз и нужно проверить positionsize, точнее определить, есть она или нет.

мне нужно что-то типа функции GetPositionSize, но такой нету Sad

Изначльно у тебя есть какие то сигналы (иначе позиции не будет)
Пускай выход по ним через стопы. Активизируешь стопы при помощи Функции Equity(1, 0); и потом спокойно определяешь в позе сейчас система или нет
Код:
InPos = Flip(Buy, Sell);

Функция Equity() добавит в sell/cover сигналы в тех местах где сработали стопы.
Потом при необходимости можно изменить правила покупки/продажи.

Novi4ok писал(а):

а что значит в цикле переделать - как я тогда это в бектестере запущу?

Простой способ написания ТС в Ами подразумевает использование функций работающих сразу со всем массивом цен. Но можно и пройти от самого первого бара до самого последнего попутно выполняя необходимые расчеты. Это делается так
Код:
for( i = 1; i < BarCount; i++ )
{
   // тут код который расчитывается от бара к бару
}

Такой код прекрасно запускается в тестере.
Novi4ok писал(а):

и еще: к описанию функции SetPositionSize написано, что она возвращает МАССИВ. а вот что за массив она возвращает не сказано...

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

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



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

СообщениеДобавлено: Ср Апр 08, 2009 5:48 pm Ответить с цитатой Вернуться к началу

спасибо за ответ!
вот тут еще пришла идея,
я ж могу сигналы на sell и buy менять по ходу пьессы
или нет?
наверно, могу.
т.е. можно сначала инициализировать бай и селл всякой ерундой:
buy = когда рак на горе свистнет
sell = после дождичка в четверг

т.е. условиями, которые никогда не произойдут,

а уж потом, после определения в позе система или нет flip ом
ввести нормальные условия для buy и sell

например, будет ли работать такой код:
buy = c>1000000 (сто тыщ миллионов)

buy = c>ref(c,-1)

по идее система должна купиться по условию buy = c>ref(c,-1)
(а первое условие заведомо невыполнимо)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Апр 08, 2009 8:55 pm Ответить с цитатой Вернуться к началу

Менять по ходу пьессы сигналы можно.
Только непонятно. Если изначально условия Buy/Short будут липовые то как - же система окажется в позе?

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



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

СообщениеДобавлено: Чт Апр 09, 2009 12:07 am Ответить с цитатой Вернуться к началу

дело в том, что сигнал на вход у меня реальный
а сигнал на выход должен определиться с началом позы и больше не меняться
а у меня получается что все ссылки на бары относительны и поэтому сигнал на выход уползает вместе с барами
ну например Sell = ref(c,-20)
эти -20 постоянно сползают, т.к. С же постоянно меняется!

т.е. мне нужно знать в позе система или нет
и если система в позе, тогда ставить выход - и чтобы он не сползал!

--
кстати, если я тестирую на 5минутках, и применяю ApplyStop -
по цене стопа - он вообще учитывает как цена внутри 5минутки перемещалась?

а то столкнулся с невероятным накручиванием ЭКВИТИ:
покупаю(продаю) по цене закрытия и тут же тейкаюсь в этом баре по ApplyStop.
безпроигрышная "виртуальная" стратегия основанная на ошибке программирования: цена закрытия отличается от внутрибарного диапазона.


-
и еще - знал, но забыл - как в сообщения выдавать содержание переменных (для отладки и для СОВЕТНИКА)?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 09, 2009 1:39 am Ответить с цитатой Вернуться к началу

Novi4ok писал(а):
дело в том, что сигнал на вход у меня реальный
а сигнал на выход должен определиться с началом позы и больше не меняться
а у меня получается что все ссылки на бары относительны и поэтому сигнал на выход уползает вместе с барами
ну например Sell = ref(c,-20)
эти -20 постоянно сползают, т.к. С же постоянно меняется!

т.е. мне нужно знать в позе система или нет
и если система в позе, тогда ставить выход - и чтобы он не сползал!

В таком случае самое правильное использовать именно ApplyStop();
Он сразу после входа ставит условие выхода и может его не менять, а может и менять в зависимости от параметров.


Novi4ok писал(а):

кстати, если я тестирую на 5минутках, и применяю ApplyStop -
по цене стопа - он вообще учитывает как цена внутри 5минутки перемещалась?

Конечно нет
Novi4ok писал(а):

а то столкнулся с невероятным накручиванием ЭКВИТИ:
покупаю(продаю) по цене закрытия и тут же тейкаюсь в этом баре по ApplyStop.

Это от того, что в настройках непонятно зачем поставил галку Activate stops immediatly
Если вход по Close, то ненадо эту галку ставить.

Novi4ok писал(а):

и еще - знал, но забыл - как в сообщения выдавать содержание переменных (для отладки и для СОВЕТНИКА)?

Функция POPUPWINDOW()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen