Автор |
Сообщение |
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Система интрадейна, допускаются несколько переворотов внутри дня.
С каждым переворотом размер риска уменьшается.
После Buy/Short RN (размер риска) проверяет кол-во входов и присваивает новые значения риска или оставляет старые:
Код: |
R = Sum(Buy OR Short, BarsSince(EndDay));
RN=R1[R]; |
На последнюю строчку ругается, что вместо R должно быть число.
Как мне обойти эту ошибку?
Код: |
StartDay = Day() != Ref(Day(),-1);
RN = IIf(StartDay,R1[1],Null); // Риск в зависимости от кол-ва входов |
Здесь вопрос в том, что мне надо в случае, если свечка не первая в дне, то RN здесь должен пропускаться не присваивая никакого значения (пока поставил Null).
Как сделать ума не приложу. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В данном случае у тебя R это массив. А индексом массива R1 должно быть число.
Непонятно что такое R1... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
R1 это размер риска.
Зависит от кол-ва входов в день.
С утра RN приравнивается R1[1],
после первого входа, RN меняется и приравнивается к R1[2] и т.д.
А может быть индексом не число, а переменная? |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну напиши поточнее (можно без конкретных цифр) что такое R1/ Тогда я напишу как сделать. Пока понять не могу... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Код: |
Capital = Param("Capital",10000,5000,20000,500);
Risk = Param("Risk",0.05,0.01,0.1,0.005);
R1[1] = Risk * 0.5 * Capital;
R1[2] = Risk * 0.3 * Capital;
R1[3] = Risk * 0.2 * Capital;
|
Risk
Это риск в день.
R1[]
Это процент от капитала, на который возможна просадка по сделке внутри дня.
Изначально это были просто R1=.. R2=... R3=...
Сделал массивом, чтобы можно было вставлять переменные, а не числа.
Переменной является RN - кол-во входов. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Всё, решил этот вопрос. Практически.
Код: |
R = Sum(Buy OR Short, BarsSince(EndDay));
RN=IIf(R=1,R1[1],IIf(R=2,R1[2],IIf(R=3,R1[3],0)));
Pose = RN/BuyPrice;
PositionSize = Pose*MarginDeposit; |
Но встаёт вопрос как назначить размер риска (R1[1]) с самого утра, пока ещё не было ни одного сигнала.
Додумался пока до такой формулировки, но в нём изъян - Null. Поэтому код нерабочий
Надо как-то по-другому...
Код: |
StartDay = Day() != Ref(Day(),-1);
RN = IIf(StartDay,R1[1],Null); |
|
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот так правильно
Код: |
RN=IIf(R==1,R1[1],IIf(R==2,R1[2],IIf(R==3,R1[3],0)));
|
Цитата: |
Но встаёт вопрос как назначить размер риска (R1[1]) с самого утра, пока ещё не было ни одного сигнала.
|
А вто так почему нельзя?
Код: |
RN=IIf(R==0,блабла,IIf(R==1,блабла1,IIf(R==2,блабла3,0)));
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Так в том-то и дело, что R инициируется только после сигналов Buy/Short в последней части кода.
А в начале кода инициируется RN для того, чтобы определить размер позы перед входом.
Поставить R в начало кода нельзя, т.к. не инициированы Buy и Short.
Да и с утра вот этот отрезок "IIf(R==1,блабла1,IIf(R==2,блабла3,0))); "
не нужен.
С утра надо только RN присвоить R1[1].
Я решил изменить ввиду бесполезности - вместо массива R1[] будут три переменные R1, R2, R3. (для информации на будущее) |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Кстати ещё вопрос, если хочу создать новую базу данных (для другого инструмента), то мне надо при создании менять папку, чтобы новая база хранилась не в перемешку со старой?
Сейчас путь: F:\Program Files\AmiBroker5\MyNewData |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Tim писал(а): |
Так в том-то и дело, что R инициируется только после сигналов Buy/Short в последней части кода.
А в начале кода инициируется RN для того, чтобы определить размер позы перед входом.
Поставить R в начало кода нельзя, т.к. не инициированы Buy и Short.
|
Угу. Вроде понял. Так ты сперва задай Buy/Sell/Short/Cover а потом уже считай сколько входов и задавай сайз. Сайз не обязательно задавать до сигнала сделки. Можно в любом месте. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Tim писал(а): |
Кстати ещё вопрос, если хочу создать новую базу данных (для другого инструмента), то мне надо при создании менять папку, чтобы новая база хранилась не в перемешку со старой?
Сейчас путь: F:\Program Files\AmiBroker5\MyNewData |
Надо менять. Каждая БД в своей папке. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
000 писал(а): |
Угу. Вроде понял. Так ты сперва задай Buy/Sell/Short/Cover а потом уже считай сколько входов и задавай сайз. Сайз не обязательно задавать до сигнала сделки. Можно в любом месте. |
Вооот!!! Вот этого я так долго ждал!
Про сайз (positionsize). Спасибо!
А это касается видимо не только сайза, но и всех параметров, которые регулируются через AA?
Типа MarginDeposit, PointValue и т.д. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|