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



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

СообщениеДобавлено: Сб Сен 05, 2015 4:01 pm Ответить с цитатой Вернуться к началу

Имеется следующая система с доливками, но заключается первая сделка, далее после сигнала выхода нет полного выхода, в следствии чего, дальнейшие сделки не заключаются. Помогите разобраться.


Код:
stop = Optimize("stop",10,1,20,3);
profit    = Optimize("profit",0.2,0.05,1,0.05);

Buy = Ref(Cross(MA(C,10),MA(C,20)),-1);
Sell=0;
Short = 0;
Cover=0;



at = ATR(14);
pos=0;
addlevel =0;
start_e = 0;
e=Equity(1);


for( i = 20; i < BarCount; i++ )
{
 
   if( pos == 0 AND Buy[ i ] )
    {
       BuyPrice[i]=O[i];
       pos=1;
       addlevel = BuyPrice[i]-at[i];
       start_e = e[i];
    }
   else Buy[ i ] = 0; // remove excess buy signals
   

    if( pos==1 AND  100*(e[ i ]-start_e)/e[i] >= profit*stop ) //long take profit
    {   
        Sell[ i ] =  1;
        SellPrice[i]=C[i];
        pos=0;
     }

  if(pos==1 AND 100*(e[ i ]-start_e)/e[i] <= -1 * stop) //long stop loss
   {
        Sell[ i ] =  1;
        SellPrice[i]=C[i];
        pos=0;
   }
 

 if( pos==1 AND  L[ i ] <= addlevel ) //long scale in
    {   
        Buy[ i ] = sigScaleIn;
        BuyPrice = addlevel;
        addlevel = L[i]- at[i];

     }

}

SetPositionSize(10,spsPercentOfEquity*(Buy == 1 OR Short == 1));
SetPositionSize(100,spsPercentOfPosition *(Cover == 1 OR Sell == 1));
SetPositionSize( 30, spsPercentOfPosition * ( Buy == sigScaleIn OR Short == sigScaleIn ) );
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Сен 06, 2015 9:32 am Ответить с цитатой Вернуться к началу

Ты задаешь правила системы
Код:
Buy = Ref(Cross(MA(C,10),MA(C,20)),-1);
Sell=0;
Short = 0;
Cover=0;

и далее запускаешь функцию Equity().
Т.е. Equity как вошло в сделку один раз, так в ней и сидит (выходов не предусмотрено).
Обрати внимание, выхода нет. Дальше может происходить что угодно. Например кончилось бабло. Сделка закрылась и эквити стала горизонтальной линией. Соответственно далее в цикле участки профита и стопа не срабатывают и сдека в цикле не закрывается. Твоя ошибка в том, что видимо ты считаешь, что Equity() выдает результат по сделкам после цикла. Это не так.

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



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

СообщениеДобавлено: Вс Сен 06, 2015 10:24 am Ответить с цитатой Вернуться к началу

Разобрался, следует исправить параметр функции:
Код:
e=Equity(1);

на
Код:

e=Equity(0);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Сен 06, 2015 8:32 pm Ответить с цитатой Вернуться к началу

Ну можно и так. В таком режиме функция Equity не удаляет сигналы когда система в позиции.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen