У вас не стоит Flash Player
Настройки
#85556 - Mon Aug 05 2019 08:21 AM Внешний скрипт, не возвращает данные о позиции
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Нужна информация о позиции, запись ее в файл. Делаю это через внешний скрипт, но всегда возвращает null, информацию об инструменте достает, количество свечей тоже. Подскажите в чем проблема?
Code:
    public class Class1 : IExternalScript
    {
        public void Execute(IContext ctx, ISecurity sec)
        {
            var pos = sec.Positions;
           
            var open = pos.GetLastPosition(ctx.BarsCount - 1);
            var close = pos.GetLastPositionActive(ctx.BarsCount - 1);
            if (open != null)
                ctx.Log(ctx.BarsCount - 1 + " close:" + close.EntryPrice);
            if (close != null)
                ctx.Log(ctx.BarsCount - 1 + " open:" + open.EntryPrice);
            ctx.Log("test2"+ ctx.BarsCount);
       
            ctx.Log(pos.Security.Symbol);
            ctx.Log(pos.ActivePositionCount.ToString());
            ctx.Log(pos.HavePositions.ToString());

        }
    }

В логах при проведении теста по одной записи, т.е. внешний скрипт пересчитывается только по окончанию выполнения скрипта? А как в реальной торговле будет это происходить?

Наверх
#85557 - Mon Aug 05 2019 10:24 AM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Перепробовал все функции получения информации о позиции, но все равно null. Даже циклом проходился по свечам, ничего не помогает.
Code:
for (int i = 0; i < ctx.BarsCount; i++)
{
    var poses = pos.GetActiveForBar(i);
    foreach (var item in poses)
    {
        ctx.Log(i + " open: " + item.EntryBar);
    }
}

Версия TSLab 2.0.35.0

Наверх
#85566 - Wed Aug 07 2019 10:38 AM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
OldMo Offline
member

Registered: Wed Feb 08 2017
Записи: 194
Я так понимаю, вы в режиме лаборатории работаете?

var positionsList= sec.Positions;
foreach (var pos in positionsList)
ctx.Log("бар входа: " + pos.EntryBarNum );

Наверх
#85567 - Wed Aug 07 2019 02:14 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: OldMo]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Не работает в режиме лаборатории. Запись делает о количестве свечей, а позиции не видит. Пытался по другому
Code:

    [HandlerCategory("Indi3")]
    public class DetectedPos2 : IBar2ValueDoubleHandler, IBar2DoubleHandler, IContextUses
    {
        public double Execute(ISecurity source, int barNum)
        {

            var active=  source.Positions.GetActiveForBar(barNum);
            foreach (var item in active)
            {
                Context.Log("активная  " + item.EntryBar);
            }

            return 1;
        }

        public IList<double> Execute(ISecurity source)
        {
            return new double[source.Bars.Count];
        }

        public IContext Context { get; set; }
    }


Но при подключении данного кубика вообще перестает открывать позиции


Attachments
Код.png (52 downloads)



Отредактировано SliderShadow (Wed Aug 07 2019 02:15 PM)

Наверх
#85568 - Wed Aug 07 2019 03:32 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
OldMo Offline
member

Registered: Wed Feb 08 2017
Записи: 194
Работает. Сделки совершает, бары открытия сделок в лог выводит


Attachments
test.cs (99 downloads)


Наверх
#85569 - Wed Aug 07 2019 07:07 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: OldMo]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Согласен, в приведенном вами примере все работает корректно. Спасибо что помогаете. Но у клиента весь код робота в кубиках, он его не будет давать и переделывать в код, поэтому мне нужно с помощью кода достать оттуда информацию о позиции на конкретном баре. Т.е. мне нужно написать кубик, который клиент просто прикрепит к своему алгоритму

Наверх
#85570 - Wed Aug 07 2019 07:07 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Извиняюсь, что плохо донес свою мысль.

Наверх
#85571 - Wed Aug 07 2019 07:32 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
OldMo Offline
member

Registered: Wed Feb 08 2017
Записи: 194
Тогда логично делать свой, пользовательский кубик, в который передается позиция, а он с ней делает то, что вам нужно. Я, правда, с граф редактором не работал ни когда, так что мало в этом разбираюсь.

Наверх
#85572 - Wed Aug 07 2019 08:38 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: OldMo]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Понимаю что надо кубик. Только вот в этом да и проблема, что описание интерфейсов нет с примерами ( Техническая поддержка тоже не смогла подсказать (

Наверх
#85573 - Wed Aug 07 2019 08:42 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
Stan Offline
veteran

Registered: Wed Oct 02 2013
Записи: 1357
Ра 81 такое делал, посмотрите его кубики для 1.2, там есть кубик записи в файл вроде любых данных, и считыватель этой записи.

Наверх
#85574 - Wed Aug 07 2019 09:54 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: Stan]
SliderShadow Offline
newbie

Registered: Mon Jun 17 2013
Записи: 43
Посмотрю, спасибо. Просто еще раз хочу сказать, что записать для меня не проблема, у меня проблема сейчас получить информацию о позиции. Информация по количеству свечей получаю, информацию по инструменту получаю, а позиции null.

Наверх
#85575 - Thu Aug 08 2019 12:05 PM Re: Внешний скрипт, не возвращает данные о позиции [Re: SliderShadow]
OldMo Offline
member

Registered: Wed Feb 08 2017
Записи: 194
А в чем проблема? Берем любой кубик работающий с позицией и переделываем. Это первый сделанный мной кубик, поэтому имейте ввиду что это не эталон. Но вроде бы работает.


Attachments
test.rar (63 downloads)
test.cs (94 downloads)


Наверх
#85591 - Wed Aug 14 2019 08:58 AM Re: Внешний скрипт, не возвращает данные о позиции [Re: OldMo]
OldMo Offline
member

Registered: Wed Feb 08 2017
Записи: 194
Во внешний скрипт передаются данные только об инструменте и контексте. public void Execute(IContext ctx, ISecurity sec) Откуда там возьмутся данные о позиции открытой не им?

Наверх


Moderator:  ViL, sar