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



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

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

5.90.1 от 23 ноября 2014

Сейчас поставил 5.7 для проверки, тоже самое выдало Sad
Может еще библиотеку какую нить надо?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Июн 02, 2015 12:57 am Ответить с цитатой Вернуться к началу

вот жеж сука. Действительно у Signal нет свойства связанного с датой и временем сигнала.

Ну лана. Тогда так. Проверил. Тест проходит. Только проверяй правильно или нет.
Код:

SetOption("UseCustomBacktestProc", True);
if(Status("action") == actionPortfolio)
{
   bo = GetBacktesterObject();
   bo.PreProcess();

   for(bar = 0; bar < BarCount; bar++)
   {
      NumSig = 0;
      NumSigF = 0;
      CurrentPortEquity = bo.Equity;
      for(sig = bo.GetFirstSignal(bar); sig; sig = bo.GetNextSignal(bar)) // считаем сигналы на вход на этом баре
      {
         if( sig.IsEntry() )
         {
            NumSig++;
         }   
      }
     
      CE = CurrentPortEquity/NumSig; // доля доступного капитала на каждый сигнал

      for(sig = bo.GetFirstSignal(bar); sig; sig = bo.GetNextSignal(bar)) // отфильтровываем сигналы по объему
      {
         sumb = StaticVarGet( sig.Symbol + "f");
         if(10*CE <= sumb[bar])
         {
            NumSigF++; // считаем сигналы которые проходят
         }
      }
     
      for(sig = bo.GetFirstSignal(bar); sig; sig = bo.GetNextSignal(bar)) // задаем сайз сигналам
      {
         sumb = StaticVarGet( sig.Symbol + "f");
         if(10*CE <= sumb[bar])
         {
            sig.PosSize = int(-100/NumSigF);
         }
         else
         {
            sig.PosSize = 0;
         }
         
      }
      bo.ProcessTradeSignals(bar);     
   }
   bo.PostProcess;
}


f = Avg * Volume;
StaticVarSet( Name() + "f", f );

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



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

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

тоже проверил, все заработало. Бегло пробежался по сделкам (их больше тысячи за год) на вид как надо, но надо детально проверить. После завтра приеду в город, буду сравнивать первую часть и эту для выяснения подробностей в расчетах.
Олег, благодарю! Very Happy
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen