У вас не стоит Flash Player
Настройки
#53710 - Fri Mar 29 2013 02:21 PM Простейший скрипт
Poxer Offline
newbie

Registered: Fri Mar 29 2013
Записи: 32
Добрый день.
Написал простейший скрипт задача которого открывать ордер на первом же тике который приходит.
Не могу понять почему
1) Выставил исполнять входы и выходы сразу а он не выполняется автоматически а висит в менеджере команд
2) Лог с пропущенными сигналами
14:19:59.59 127 Агент: '65' Скрипт выполнен успешно за 1мс. (10254 баров, время 29.03.2013 8:54:00)
14:19:59.59 135 Агент: '65' Пропущен сигнал 'SBER' входа в позицию.
Требуется вмешательство через Менеджер Команд.
14:19:59.58 127 Агент: '65' Скрипт выполнен успешно за 3мс. (0 баров, время 29.03.2013 14:19:59)
14:19:59.45 135 Агент: '65' Пропущен сигнал 'SBER' входа в позицию.
Требуется вмешательство через Менеджер Команд.
14:19:54.87 124 Агент: '65' запущен

Что делаю не так?


Код:

using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;

namespace TSLab.Samples
{
public class HiLoSample : IExternalScript
{
int once=0;

public virtual void Execute(IContext ctx, ISecurity source)
{
IPosition le = source.Positions.GetLastActiveForSignal("SBER");
if( once == 0 )
{
source.Positions.BuyAtMarket(0, 1, "SBER");
once = 1;
}
}

}

}

Наверх
#53713 - Fri Mar 29 2013 07:53 PM Re: Простейший скрипт [Re: Poxer]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Нуууу.... такой скрипт работать не будет это факт. Начнем с пересчета. Он выставлен по "Сделка"?
Далее внутри скрипта int once=0; не будет работать, потому как на след пересчете она проинициализируется снова нулем.
Далее у вас BuyAtMarket(0, 1, "SBER"); вы входите на прошлой свече? Так дело не пойдет. надо входить на будущей свече, той которой еще нет.

Предлагаю взять простой скрипт HiLow или другой с форума и посмотреть как чего делается.


Отредактировано ra81 (Fri Mar 29 2013 07:53 PM)
_________________________
__


Наверх
#53749 - Mon Apr 01 2013 08:58 AM Re: Простейший скрипт [Re: ra81]
Poxer Offline
newbie

Registered: Fri Mar 29 2013
Записи: 32
1) А где выставляется что-бы был по сделка?
2) Вот думаю как же сделать один ордер и завершение если нельзя хранить данных между запусками скрипта
3) Поменял код. Теперь на следующей свече?
4) HiLow не могу найти на форуме.

Обновил код:

using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;

namespace TSLab.Samples
{
public class HiLoSample : IExternalScript
{
int once=0;

public virtual void Execute(IContext ctx, ISecurity source)
{
for (var i = 0; i < source.Bars.Count; i++)
{
IPosition le = source.Positions.GetLastActiveForSignal("SBER");

if (le == null)
{
if( once == 0 )
{
source.Positions.BuyAtMarket(i+1, 1, "SBER");
once = 1;
}
}
}
}

}

}

Наверх
#53771 - Mon Apr 01 2013 02:23 PM Re: Простейший скрипт [Re: Poxer]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
1) Ну вы же как то выставляли интервал пересчета? Что у вас там стоит? Если вы не знаете где это, предлагаю перейти в раздел сборки скриптов из кубиков, и почитать мануал по ТСЛабу. Это базовые знания. Рано программировать не освоив кубики.
2) Чтобы сделать один ордер можно просто использовать коллекцию positions, если она больше 0 то не входить больше.
3) код нормальные теперь, только once работать не будет.
4) Не обязательно HighLow возьмите любой другой скрипт, который подвернется. Я рекомендовал его как стандартный.
_________________________
__


Наверх
#53779 - Mon Apr 01 2013 03:29 PM Re: Простейший скрипт [Re: ra81]
Poxer Offline
newbie

Registered: Fri Mar 29 2013
Записи: 32
Ошибка:
Пропущен сигнал 'SBER' входа в позицию.
Требуется вмешательство через Менеджер Команд.
Так и не пропала...

Наверх
#53782 - Mon Apr 01 2013 03:42 PM Re: Простейший скрипт [Re: Poxer]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
Это не ошибка, а сообщение. Сигнал можно исполнить из менеджера команд.
http://www.tslab.ru/docs/1.2/online/script_run.htm

Наверх
#53783 - Mon Apr 01 2013 03:44 PM Re: Простейший скрипт [Re: Poxer]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
а с чего ошибка пропадет, если ваш скрипт ВСЕГДА пытается открыть позиции на первой свече из доступной истории?

Наверх
#53785 - Mon Apr 01 2013 03:50 PM Re: Простейший скрипт [Re: Nektodron]
Poxer Offline
newbie

Registered: Fri Mar 29 2013
Записи: 32
Мне нужно что-бы открывал на первой свече после запуска скрипта. Что изменить в вызове?
source.Positions.BuyAtMarket(i+1, 1, "SBER");

Что вручную можно я знаю... я хочу чтоб он автоматом это делал.

Наверх
#53786 - Mon Apr 01 2013 03:53 PM Re: Простейший скрипт [Re: Poxer]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
вам нужно открывтаь на свече с номером "source.Bars.Count"

Наверх
#53787 - Mon Apr 01 2013 04:01 PM Re: Простейший скрипт [Re: Nektodron]
Poxer Offline
newbie

Registered: Fri Mar 29 2013
Записи: 32
Спасибо большое! Думал уже не побежу! ))

Наверх
#53808 - Tue Apr 02 2013 07:38 AM Re: Простейший скрипт [Re: Nektodron]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Originally Posted By: Nektodron
а с чего ошибка пропадет, если ваш скрипт ВСЕГДА пытается открыть позиции на первой свече из доступной истории?

Да совершенно верно замечено. Сразу не углядел эту деталь wink
_________________________
__


Наверх


Moderator:  ViL, sar