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



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

СообщениеДобавлено: Чт Ноя 14, 2013 3:20 pm Ответить с цитатой Вернуться к началу

как получить цену покупки после усреднения?
вот код, который усредняет, взят с сайта в теме по усреднению.
Вопрос если доливка идет n раз и мы не знаем сколько будет доливок, где брать среднюю цену?
Buy =C<O&&Volume>500; // правила первоначального входа в позицию.

Short = C>O&&Volume>500; // правила выхода

priceatbuy = 0;
position = 0;

for( i = 0; i < BarCount; i++ )
{
if(position == 0)
{
if(Buy[i])
{
Buy[i] = 1;
position = 1;
priceatbuy = C[i];
}
}
else if(position == 1)
{
if(H[i]>priceatbuy+0.002)
{
Sell[i] = 1;
position = 0;
priceatbuy=0;
}
else if(C[i] <= priceatbuy - 0.05) // докупка
{
Buy[i] = sigScaleIn;
priceatbuy = ?????
}
}
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Ноя 14, 2013 8:54 pm Ответить с цитатой Вернуться к началу

Ее надо считать после каждой доливки.
(цена доливки - цена входа)*размер позиции до доливки = текущая прибыль позиции.
новая цена входа = цена доливки - текущая прибыль/новый размер позиции

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



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

СообщениеДобавлено: Пт Ноя 15, 2013 3:38 pm Ответить с цитатой Вернуться к началу

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


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

СообщениеДобавлено: Сб Ноя 16, 2013 8:22 am Ответить с цитатой Вернуться к началу

Вроде бы должен.

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



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

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

Почему когда добавляю setpositionsize(1,4) он торгует в тестере одним контрактом и не добавляет к позиции когда докупает, хотя на графиках докупает регулярно??? как сделать простую систему чтобы она усреднялась на падении и показывала что докупает контракты?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Я совсем недавно про это писал.
В тестере доливки не показываются.
Простой пример.
Понедельник покупка 1 лот по 5руб
Вторник доливка 1 лот по 7руб
Среда - выход.

В отчете тестер покажет одну сделку открытую в понедельник 2 лота по цене 6 руб. и закрытую в среду.

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



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

СообщениеДобавлено: Вт Ноя 19, 2013 12:20 am Ответить с цитатой Вернуться к началу

кстати о доливках. как раз ковыряюсь с ними.
чтоб увидеть доливки в подробностях, а не позиции по средним ценам, нужно в настройках тестера в Report переключить на Detailed log.
или в коде просто добавить:
Код:
SetOption( "PortfolioReportMode", 1 );
Посмотреть профиль Отправить личное сообщение
ujif



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

СообщениеДобавлено: Вт Ноя 19, 2013 10:50 am Ответить с цитатой Вернуться к началу

Вот простой код, но он не делает то как ты говоришь. Усредняет возможно, не уверен, но точно не ведет позицию на реальное количество лотов. Тупо торгует одним лотом. Где косяк?
Buy1 =C<O&&Volume>500; // правила первоначального входа в позицию.
priceatBuy = 0;
position = 0;

for( i = 0; i < BarCount; i++ )
{
if(position == 0)
{
if(Buy1[i])
{Buy[i]=1;
position = 1;
priceatbuy = C[i];
}
}
else if(position == 1)
{
if(H[i]>priceatbuy+0.002)
{
Sell[i] = 1;
position = 0;
priceatbuy=0;
}
else if(C[i] <= priceatbuy - 0.05) // докупка
{
Buy[i] = sigScaleIn;
priceatbuy = C[i];
}
}
}
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen,0,Graph0,-12);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorViolet,0,Graph0,-12);
PlotShapes( IIf( Buy, shapeSmallCircle, shapeNone ), colorBrightGreen, 0, BuyPrice, 0 );
PlotShapes( IIf( Sell, shapeSmallCircle, shapeNone ), colorViolet, 0 , SellPrice, 0 );
SetPositionSize(1,4);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Ноя 19, 2013 8:46 pm Ответить с цитатой Вернуться к началу

Код:

Buy1 = C < O AND Volume > 500; // правила первоначального входа в позицию.
priceatBuy = 0;
position = 0;
Buy = Sell = Short = Cover = 0;

for( i = 0; i < BarCount; i++ )
{
  if(position == 0)
  {
    if(Buy1[i])
    {
      Buy[i]=1;
      position = 1;
      priceatbuy = C[i];
    }
  }
  else if(position == 1)
  {
    if(H[i] > priceatbuy + 0.002)
    {
      Sell[i] = 1;
      position = 0;
      priceatbuy = 0;
    }
    else if(C[i] <= priceatbuy - 0.05) // ???????
    {
      Buy[i] = sigScaleIn;
      priceatbuy = C[i];
    }
  }
}
PlotShapes(IIf(Buy == 1, shapeUpArrow, shapeNone), colorGreen, 0, L, -12);
PlotShapes(IIf(Sell, shapeDownArrow, 0), colorViolet,0, H, -12);
PlotShapes( IIf( Buy == sigScaleIn, shapeSmallCircle, shapeNone), colorBrightGreen, 0, L, 0 );
//PlotShapes( IIf( Sell, shapeSmallCircle, shapeNone ), colorViolet, 0 , SellPrice, 0 );
Plot(C, "", colorBlack, styleCandle);
SetPositionSize(1, 4);

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



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

СообщениеДобавлено: Вт Апр 07, 2015 12:20 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Я совсем недавно про это писал.
В тестере доливки не показываются.
Простой пример.
Понедельник покупка 1 лот по 5руб
Вторник доливка 1 лот по 7руб
Среда - выход.

В отчете тестер покажет одну сделку открытую в понедельник 2 лота по цене 6 руб. и закрытую в среду.


Доброго времени...!

Ничего не изменилось с этим вопросом?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Апр 07, 2015 12:45 pm Ответить с цитатой Вернуться к началу

Привет.
В Ами уже давно есть Porfolio Backtester Interface
Это (с точки зрения кодирования) довольно замороченная технология, но она позволяет максимально точно управлять позициями в портфеле.
Там есть такое понятие как Trade object, а у него есть свойство EntryPrice.
Это как раз цена открытия позиции.
Цитата:
entry price, if any scaling-in occurred this holds average entry price

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



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

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

А нет в недрах форума (или может встречался на поверхности просторов инета) простого, вот совсем простого, готового шаблона цикла, добавляющего, убавляющего позицию, просто по срабатыванию на баре Buysignal или Sellsignal? Т.е. чтобы просто (как современный лисапед) - есть сигнал - купил, на след баре есть сигнал - купил/продал, нет сигнала - ничего не делает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Апр 07, 2015 6:19 pm Ответить с цитатой Вернуться к началу

А зачем для этого цикл? Просто в хелпере Ами есть простые примеры.

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



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

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

Цитата:
Starting from version 4.70 portfolio backtester allows position scaling and supports multiple currencies. Note that these advanced features are supported by PORTFOLIO backtester only. Old single-security backtester and single-security equity() function do NOT support these features.

Pyramiding / Scaling

Two special constants: sigScaleIn / sigScaleOut added to provide means to tell the backtester when you want to scale-in/out


Это оно?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Pyramiding (scaling in/out) and mutliple currencies in the portfolio backtester

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen