Автор |
Сообщение |
MOAX
Зарегистрирован: 13.03.2011
Сообщения: 44
|
Есть две скользящие по High и Low:
Код: |
dHi = Ref( EMA( High, 13 ), -1 );
dLo = Ref( EMA( Low, 13 ), -1 );
|
Кто с циклами дружит, помогите написать трейлинг-стоп по dHi - если в короткой позиции и по dLo - если в длинной.
Сам не врублюсь никак. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А нафиг тут циклы? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MOAX
Зарегистрирован: 13.03.2011
Сообщения: 44
|
000 писал(а): |
А нафиг тут циклы? |
А как без циклов?
Я имею ввиду линию с переменной волатильностью, типа Боллинжера или ЕМА по High/Low.
На одном баре впадина, на следующем - расширение. Смысл - поймать впадину, синей линией на рисунке: |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Рассмотрим покупку.
С момента последнего сигнала на покупку прошло
Тогда пик по dLo
Код: |
HHV(dLo, BARSSINCE(Buy)) |
Соответственно
Код: |
Sell = L <= HHV(dLo, BARSSINCE(Buy)); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MOAX
Зарегистрирован: 13.03.2011
Сообщения: 44
|
000 писал(а): |
Рассмотрим покупку.
С момента последнего сигнала на покупку прошло
Тогда пик по dLo
Код: |
HHV(dLo, BARSSINCE(Buy)) |
Соответственно
Код: |
Sell = L <= HHV(dLo, BARSSINCE(Buy)); |
|
Спасибо, Олег.
Пробую так:
Код: |
dHi = HHV( dExitLong, BarsSince( Buy ));
SellPrice = Min( dHi, Open );
Sell = Cross( dHi, Low );
dLo = LLV( dExitShort, BarsSince( Short ));
CoverPrice = Max( Open, dLo );
Cover = Cross( High, dLo );
|
Потом так:
Код: |
iPosition = 0;
for( i = 1; i < BarCount; i++ )
{
if( iPosition == 0 )
{
if( Buy[i] ) // условия лонга
{
iPosition = 1; // длинная позиция
dStopPrice = dExitLong[i]; // первоначальный стоп лонга
}
else if( Short[i] ) // условия шорта
{
iPosition = -1; // короткая позиция
dStopPrice = dExitShort[i]; // первоначальный стоп шорта
}
}
else if( iPosition == 1 ) // в противном случае, если лонг
{
if( Sell[i] ) // условия закрытия лонга
{
iPosition = 0; // система не в позиции
}
else if( Low[i] <= dStopPrice ) // проверка срабатывания стопа
{
iPosition = 0;
Sell[i] = 4;
SellPrice[i] = dStopPrice;
}
else if( dStopPrice < dExitLong[i] )
{
dStopPrice = dExitLong[i];
}
}
else if( iPosition == -1 ) // в противном случае если шорт
{
if( Cover[i] ) // условия закрытия шорта
{
iPosition = 0; // система не в позиции
}
else if( High[i] >= dStopPrice ) // срабатывание стопа при шорте
{
iPosition = 0;
Cover[i] = 4;
CoverPrice[i] = dStopPrice;
}
else if( dStopPrice > dExitShort[i] )
{
dStopPrice = dExitShort[i];
}
}
}
|
Результаты разные, где ошибка?
Может быть с индексами напутал? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Способ без цикла имеет недостаток.
Если в время когда поза уже открыта появился еще сигнал на открытие в том же направлении, то дальше расчет трейлинга идет с этого момента.
Возможно дело в этом. Просмотрел твой цикл. Вроде все ОК. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|