Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Трелинг-стоп по линиям в цикле Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
MOAX



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

СообщениеДобавлено: Чт Янв 05, 2012 6:53 pm Ответить с цитатой Вернуться к началу

Есть две скользящие по High и Low:

Код:

   dHi = Ref( EMA( High, 13 ), -1 );
   dLo = Ref( EMA( Low, 13 ), -1 );


Кто с циклами дружит, помогите написать трейлинг-стоп по dHi - если в короткой позиции и по dLo - если в длинной.

Сам не врублюсь никак.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Янв 05, 2012 7:30 pm Ответить с цитатой Вернуться к началу

А нафиг тут циклы?

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



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

СообщениеДобавлено: Чт Янв 05, 2012 7:59 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А нафиг тут циклы?


А как без циклов?

Я имею ввиду линию с переменной волатильностью, типа Боллинжера или ЕМА по High/Low.
На одном баре впадина, на следующем - расширение. Смысл - поймать впадину, синей линией на рисунке:
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Янв 05, 2012 10:03 pm Ответить с цитатой Вернуться к началу

Рассмотрим покупку.
С момента последнего сигнала на покупку прошло
Код:
BARSSINCE(Buy)

Тогда пик по dLo
Код:
HHV(dLo, BARSSINCE(Buy))

Соответственно
Код:
Sell = L <= HHV(dLo, BARSSINCE(Buy));

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



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

СообщениеДобавлено: Чт Янв 05, 2012 11:30 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Рассмотрим покупку.
С момента последнего сигнала на покупку прошло
Код:
BARSSINCE(Buy)

Тогда пик по 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

СообщениеДобавлено: Чт Янв 05, 2012 11:37 pm Ответить с цитатой Вернуться к началу

Способ без цикла имеет недостаток.
Если в время когда поза уже открыта появился еще сигнал на открытие в том же направлении, то дальше расчет трейлинга идет с этого момента.
Возможно дело в этом. Просмотрел твой цикл. Вроде все ОК.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen