Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 След. |
Автор |
Сообщение |
Disperados
Зарегистрирован: 02.03.2008
Сообщения: 10
|
я б ни за что не допер |
|
|
Посмотреть профиль Отправить личное сообщение |
|
iddqd
Зарегистрирован: 10.02.2009
Сообщения: 45
|
хочу получить на 5-мин таймфрейме (или другом менее часа) значение цены открытия часа. использую конструкцию след вида:
HOpen = TimeFrameGetPrice( "O", inHourly, 0, expandFirst);
для наглядности сделал индикатор
GraphXSpace = 10;
SetBarsRequired(100000,100000);
HOpen = TimeFrameGetPrice( "O", inHourly, 0, expandFirst);
Plot(C,"c",1,64);
Plot(HOpen,"HOpen",colorBlue,1);
проблема заключается в следующем - при просмотре индикатора на 5-мин таймфрейме видно что цена открытия часового бара правильно отображается только через полчаса после начала часа
точнее оно смещено на полчаса, тк это же значение переходит на первые полчаса следующего часового бара
как сделать чтобы на начало часа получить правильное значение цены открытия |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сейчас Ами под рукой нет, поэтому точно глянуть не могу. но это скорее всего происходит от того, что начало сессии в настройках БД стоит 30мин. и в настройках Ами установлено типа выранивать фреймы по работе рынка. Если сам найдешь - напиши, а так я вечером точно отвечу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
iddqd
Зарегистрирован: 10.02.2009
Сообщения: 45
|
000 писал(а): |
Сейчас Ами под рукой нет, поэтому точно глянуть не могу. но это скорее всего происходит от того, что начало сессии в настройках БД стоит 30мин. и в настройках Ами установлено типа выранивать фреймы по работе рынка. Если сам найдешь - напиши, а так я вечером точно отвечу. |
ты был прав, действительно в настройках бд начало сессии 9,30.
всегда правил при создании, а тут очевидно забыл
спасибо за помощь |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
Как определить, каким был последний сигнал от системы, либо текущую позицию (к примеру лонг либо без позиции)?
Проблема в том, что тестируя такой код иногда получаю ложные сигналы на продажу (лонг открыт не был, а сигналы на продажу поступают).
Buy = (Cross( pb , MA(pb, maper)) AND Hour() < 18);
Sell = (Cross( MA(pb, maper), pb));
Кстати интересно, как такие сигналы учитываются при подсчете profit'а. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Саня писал(а): |
Как определить, каким был последний сигнал от системы, либо текущую позицию (к примеру лонг либо без позиции)?
Проблема в том, что тестируя такой код иногда получаю ложные сигналы на продажу (лонг открыт не был, а сигналы на продажу поступают).
Buy = (Cross( pb , MA(pb, maper)) AND Hour() < 1;
Sell = (Cross( MA(pb, maper), pb));
Кстати интересно, как такие сигналы учитываются при подсчете profit'а. |
Посмотрел ваш пост, переменных у вас две, появилась идея как протестировать используя разные массивы, вдруг пригодиться, массивы можно заменить например на различные формулы расчета переменных, типа вместо o (h+l)/2, c (c+o)/2 и т.д.:
b = Optimize("b", 1, 1, 4, 1);
pb = iif(b==1,o,iif(b==2,c,iif(b==3,h,iif(b==4,l,0)))); |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
commenced писал(а): |
Посмотрел ваш пост, переменных у вас две, появилась идея как протестировать используя разные массивы, вдруг пригодиться, массивы можно заменить например на различные формулы расчета переменных, типа вместо o (h+l)/2, c (c+o)/2 и т.д.:
b = Optimize("b", 1, 1, 4, 1);
pb = iif(b==1,o,iif(b==2,c,iif(b==3,h,iif(b==4,l,0)))); |
Спасибо за ответ! Но честно говоря не понимаю, как это может помочь.
Нужно что-то такое:
Buy = (Cross( pb , MA(pb, maper)) AND Hour() < 18);
Sell = (Cross( MA(pb, maper), pb) AND lastSignalBuy);
Вопрос в том, что использовать как lastSignalBuy? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Саня писал(а): |
commenced писал(а): |
Посмотрел ваш пост, переменных у вас две, появилась идея как протестировать используя разные массивы, вдруг пригодиться, массивы можно заменить например на различные формулы расчета переменных, типа вместо o (h+l)/2, c (c+o)/2 и т.д.:
b = Optimize("b", 1, 1, 4, 1);
pb = iif(b==1,o,iif(b==2,c,iif(b==3,h,iif(b==4,l,0)))); |
Спасибо за ответ! Но честно говоря не понимаю, как это может помочь.
Нужно что-то такое:
Buy = (Cross( pb , MA(pb, maper)) AND Hour() < 1;
Sell = (Cross( MA(pb, maper), pb) AND lastSignalBuy);
Вопрос в том, что использовать как lastSignalBuy? |
Отвлекся малость от сути после правил покупки и продажы допиши
Equity(1);
можно также использовать
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Разницу между ними почитай в хелпе, Олег его перевел и разместил на сайте. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
commenced писал(а): |
Отвлекся малость от сути после правил покупки и продажы допиши
Equity(1);
можно также использовать
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Разницу между ними почитай в хелпе, Олег его перевел и разместил на сайте. |
Заработала! Спасибо за помощь! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Саня писал(а): |
Как определить, каким был последний сигнал от системы, либо текущую позицию (к примеру лонг либо без позиции)?
Проблема в том, что тестируя такой код иногда получаю ложные сигналы на продажу (лонг открыт не был, а сигналы на продажу поступают).
Buy = (Cross( pb , MA(pb, maper)) AND Hour() < 1;
Sell = (Cross( MA(pb, maper), pb));
Кстати интересно, как такие сигналы учитываются при подсчете profit'а. |
При тестировании "лишние" сигналы игнорируются. Больше того, при тестировании массивы сделок (buy/sell/short/cover) пересчитываются и ненужные сигналы удаляются. Для того, чтобы убрать эти "лишние" сигналы достаточно просто добавить в код функцию Equity()
В двух словах так...
ps Вот так всегда. Открыл тему и пока занимался другими делами уже все обсудили. И ответ вроде как в воду пернул. Ну не буду удалять дабы дурь была видна |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
Вопрос касается exploration, но проблема скорее в корректности afl-кода, поэтому пишу в эту ветку. Описание ошибок в комментариях.
//...
Filter = Buy OR Sell;
AddTextColumn( IIf( Buy, "Buy", "Sell" ), "Signal" ); // <- ругается на IIf
AddColumn( Close, "Price", 1.0 );
AddColumn( IIf( Sell, SellPrice-BuyPrice, 0), "Profit", 1.2); // <- не считает профит, показывает только нули |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Саня писал(а): |
Вопрос касается exploration, но проблема скорее в корректности afl-кода, поэтому пишу в эту ветку. Описание ошибок в комментариях.
//...
Filter = Buy OR Sell;
AddTextColumn( IIf( Buy, "Buy", "Sell" ), "Signal" ); // <- ругается на IIf
|
В хелпере по функции AddTextColumn() написано
Цитата: |
Пожалуйста отметье, что AddTextColumn имеет параметром единственную строку , так что Вы можете отобразить только текст не изменяющийся на протяжении ценового массива.
|
А у тебя текст зависит от сделки, а сделки на протяжении массива меняются и текст соответственно меняется. Вот он и ругается.
Саня писал(а): |
AddColumn( Close, "Price", 1.0 );
AddColumn( IIf( Sell, SellPrice-BuyPrice, 0), "Profit", 1.2); // <- не считает профит, показывает только нули |
Массивы SellPrice и BuyPrice относятся в данном случае не к текущей сделке, а к одному бару. Т.е. это цена по которой на этом баре была-бы открыта/закрыта сделка если-бы был соответствующий сигнал. Вот поэтому собственно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
Спасибо за ответ! Частично удалось исправить, только вот тип сигнала не определяется по непонятной причине. Очень не хватает аналога MSDN для AFL
Filter = Buy OR Sell;
bp = Ref( C, -BarsSince( Buy ));
sp = Ref( C, -BarsSince( Sell ));
AddTextColumn( WriteIf( Buy, "Buy", WriteIf( Sell, "Sell" , "undef")) , "Signal" ); // <- не определяет тип сигнала, постоянно возвращает undef
AddColumn( Close, "Price", 1.0, IIf( Buy, colorGreen, colorRed ));
AddColumn( IIf( Sell, sp-bp, 0), "Profit", 1.2); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нельзя вывести текст который изменяется с течением времени (на одном баре Buy, а на следующем Sell)
Если надо вывести текстом сигнал на последнем баре, то пиши типа так
Код: |
if(Buy[BarCount - 1])
{
AddTextColumn( "Buy", "Signal" );
}
else if(sell[BarCount - 1])
{
AddTextColumn( "Sell", "Signal" );
}
else
{
AddTextColumn( "undef", "Signal" );
}
|
Т.е. для каждого текста создаем свою колонку. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Саня
Зарегистрирован: 11.02.2009
Сообщения: 53
Откуда: Москва
|
000 писал(а): |
Нельзя вывести текст который изменяется с течением времени (на одном баре Buy, а на следующем Sell)
Если надо вывести текстом сигнал на последнем баре, то пиши типа так
Код: |
if(Buy[BarCount - 1])
{
AddTextColumn( "Buy", "Signal" );
}
else if(sell[BarCount - 1])
{
AddTextColumn( "Sell", "Signal" );
}
else
{
AddTextColumn( "undef", "Signal" );
}
|
Т.е. для каждого текста создаем свою колонку. |
Я дико извиняюсь, но и так тоже не работает! Не срабатывают условия и все сделки определяются как undef. При этом там точно чередуются сигналы на покупку и продажу, это видно по раскраске. В итоге решил использовать код из сэмпла
AddColumn( IIf( Buy, 66, 83 ), "Signal", formatChar ); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|