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



Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск

СообщениеДобавлено: Пн Ноя 16, 2009 7:57 pm Ответить с цитатой Вернуться к началу

Цитата:
Посмотри

Спасиб Олег Laughing
Код работает но есть какие-то огрехи по расчетам ч.з Back Test ,сейчас разбираюсь ручками Wink

_________________
"Если мы выиграем на финансовом фронте, то мы выиграем всё" В.И.Ленин
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 16, 2009 9:42 pm Ответить с цитатой Вернуться к началу

Да. Ты посмотри внимательно. Я точно не проверял. Просто убедился, что шкалирование сделок имеет место быть, а правильно или нет не смотрел.

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



Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск

СообщениеДобавлено: Сб Ноя 21, 2009 1:26 pm Ответить с цитатой Вернуться к началу

Привет Олег
Попробовал переделать код с добавкой позы и прикрепил к роботу но трабл возникает когда робот стоит в увеличенной позе и не достигнув 2-го профита возникает сигнал на реверс то транзакция уходит=лотам без добавки.Т.е. добавка позы срабатывает а закрытие позы не учитывает доливку(4+2-4 Question )
И при перевороте возникает Buy без Cover Confused
Подскажи чего я не учел Embarassed

_________________
"Если мы выиграем на финансовом фронте, то мы выиграем всё" В.И.Ленин
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Сб Ноя 21, 2009 10:21 pm Ответить с цитатой Вернуться к началу

Ну в общем за размер сделки отвечает переменная Lots
Собственно посмотри в каких случаях в цикле добавить регулировку этой переменной

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



Зарегистрирован: 15.03.2009
Сообщения: 61
Откуда: Омск

СообщениеДобавлено: Вс Ноя 22, 2009 12:35 pm Ответить с цитатой Вернуться к началу

Цитата:
Ну в общем за размер сделки отвечает переменная Lots
Собственно посмотри в каких случаях в цикле добавить регулировку этой переменной

Спс лоты попробую подправить
Но у меня почему-то визуально не прорисовывает при перевороте позы закрытие предыдущей : если система Buy то должно отрисоваться Sell,а только потом Short а у меня рисует после Buy Сразу Short ?
Хотя стопы и профиты закрытие рисует
Олег ткни пальцем где ошибка Rolling Eyes

_________________
"Если мы выиграем на финансовом фронте, то мы выиграем всё" В.И.Ленин
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вс Ноя 22, 2009 11:56 pm Ответить с цитатой Вернуться к началу

Вот смотри.
Переворот описывается в коде тут
Код:

  if( position <= 0 )
  {  // система не в позиции или шорт
    if( Buy_1[i] )
    {
      priceDeal = BuyPrice[i];
      position  = 1;
      Buy[i] = 1;
    }
  }
  if( position >= 0 )
  {  // система не в позиции или лонг
    if(Short_1[i])
    {
      priceDeal = ShortPrice[i];
      position  = -1;
      Short[i] = 1;     
    }
  }

Дальше 2 варианта. Либо добавить Cover и Sell при перевороте и отдельно сайз (Lots) в зависимости от размера позиции (пр чем следует не забывать, что сайз Cover и Buy может быть разным)
Это типа так (без сайза)
Код:

  if( position <= 0 )
  {  // система не в позиции или шорт
    if( Buy_1[i] )
    {
      priceDeal = BuyPrice[i];
      position  = 1;
      Buy[i] = 1;
      if(position < 0)
        Cover[i] = 1;
    }
  }
  if( position >= 0 )
  {  // система не в позиции или лонг
    if(Short_1[i])
    {
      priceDeal = ShortPrice[i];
      position  = -1;
      Short[i] = 1;
      if(position > 0)
        Sell[i] = 1;
    }
  }

Либо увеличить сайз Buy Short в зависимости от размера уже открытой противоположной позиции (это по моему проще)

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



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

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

"Либо увеличить сайз Buy Short в зависимости от размера уже открытой противоположной позиции (это по моему проще)"

Олег, а как в тестере такой подход прокатит при отсутствии в коде Sell и Cover?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вс Дек 13, 2009 9:09 pm Ответить с цитатой Вернуться к началу

Я когда пиал имел ввиду робота. Для тестера не прокатит...

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



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

СообщениеДобавлено: Вт Дек 15, 2009 7:16 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Я когда пиал имел ввиду робота. Для тестера не прокатит...

Т.е. для теста надо все расписать, а в роботе можно только buy & short. Спасибо.
Попробовал сделать частичный выход с количеством. Не работает как задумал.
Подскажите что не так.
Код:


FirstProfitTarget = 200; // profit
 
position = 0 ;
priceDeal = 0;
Lots=0;
 

for( i = 0; i < BarCount; i++ )
{
  if( position == 0 ) // система не в позиции
   {   
   if( Buy_1[i] )
      {
      Buy[i] = 1;
      priceDeal = BuyPrice[i];
      position  = 10;
      Lots = 10;
      }
   }
 
  if(position == 10) // система в лонге
   { 
   if(H[i] > priceDeal + FirstProfitTarget) // 1ый профит
      { 
      Buy[i] = sigScaleOut;
      BuyPrice[i] = priceDeal + FirstProfitTarget;   
          position  = 7;
      Lots = 3;
      }
   }
 
  if(position == 10) // система в лонге
   {
   if(Sell_1[i])
      {
      Sell[i]=1;
      SellPrice[i]= SellPrice_1[i];
      position  = 0; 
      Lots = 10;
      }
   }
   
 
   if(position ==7) // система в лонге  с частичной фиксацией
   {   
   if(Sell_1[i])
      {
      Sell[i]=1;
      SellPrice[i]= SellPrice_1[i];
      position  = 0; 
      Lots = 7;
      }
   }
}


SetPositionSize(Lots, 4);
Equity(1);
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Teema



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

СообщениеДобавлено: Сб Янв 02, 2010 2:14 pm Ответить с цитатой Вернуться к началу

Выше в примере выходим по профиту 3 лотами
а по селу 10 или 7 лотами в зависимости от размера позиции.
По этому коду сделки рисуются на каждом баре.
А в подробном логе выходит вроде по одному лоту на каждом баре.
Короче фигня какая-то.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

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

Взял такой код.
Код:

Buy_1 = DayOfWeek() == 1;
Sell_1 = DayOfWeek() == 5;
SellPrice_1 = C;

FirstProfitTarget = 50; // profit
 
position = 0 ;
priceDeal = 0;
Lots=0;
 

for( i = 0; i < BarCount; i++ )
{
  if( position == 0 ) // система не в позиции
   {   
   if( Buy_1[i] )
      {
      Buy[i] = 1;
      priceDeal = BuyPrice[i];
      position  = 10;
      Lots = 10;
      }
   }
 
  if(position == 10) // система в лонге
   { 
   if(H[i] > priceDeal + FirstProfitTarget) // 1ый профит
      { 
      Buy[i] = sigScaleOut;
      BuyPrice[i] = priceDeal + FirstProfitTarget;   
          position  = 7;
      Lots = 3;
      }
   }
 
  if(position == 10) // система в лонге
   {
   if(Sell_1[i])
      {
      Sell[i]=1;
      SellPrice[i]= SellPrice_1[i];
      position  = 0; 
      Lots = 10;
      }
   }
   
 
   if(position ==7) // система в лонге  с частичной фиксацией
   {   
   if(Sell_1[i])
      {
      Sell[i]=1;
      SellPrice[i]= SellPrice_1[i];
      position  = 0; 
      Lots = 7;
      }
   }
}


SetPositionSize(Lots, 4);
Equity(1);

Прогнал на GAZ 15мин. Вот результат. Все работает. Шаресов везде 10

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



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

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

по сделкам: нигде нет профита 50 или точнее везде результат четкий бай минус селл умножить на 10, т.е. частичного выхода небыло.
Попробовал изменить 50. ничего не меняется.
т. е. sigScaleOut не работает. (
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вс Янв 03, 2010 12:16 am Ответить с цитатой Вернуться к началу

Работает.
Если уж стал разбираться, что очень правильно, то можно было проверить цены входов.
Ами при масштабировании позиции изменяет начальную цену входа так, чтобы масштабированная сделка считалась как одна простая.
Вот цитата хелпера
Цитата:

IMPORTANT: Please note that backtester treats trade that you scale-in/out as SINGLE trade (i.e. will show single row in trade list). The only difference versus plain trade is that it will calculate average entry price (and avg. entry fx rate) based on all partial entries and average exit price (and avg. exit fx rate) based on all parial exits and will show average prices in entry/exit price field. The commission is of course applied correctly to each (partial) entry/exit depending on partial buy/sell size.

Автоматический перевод
Цитата:

ВАЖНЫЙ: Пожалуйста отметьте, что торговля backtester удовольствий, что Вы шкала-в/ как ЕДИНСТВЕННАЯ торговля (то есть покажет единственную колонку в торговом списке). Единственное различие против простой торговли - то, что это вычислит среднюю цену входа (и avg. вход показателя fx) основанное во всех частичных данных и средней выходной цене (и avg. выход показателя fx) основанное на им parial выходов и покажет средние цены на входе/выходная цена области. Комиссия конечно прилагается правильно к каждому входа/выхода (частичный) в зависимости от частичного покупать/продавать размер.

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



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

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

Спасибо, появились вопросы:

В отчете усредняются только цены входов, или и выходов тоже?
Почему в подробном логе нет указанных количеств тк специально написал 3 и 7 лотов?
Каким способом лучше отладить код и проверить, что все работает как задумано, как при этом проверить правильность цен, чтобы не было сомнений?
Цены входов посмотрю.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Янв 04, 2010 2:19 am Ответить с цитатой Вернуться к началу

Блин. У меня тоже плохо работает. Разбираюсь уже 2 дня. Пока никак... Sad

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen