Автор |
Сообщение |
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
MAAAN779 писал(а): |
а если так:
Buy = A And (S=0); |
А суть одна же.
Но это ладно, я хочу ещё добавить.
Вводить доп.условия, чтобы предыдущая свечка имела A==0 и S==0 нельзя делать, т.к. внутри дня имеются ситуации, когда система уже вошла в шорт, а это доп.условие будет давать лишние сигналы. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
fewry
Зарегистрирован: 06.10.2009
Сообщения: 61
|
понятно. у меня такая же проблема. не знаю как решить. если не решим проблему, то я буду делать так: пусть робот торгует всем счетом, если будет повторная сделка, то у него не хватит денег . и Exrem не понадобится. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Я тут подумал, а как можно обрубить действие Exrem() с окончанием торгового дня?
Чтобы новый день Exrem начинал работать без памяти вчерашних сигналов |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
ExRem(блбла, блабла OR EndDay); |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Спасибо, самой конструкции EndDay я не нашёл.
На замену нужно что-то более конкретное.
Например, Timenum()>=234500, но у неё есть недостаток.
Если последняя свечка была раньше, а есть дни с последней свечой и в 22:30.
Либо TimeNum()==103000? Но бывают дни, когда день начинается с 18:00, не знаю почему. Возможно брак в данных. 09.08.2008 Si, например. Хотя если это 1 день, то его можно отбраковать в коде.
Сейчас буду пробовать оба варианта.
Или есть ещё какие-то команды?
Кстати вопрос возник по ходу дела, а можно реалтаймовую базу текущего фьючерса добавить к базе историческими данными (клееным фьючем)? |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Tim писал(а): |
Спасибо, самой конструкции EndDay я не нашёл. |
Такой конструкции и нет. Это я в общем смысле. Если время окончания торгов бывает разное, то для тестов можно использовать
Код: |
EndDay = Day() != Ref(Day(), 1); |
Tim писал(а): |
Кстати вопрос возник по ходу дела, а можно реалтаймовую базу текущего фьючерса добавить к базе историческими данными (клееным фьючем)? |
Запросто. В большей степени это зависит от используемого плагина данных.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
000 писал(а): |
Такой конструкции и нет. Это я в общем смысле. Если время окончания торгов бывает разное, то для тестов можно использовать
Код: |
EndDay = Day() != Ref(Day(), 1); |
Запросто. В большей степени это зависит от используемого плагина данных.... |
Спасибо, а то TimeNum не помогло.
Я тут уже пробую использовать TimeFrameExpand(TimeNum(),inDaily,lastExpand), но пока на выходе получаются некие цифры, которые ни с чем связать не получается.
Типа 173; 174,5;180..
Извини. Я сам напутал. Твой код работает на ура |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Обратил внимание, что MarginDeposit можно устанавливать через код, через настройки АА, и через Symbol-Information.
У меня он должен рассчитываться по формуле.
В коде я его прописал, но в настройках АА и в Information тоже надо проставить некую величину, хотя бы приближенную.
Вообще можно так делать? Имеет ли код более высокий приоритет, чем настройки АА и Information?
И ещё я обнаружил такую команду, как SetOption, предназначенную для изменения настроек АА. Она также имеет более высокий приоритет, чем настройки АА, выставленные вручную?
В хелпе указано:
"Sets various options in automatic analysis settings. Affects also Equity() function results. "
Ещё вопрос появился:
Код: |
Risk = Param("Risk",0.05,0.01,0.1,0.005);
AddColumn(Risk,"Risk",1.3,-1);
|
Данный код странным образом выводит 0,025 вместо 0,05.
В чём загвоздка?
Хех, а следующие строки выводят результат, как если бы Risk был равен 0,025
Код: |
R2 = Risk * 0.7 * Capital;
AddColumn(R2,"R2",1.3,-1); |
Причём не играет роли ставлю я 0.7 или 0.8 или ещё сколько-то. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Параметры установленные в коде имеют более высокий приоритет, чем установленные в настройках. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вышеприведенные коды проверил.
У меня выдают все правильно.
Либо в другом месте кода ошибка либо проверь установку параметров. В АА тоже можно менять парметры заданные в AFL. Нижная кнопка в первой колонке. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Так в том-то дело, что перед этими сторками толком ничего нет!
Код: |
Capital = Param("Capital",100000,50000,200000,5000);
AddColumn (Capital,"Capital",1.0,-1);
Risk = Param("Risk",0.05,0.01,0.1,0.005);
AddColumn(Risk,"Risk",1.3,-1);
R1 = Risk * 0.8 * Capital;
AddColumn (R1,"R1",1.0,colorDefault,colorDefault,width=-1);
|
Ticker Date/Time Capital Risk R1
SPFB.Si_080801_100304_1mi 07.08.2008 10:30:00 100000 0.025 2000
Как видно - Risk почему-то равен 0,025, а не 0,05.
Пришлось в формуле R1 вместо 0.4 ставить 0.8. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
000 писал(а): |
...В АА тоже можно менять парметры заданные в AFL. Нижная кнопка в первой колонке. |
А вот это где-где? |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
У меня один параметр, считающий кол-во входов в день, обнуляется, т.к. его инкремент совершается ближе к концовке кода, после Buy и short.
Код: |
R=IIf(Buy OR Short,R+1,IIf(EndDay,0,R)); // кол-во входов в день |
Но в одно из условий для Buy и Short в начале кода R учитывается.
Поэтому AFL ругается и требует инициализировать его в самом начале кода.
Но тогда обнуление R будет просходить на каждой свечке пока не будет нового сигнала, чего нельзя допускать.
Как не допустить обнуления?
Можно ли инкрементировать R перед расчётом условий? |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В корне не верный подход.
Ты считаешь, что результаты выполнения (прогона) AFL как то сохраняются и влияют на результаты следующего. Ничего подобного. Каждый новый прогон совершенно аналогичен предыдущему.
В данном случае надо не так.
Код: |
R = Sum(Buy OR Short, BarsSince(EndDay));
|
Не ручаюсь, что это совершенно точно, но смысл такой. Писал по памяти и не проверял. Некогда.. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|