Автор |
Сообщение |
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Приветствую.
Имею следующий алгоритм
- вход по пробитии линии а1=ref(hhv(h,5),-1)
- выход №1 - точка входа +500
- выход №2 - пробой вниз a2=ref(llv(l,5),-1)
Для реализации выхода №1 и выхода №2 взял пример из хелпа. с точки зрения алгоритма работает вроде правильно есть неточность в выходе по таргету (№1). Я посмотрел детальный лог и каждый выход из позы был по открытию бара на котором сработало условие - что несколько неправильно. как его научить выходить именно в данной точке?
И еще один нюанс - так как линия по пробою которой был вход постоянно перемещается (при росте) то не получится ли что таргет будет отсчитываться каждый раз от нового уровня на котором будут происходить события? Я на всякие случай думал вписать exrem но тогда scaleout накрылся
Спасибо!
Код: |
for( i = 0; i < BarCount; i++ )
{
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
}
if( priceatbuy > 0 )
{
highsincebuy = Max( High[ i ], highsincebuy );
if( exit == 0 AND
High[ i ] >= FirstProfitTarget + priceatbuy+TickSize )
{
// first profit target hit - scale-out
exit = 1;
Buy[ i ] = sigScaleOut;
}
if( Low[ i ] <= a2[i]-TickSize )
{
// trailing stop hit - exit
exit = 2;
SellPrice[ i ] = Min( Open[ i ], a2[i]-TickSize );
}
if( exit >= 2 )
{
Buy[ i ] = 0;
Sell[ i ] = exit + 1; // mark appropriate exit code
exit = 0;
priceatbuy = 0; // reset price
highsincebuy = 0;
}
}
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
max писал(а): |
Приветствую.
Имею следующий алгоритм
- вход по пробитии линии а1=ref(hhv(h,5),-1)
- выход №1 - точка входа +500
- выход №2 - пробой вниз a2=ref(llv(l,5),-1)
Для реализации выхода №1 и выхода №2 взял пример из хелпа. с точки зрения алгоритма работает вроде правильно есть неточность в выходе по таргету (№1). Я посмотрел детальный лог и каждый выход из позы был по открытию бара на котором сработало условие - что несколько неправильно. как его научить выходить именно в данной точке?
И еще один нюанс - так как линия по пробою которой был вход постоянно перемещается (при росте) то не получится ли что таргет будет отсчитываться каждый раз от нового уровня на котором будут происходить события? Я на всякие случай думал вписать exrem но тогда scaleout накрылся
Спасибо!
Код: |
for( i = 0; i < BarCount; i++ )
{
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
}
if( priceatbuy > 0 )
{
highsincebuy = Max( High[ i ], highsincebuy );
if( exit == 0 AND
High[ i ] >= FirstProfitTarget + priceatbuy+TickSize )
{
// first profit target hit - scale-out
exit = 1;
Buy[ i ] = sigScaleOut;
}
if( Low[ i ] <= a2[i]-TickSize )
{
// trailing stop hit - exit
exit = 2;
SellPrice[ i ] = Min( Open[ i ], a2[i]-TickSize );
}
if( exit >= 2 )
{
Buy[ i ] = 0;
Sell[ i ] = exit + 1; // mark appropriate exit code
exit = 0;
priceatbuy = 0; // reset price
highsincebuy = 0;
}
}
} |
|
Открытие и закрытие происходит по цене установленной либо в настройках тестера http://www.amisite.ru/begin/bk_set3.htm
либо цена задана в коде при помощи переменных BuyPrice, SellPrice, ShortPrice, Cover Price.
Т.е. чтобы сделка считалась по уровню надо добавить в соответствующих местах BuyPrice[i] = ...; и т.д.
Из этого куска кода не понятно как задается таргет FirstProfitTarget и поэтому ничего по этому поводу сказать нельзя.
Ничего не мешает задавать его прямо в цикле типа
Код: |
for( i = 0; i < BarCount; i++ )
{
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
FirstProfitTarget = priceatbuy + ...;
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Открытие и закрытие происходит по цене установленной либо в настройках тестера http://www.amisite.ru/begin/bk_set3.htm
либо цена задана в коде при помощи переменных BuyPrice, SellPrice, ShortPrice, Cover Price.
Т.е. чтобы сделка считалась по уровню надо добавить в соответствующих местах BuyPrice[i] = ...; и т.д.
Из этого куска кода не понятно как задается таргет FirstProfitTarget и поэтому ничего по этому поводу сказать нельзя.
Ничего не мешает задавать его прямо в цикле типа
Код: |
for( i = 0; i < BarCount; i++ )
{
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
FirstProfitTarget = priceatbuy + ...;
}
|
|
я написал
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
FirstProfitTarget = priceatbuy + 500;
}
не помогает - все равно считает выход на правильном баре (т/е/условие на выход срабатывает) но берет опен бара
дописал тут явное указание какую цену выхода брать
if( exit == 0 AND
High[ i ] >= FirstProfitTarget +TickSize )
{
// first profit target hit - scale-out
exit = 1;
Buy[ i ] = sigScaleOut;
SellPrice[ i ] = FirstProfitTarget+TickSize;
}
Нихрена не помогает, но при этом на выходе по стоп-лоссу уровень выхода срабатывает точно пункт в пункт |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Я вообще по этому поводу не заморачивался, но:
ведь там Buy. так может писать не SellPrice а BuyPrice. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Хм. Я вообще по этому поводу не заморачивался, но:
ведь там Buy. так может писать не SellPrice а BuyPrice. |
ну ведь это команда на выход а не на вхо как я понимаю |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Написано Buy
Код: |
Buy[ i ] = sigScaleOut;
|
значит бай. Значит BuyPrice. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Написано Buy
Код: |
Buy[ i ] = sigScaleOut;
|
значит бай. Значит BuyPrice. |
как ни забавно - действительно бай только в нужн было бай-прайс для выхода указать а не для входа
иногда диву даешься насколько некоторые моменты у ами вывернутые с точки зрения логики |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну может у поляков иной взгляд на этот вопрос.
Самое главное раз команда Buy, хоть и сокращение позиции значит BuyPrice. Тут все логично |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|