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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Пт Мар 19, 2010 8:29 pm Ответить с цитатой Вернуться к началу

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

После 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

СообщениеДобавлено: Сб Мар 20, 2010 9:47 am Ответить с цитатой Вернуться к началу

В данном случае у тебя R это массив. А индексом массива R1 должно быть число.
Непонятно что такое R1...

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Сб Мар 20, 2010 5:53 pm Ответить с цитатой Вернуться к началу

R1 это размер риска.
Зависит от кол-ва входов в день.
С утра RN приравнивается R1[1],
после первого входа, RN меняется и приравнивается к R1[2] и т.д.

А может быть индексом не число, а переменная?

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Сб Мар 20, 2010 8:18 pm Ответить с цитатой Вернуться к началу

Ну напиши поточнее (можно без конкретных цифр) что такое R1/ Тогда я напишу как сделать. Пока понять не могу...

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Вс Мар 21, 2010 12:18 am Ответить с цитатой Вернуться к началу

Код:
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
Откуда: Дмитров

СообщениеДобавлено: Вс Мар 21, 2010 5:20 pm Ответить с цитатой Вернуться к началу

Всё, решил этот вопрос. Практически.

Код:
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. Поэтому код нерабочий Sad
Надо как-то по-другому...


Код:
StartDay = Day() != Ref(Day(),-1);
RN = IIf(StartDay,R1[1],Null);

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вс Мар 21, 2010 9:06 pm Ответить с цитатой Вернуться к началу

Вот так правильно
Код:

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
Откуда: Дмитров

СообщениеДобавлено: Вс Мар 21, 2010 9:57 pm Ответить с цитатой Вернуться к началу

Так в том-то и дело, что 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
Откуда: Дмитров

СообщениеДобавлено: Вс Мар 21, 2010 10:40 pm Ответить с цитатой Вернуться к началу

Кстати ещё вопрос, если хочу создать новую базу данных (для другого инструмента), то мне надо при создании менять папку, чтобы новая база хранилась не в перемешку со старой?

Сейчас путь: F:\Program Files\AmiBroker5\MyNewData

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вс Мар 21, 2010 11:00 pm Ответить с цитатой Вернуться к началу

Tim писал(а):
Так в том-то и дело, что R инициируется только после сигналов Buy/Short в последней части кода.
А в начале кода инициируется RN для того, чтобы определить размер позы перед входом.
Поставить R в начало кода нельзя, т.к. не инициированы Buy и Short.

Угу. Вроде понял. Так ты сперва задай Buy/Sell/Short/Cover а потом уже считай сколько входов и задавай сайз. Сайз не обязательно задавать до сигнала сделки. Можно в любом месте.

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


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

СообщениеДобавлено: Вс Мар 21, 2010 11:02 pm Ответить с цитатой Вернуться к началу

Tim писал(а):
Кстати ещё вопрос, если хочу создать новую базу данных (для другого инструмента), то мне надо при создании менять папку, чтобы новая база хранилась не в перемешку со старой?

Сейчас путь: F:\Program Files\AmiBroker5\MyNewData

Надо менять. Каждая БД в своей папке.

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Вс Мар 21, 2010 11:27 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Угу. Вроде понял. Так ты сперва задай Buy/Sell/Short/Cover а потом уже считай сколько входов и задавай сайз. Сайз не обязательно задавать до сигнала сделки. Можно в любом месте.


Вооот!!! Вот этого я так долго ждал! Smile
Про сайз (positionsize). Спасибо!

А это касается видимо не только сайза, но и всех параметров, которые регулируются через AA?
Типа MarginDeposit, PointValue и т.д.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen