Автор |
Сообщение |
SlavaIv
Зарегистрирован: 01.01.2011
Сообщения: 23
|
Привет!
Уже притомился бороться с Ами... Пытаюсь управлять размером позиции по Тарпу - на основе ATR (т.е. фиксировать риск на одной сделке).
Но есть проблема: Ами игнорирует значение Equity. Т.е. не смотря на рост баланса, в сделке фигурирует не Equity, а начальный баланс - в моем случае 10000.
На рисунке видно - красным подчеркнуто - не смотря на рост баланса, размер позиции почти не меняется!
Код ниже, искал похожие проблемы на сайте - не нашел. Вариант использовать SetPositionSize( size, spsPercentOfEquity ) и подменить "size" своим расчетом не подходит, т.к. в моем случае используется более 1000 и Ами такого не понимает.
Наверняка кто-нибудь уже на это натыкался.. Что делать?
Код: |
// ==== Открываем и закрываем позиции
Buy = ExRem( TrueBuy, TrueSell);
Short = ExRem( TrueShort, TrueCover);
Sell = TrueSell;
Cover = TrueCover;
// ==== Расчет Размера Лота
// ==== управления размером позиции по Тарпу на основе ATR
MyEquity = IIf( Ref(Equity(0), -1) == 0 OR Ref(Equity(0), -1) == Null, 10000, Ref(Equity(0), -1) ); // здесь, поскольку нет Equity в первой сделке, ИСПОЛЬЗУЮ НАЧАЛЬНЫЙ БАЛАНС
StopAmount = KoefATR*MA(ATR(1), PeriodATRSL)/Point; // SL в пунктах
Risk = 0.05; // рискуем ...% средств в сделке
Lot = Risk*MyEquity/(StopAmount*PriceLot); // где PriceLot - стоимость 1 пункта для 1 лота
PositionSize = Lot;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Попробуй вместо PositionSize = Lot; и всего гемороя с расчетом эквити в коде использовать
SetPositionSize( size, method )
Metod
spsPercentOfEquity (=2) - объем выраженный как процент от эквити портфеля |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SlavaIv
Зарегистрирован: 01.01.2011
Сообщения: 23
|
000 писал(а): |
Попробуй вместо PositionSize = Lot; и всего гемороя с расчетом эквити в коде использовать
SetPositionSize( size, method )
Metod
spsPercentOfEquity (=2) - объем выраженный как процент от эквити портфеля |
"spsPercentOfEquity (=2) - объем выраженный как процент от эквити портфеля (размер должен быть ..100 (для обычных счетов) или .1000 для маржинальных счетов) ".
Я писал выше - не подходит.
Это связано с тем, что счет маржинальный и стопы на минутках маленькие, в результате надо использовать большой процент от эквити - раза в 4 больше разрешаемого Ами (т.е. около 4000).
Больше 1000, увы, Ами вер. 5.30 "не переваривает"..
Есть еще какие-нибудь варианты для не программиста? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
что мешает использовать для теста не маржинальную торговлю. Добавь денег тестеру и тестируй без плеча.
В общем никакой разницы. Средную сделку видно, эквити похожа... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SlavaIv
Зарегистрирован: 01.01.2011
Сообщения: 23
|
000 писал(а): |
что мешает использовать для теста не маржинальную торговлю. Добавь денег тестеру и тестируй без плеча.
В общем никакой разницы. Средную сделку видно, эквити похожа... |
Попробовал - ерунда получается.
Если использую торговлю с плечом и вхожу на максимуме - SetPositionSize( 1000, spsPercentOfEquity) - то это у меня 2% от эквити, имею небольшую прибыль и небольшую просадку.
Если использую торговлю без плеча, вхожу на максимуме - SetPositionSize( 100, spsPercentOfEquity) и ПОДОБРАВ величину начальной эквити - имею примерно ту же прибыль и МИКРОСКОПИЧЕСКУЮ просадку. Т.е. эквити похожа, а относительная просадка - полная брехня.
И это не удивительно - торговля с плечом и без плеча разные вещи.
Особенность минуток в том, что в прибыли большую долю имеет спред/комиссия/проскальзывание брокера. И величиной прибыли необходимо покрыть все эти издержки.
Т.е. минутки требуют ТОНКОЙ НАСТРОЙКИ:
1. если будем входить малой величиной ДОЛИ ОТ баланса, то издержки "сожрут" прибыль и будет убыток
2. а если зайдем слишком большой ДОЛЕЙ ОТ баланса, то получим слишком большую просадку.
Имитация с помощью немаржинальной торговли не годится, т.к. может сымитировать только доход, но не нюансы важные для выживания (относительную просадку, например).
Олег, неужели нет какого-то другого решения?
И еще вопрос - Ами принципиально не дает возможности обратиться в тестере к линии эквити? Или все же это как-то можно сделать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А если тестировать в Futures mode и Margin deposit задать отрицательный.
Цитата: |
The margin is the amount of money required to open single contract position. You can specify per-symbol margin in the Symbol-Information page (picture above). Positive values describe margin value in dollars, while negative express margin value as percentage of contract price. Margin value of zero is used for stocks (no margin).
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SlavaIv
Зарегистрирован: 01.01.2011
Сообщения: 23
|
000 писал(а): |
А если тестировать в Futures mode и Margin deposit задать отрицательный.
Цитата: |
The margin is the amount of money required to open single contract position. You can specify per-symbol margin in the Symbol-Information page (picture above). Positive values describe margin value in dollars, while negative express margin value as percentage of contract price. Margin value of zero is used for stocks (no margin).
|
|
Помогло ниже написанное от процитированного тобой из справки (раздел "Back-testing systems for futures contracts"), спасибо!
Я думал, что Ами сам рассчитывает MarginDeposit. Это было опрометчиво!
Сделал расчет: MarginDeposit = Open*Contract/Leverage. И все сработало!
p.s. для инфо:
1. у меня Open и он умножается, т.к. расчет ведется по ценам открытия и Доллар США в валютной паре стоит на втором месте
2. Contract - объем контракта в базовой валюте
3. Leverage - плечо (например, 100).
Еще раз Спасибо! - По крайней мере для меня, ты готовых решений не даешь, но подталкиваешь к правильному решению!!!
---
Вячеслав |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|