У вас не стоит Flash Player
Настройки
#654 - Mon Dec 28 2009 02:16 PM Ваш пример программы API
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
добавить
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;


Отредактировано Sergey (Mon Dec 28 2009 03:50 PM)

Наверх
#661 - Mon Dec 28 2009 03:56 PM Re: Ваш пример программы API [Re: Sergey]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
после вышеуказанных добавок, дополнительного ( перед запуском Debug - Attach process.. из главного меню, самостоятельного отдельного запуска TSLAB процесс пошел: программы связались, но не выполнились, с результатом: error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext22.dll". Что не так? Пример Ваш.

Наверх
#665 - Mon Dec 28 2009 05:36 PM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Больше никаких ошибок нет? Такое будет, если компиляция внешнего скрипта прошла с ошибкой.
Если можно выложите лог программы сюда.

Наверх
#669 - Mon Dec 28 2009 07:29 PM Re: Ваш пример программы API [Re: Nektodron]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
Других ошибок нет. Кроме вышеуказанной, только Не могу собрать скрипт.Не могу запустить скрипт и error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext11.dll"


Отредактировано Sergey (Mon Dec 28 2009 07:32 PM)

Наверх
#671 - Mon Dec 28 2009 08:56 PM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
пришлите, пожалуйста, лог программы.

Наверх
#677 - Mon Dec 28 2009 09:50 PM Re: Ваш пример программы API [Re: Nektodron]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
21:47:35.32[16]DEBUG:error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext18.dll"
21:47:35.32[16]INFO :error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext18.dll"
21:47:35.33[16]INFO :Не могу запустить скрипт.
21:47:36.30[16]DEBUG:error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext18.dll"
21:47:36.31[16]INFO :error CS0006: Не удалось найти файл метаданных "C:\Users\Сергей\AppData\Local\TSLab\TSLab\temp\ext18.dll"
21:47:36.31[16]INFO :Не могу запустить скрипт.
21:47:36.32[16]DEBUG:Не могу собрать скрипт.
21:47:36.32[16]INFO :Не могу собрать скрипт.

Наверх
#678 - Mon Dec 28 2009 09:51 PM Re: Ваш пример программы API [Re: Sergey]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;

namespace TSLab.Samples
{
public class HiLoSample : IExternalScript
{
// Параметры оптимизации для длинных позиций задаются при помощи типа OptimProperty.
public OptimProperty HighPeriod = new OptimProperty(20, 10, 100, 5);
public OptimProperty LowPeriod = new OptimProperty(10, 10, 100, 5);

// Параметры оптимизации для коротких позиций так же задаются при помощи типа OptimProperty.
public OptimProperty Low2Period = new OptimProperty(20, 10, 100, 5);
public OptimProperty High2Period = new OptimProperty(10, 10, 100, 5);

public virtual void Execute(IContext ctx, ISecurity source)
{
// Вычисляем максимумы и минимумы.
// Используем GetData для кеширования данных и ускорения оптимизация.
// При неиспользовании кэша увеличивается объем обрабатываемых данных, что ведет к сильному замедлению оптимизации.
// Следует учесть, что необходимо перечислить абсолютно все изменяемые переменные используемые в вычислениях.
// Не соблюдение этого правила приведет к некорректной работе и результатам оптимизации.
IList<double> high = ctx.GetData("Highest", new[] {HighPeriod.ToString()},
delegate { return Series.Highest(source.HighPrices, HighPeriod); });
IList<double> low = ctx.GetData("Lowest", new[] {LowPeriod.ToString()},
delegate { return Series.Lowest(source.HighPrices, LowPeriod); });
IList<double> high2 = ctx.GetData("Highest", new[] {High2Period.ToString()},
delegate { return Series.Highest(source.HighPrices, High2Period); });
IList<double> low2 = ctx.GetData("Lowest", new[] {Low2Period.ToString()},
delegate { return Series.Lowest(source.HighPrices, Low2Period); });

// Берем основной панель (Pane).
IPane mainPane = ctx.First;

// Отрисовка графиков.
mainPane.AddList(string.Format("High({0}) [{1}]", HighPeriod, source.Symbol), high, ListStyles.LINE,
0x00ff00, LineStyles.SOLID, PaneSides.RIGHT);
mainPane.AddList(string.Format("High({0}) [{1}]", High2Period, source.Symbol), high2, ListStyles.LINE,
0x00ff00, LineStyles.DASH, PaneSides.RIGHT);
mainPane.AddList(string.Format("Low({0}) [{1}]", LowPeriod, source.Symbol), low, ListStyles.LINE,
0xff0000, LineStyles.SOLID, PaneSides.RIGHT);
mainPane.AddList(string.Format("Low({0}) [{1}]", LowPeriod, source.Symbol), low2, ListStyles.LINE,
0xff0000, LineStyles.DASH, PaneSides.RIGHT);

// =================================================
// Торговля.
int barsCount = source.Bars.Count;
for (int i = 0; (i < barsCount); i++)
{
IPosition le = source.Positions.GetLastActiveForSignal("LE");
if (le == null)
{
// Если нет активных длинных позиций, выдаем условный ордер на создание новой позиции.
source.Positions.BuyAtLimit(i + 1, 1, high[i], "LE");
}
else
{
le.CloseAtStop(i + 1, low[i], "LX");
}
IPosition se = source.Positions.GetLastActiveForSignal("SE");
if (se == null)
{
// Если нет активных коротких позиций, выдаем условный ордер на создание новой позиции.
source.Positions.ShortAtLimit(i + 1, 1, low2[i], "SE");
}
else
{
se.CloseAtStop(i + 1, high2[i], "SX");
}
}
}
}
}

Наверх
#679 - Mon Dec 28 2009 10:15 PM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Извиняюсь, но пример устарел. Мы в последний момент немного изменили API для лучшего понимания.

BuyAtLimit надо поменять на BuyIfGreater
ShortAtLimit надо поменять на SellIfLess

кроме того добавить:
using TSLab.Script.Helpers;

В ближайшее время исправим документацию, а так же выложим исходный код API.

Кроме того, как я понимаю, программа не выводит ошибки компиляции внешнего скрипта.


Отредактировано Nektodron (Mon Dec 28 2009 10:16 PM)

Наверх
#680 - Mon Dec 28 2009 10:36 PM Re: Ваш пример программы API [Re: Nektodron]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
Все равно не проходит (c теми же извещениями). Я только начал знакомство с c# (писал на ассемблере, дельфи, физ. уровне в детстве, но к сожалению о С# имею отдаленное представление). Поэтому спрошу Точка входа в программу как public static void Main(string[] args) где в нашем скрипте? Или она формируется по другому, хотя др. файлы мы удалили как сказано в справке. Или, как говорил профессор, иди читай...? А еше лучше выложите весь C# проект. Кстати (или не кстати) внешний скрипт у меня все время отстегивается в TSLAb, приходится вставлять заново после входа в редактор.


Отредактировано Sergey (Mon Dec 28 2009 10:41 PM)

Наверх
#681 - Tue Dec 29 2009 11:28 AM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Можете выложить логи программы (лучше в архиве)? Как найти логи описано здесь:
http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=26#Post26

Наверх
#682 - Tue Dec 29 2009 12:05 PM Re: Ваш пример программы API [Re: Nektodron]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
Не понял почему, просто запустил также как вчера, но скрипт пошел. При этом внешний скрипт в TSLab воткнулся сам, однако указывает, что в параметрах скрипов 0. Может я вчера просто по времени не дождался, когда свяжутся потоки.
Отладчик однако выдал:
12:01:32.83[1]DEBUG:Script was save to DB.
12:01:33.37[17]DEBUG:Can't set parameter 'Внешний скрипт:HighPeriod'
12:01:33.38[17]DEBUG:Can't set parameter 'Внешний скрипт:LowPeriod'

12:01:33.38[17]DEBUG:Can't set parameter 'Внешний скрипт:Low2Period'
12:01:33.39[17]DEBUG:Can't set parameter 'Внешний скрипт:High2Period'

В TSLAB скрипт сработал с результатами. доходами и пр.
правильность не проверял.
Высылать Log?


Отредактировано Sergey (Tue Dec 29 2009 12:07 PM)

Наверх
#683 - Tue Dec 29 2009 12:35 PM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Да, лишним не будет.

Наверх
#684 - Tue Dec 29 2009 12:59 PM Re: Ваш пример программы API [Re: Nektodron]
Sergey Offline
newbie

Registered: Fri Dec 25 2009
Записи: 31
log


Attachments
Logs.zip (121 downloads)


Наверх
#685 - Tue Dec 29 2009 03:04 PM Re: Ваш пример программы API [Re: Sergey]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Originally Posted By: Sergey

12:01:32.83[1]DEBUG:Script was save to DB.
12:01:33.37[17]DEBUG:Can't set parameter 'Внешний скрипт:HighPeriod'
12:01:33.38[17]DEBUG:Can't set parameter 'Внешний скрипт:LowPeriod'

12:01:33.38[17]DEBUG:Can't set parameter 'Внешний скрипт:Low2Period'
12:01:33.39[17]DEBUG:Can't set parameter 'Внешний скрипт:High2Period'


В версии 1.0.4.0 баг, TSLab не может смапить параметры для блока внешнего скрипта с русским именем. Т.е. они всегда берутся из кода, их нельзя изменить и не будет работать оптимизация. В след версии это будет исправлено. Сейчас можно просто переименовать блок с использованием только латиницы.

Наверх
#1635 - Thu Jan 28 2010 09:34 PM Re: Ваш пример программы API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Взял Ваш пример индикатора из справки, при компилировании выдаётся ошибка:
Имя 'Series' отсутствует в текущем контексте (CS0103) - C:\Documents and Settings\Саша\Рабочий стол\МТС\TSLab\Индикаторы\ДоллФОРТС\ДоллФОРТС\DollFORTS.cs:16,40

Скажите где копать, что искать, что изменить, чтобы хотя бы этот пример запустить?
_________________________


Наверх
#1636 - Thu Jan 28 2010 09:37 PM Re: Ваш пример программы API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
похоже не хватает строчки:
using TSLab.Script.Helpers;


ее в старом хелпе не было, щас то есть.

Наверх


Moderator:  ViL, sar