У вас не стоит Flash Player
Page 2 of 7 < 1 2 3 4 5 6 7 >
Настройки
#4549 - Mon Apr 19 2010 02:42 PM Re: Выставление ордеров через API TSLab [Re: Nektodron]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Лог и скриншоты отправил.

Наверх
#4554 - Mon Apr 19 2010 03:55 PM Re: Выставление ордеров через API TSLab [Re: ast]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Разобрался. Не правильно работал менеджер заявок. Выставлялась заявка на открытие, которая не срабатывала из-за недостаточной ликвидности. Далее на следующей итерации выставлялись команды на отмену заявки на открытие и на закрытие(!) позиции. Это сегодня будет исправлено.

Наверх
#4557 - Mon Apr 19 2010 04:14 PM Re: Выставление ордеров через API TSLab [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: Nektodron
Если у скриптов разное имя, то чужие позиции они видеть не должны. Одинаковое имя сигнал не причем.

var rtFORTS = (ISecurityRt) security;
rtFORTS.NewOrder(OrderType.Limit, isBuy, price, quintity, "Entry");
Какие ещё можно использовать OrderType и где о ISecurityRt можно почитать в TSLab API Docs ?

Наверх
#4558 - Mon Apr 19 2010 04:17 PM Re: Выставление ордеров через API TSLab [Re: Craft]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Originally Posted By: Craft
Какие ещё можно использовать OrderType

Fall, Growth, Limit и Market

Наверх
#4559 - Mon Apr 19 2010 04:26 PM Re: Выставление ордеров через API TSLab [Re: ast]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: ast
Originally Posted By: Craft
Какие ещё можно использовать OrderType

Fall, Growth, Limit и Market
ast, источник информации можешь указать?

Наверх
#4560 - Mon Apr 19 2010 04:29 PM Re: Выставление ордеров через API TSLab [Re: Craft]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
в visual studio поставь: TSLab.DataSource.OrderType. - после точки будет подсказка.

Наверх
#4561 - Mon Apr 19 2010 04:31 PM Re: Выставление ордеров через API TSLab [Re: ast]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
в студии есть окно Object Viewer. В нем можно посмотреть информацию по любому классу.

Наверх
#4562 - Mon Apr 19 2010 04:38 PM Re: Выставление ордеров через API TSLab [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
А в SharpDevelop где глянуть? И что это за типы ордеров Fall (падение), Growth (рост) - аналоги Стоп или?

Наверх
#4563 - Mon Apr 19 2010 04:52 PM Re: Выставление ордеров через API TSLab [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
в SharpDevelop не знаю, но думаю подобный инструмент там есть.

стоп - это частный случай этих заявок.
Fall - купить/продать если цена упадет до или ниже уровня
Growth - купить/продать если цена вырастет до или выше уровня
На них действуют общие настройки проскальзывания.

Наверх
#4564 - Mon Apr 19 2010 05:38 PM Re: Выставление ордеров через API TSLab [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Спасибо за разъяснения, Nektodron.

Наверх
#4591 - Mon Apr 19 2010 11:12 PM Re: Выставление ордеров через API TSLab [Re: Craft]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Nektodron, захотелось сразу опробовать ISecurityRt, попробовал на примере из хэлпа:

int barsCount = source.Bars.Count;
for (int i = 0; (i < barsCount); i++)
var rtFORTS = (ISecurityRt) security;
{
IPosition le = source.Positions.GetLastActiveForSignal("LE");
if (le == null)
{
//source.Positions.BuyIfGreater(i + 1, 1, high[i], "LE");
source.Positions.ISecurityRt.NewOrder(OrderType.Growth, isBuy, high[i], 1, "LE");

}
else
{
le.CloseAtStop(i + 1, low[i], "LX");
}
IPosition se = source.Positions.GetLastActiveForSignal("SE");
if (se == null)
{
//source.Positions.SellIfLess(i + 1, 1, low2[i], "SE");
source.Positions.rtFORTS.NewOrder(OrderType.Fall, isSell, low2[i], 1, "SE");
}
else
{
se.CloseAtStop(i + 1, high2[i], "SX");
}
}

Выдаёт ошибку:
Элемент 'ВнешниСкрипт' содержит ошибку:
c:\Users\Пользователь\Documents\SharpDevelop Projects\ISecurityRt.cs(48,4) : error CS1023: Внедренный оператор не может быть объявлением или оператором с идентификатором

Подскажите, что я делаю не так. Куда необходимо поместить var rtFORTS = (ISecurityRt) security;? Перепробовал все варианты, может проблема в оформлении класса ISecurityRt, помогите оформить правильно?

Наверх
#4599 - Tue Apr 20 2010 09:24 AM Re: Выставление ордеров через API TSLab [Re: Craft]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
To Craft: я написал так в начале функции Execute:
ISecurityRt sourceRt = source as ISecurityRt;

Ну и, соответственно, потом:
Code:
TSLab.DataSource.OrderType fall = TSLab.DataSource.OrderType.Fall;
buy = true;
sourceRt.NewOrder(fall, buy, myPrice, 1, "Long");


Может, что-то тут коряво. Нектодрон, поправьте, пожалуйста.

Появилось еще несколько вопросов. Оказывается, непросто писать скрипт без позиций...
Судя по форуму, это пытаются делать только 2-3 человека, остальные даже боятся приступать, т.к. нет документации. Давайте попробуем восполнить этот пробел!

Итак:
1. Не получается выбрать ордера с сортировкой. Делаю, как вы привели в примере:
var orders = sourceRt.Orders.OrderBy(ord => ord.Date);

Получаю:
System.Collections.Generic.IEnumerable<TSLab.Script.Realtime.IOrder>" не содержит определение для "OrderBy".

2. Как можно выбрать не все ордера, а только, например, по какому-то сигналу?
Кстати, поле Comment в ордере - соответствует string signal в команде NewOrder?

3. Как можно выяснить, что какой-то ордер на открытие позиции (например, типа Fall) мы уже закрыли на предыдущей итерации (например, ордером типа Growth)?
Как это происходит без NewOrder понятно, там остается открытой позиция, а тут позиции ведь как таковой нет.




Наверх
#4601 - Tue Apr 20 2010 10:18 AM Re: Выставление ордеров через API TSLab [Re: ast]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
1. надо добавить
using System.Linq;

2. посмотрите в MSDN документацию по linq. Там есть много функций для выборки и сортировок.

3. Если у вас общая позиция, то достаточно просто иметь текущее значение в лотах, чтоб понять, что позиция закрыта. Если же хотите вести одновременно несколько разных, то придется писать целую систему, как в TSLab с разбором комментариев.

Наверх
#4617 - Tue Apr 20 2010 11:12 AM Re: Выставление ордеров через API TSLab [Re: Nektodron]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
1. ok.

2. уж послали так послали... Там чего-то так много всего. А можно конкретную ссылку с примерами по выборке?

3. Да, у меня общая позиция. А как узнать текущее значение в лотах? Перебирать все ордера и подсчитывать?

И еще вопрос. Правильно я понимаю, что такой скрипт никак нельзя протестировать - только сразу в бой?

Наверх
#4619 - Tue Apr 20 2010 11:24 AM Re: Выставление ордеров через API TSLab [Re: ast]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
2. если знакомы с SQL то с помощью Linq можно писать выражения очень похожие, используя select и where.
3. Ну вот функция, что я вам дал и выдает значение в лотах. Кроме того нужно активные заявки учесть, которые уже стоят.

Да, тестировать такой скрипт нельзя.

Наверх
#4624 - Tue Apr 20 2010 11:57 AM Re: Выставление ордеров через API TSLab [Re: Nektodron]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Один еще вопрос не ответили:
поле Comment в ордере - соответствует string signal в команде NewOrder?
Т.е. по нему можно же выбирать, например, все длинные позиции, которые при открытии были обозначены как "Long"?

Nektodron, я, наверно, поразбираюсь еще с Linq и прочим, но почему вы не хотите дать пользователям рабочий пример скрипта с использованием NewOrder как основу?
Вы же такой пример можете написать минут за 10-15, а каждому пользователю придется потратить несколько дней, а то и недель.

И еще, вы понимаете, что я занимаюсь этим извращением с NewOrder только по одной причине: нет нормальных лимитных заявок по открытию и закрытию позиций, о чем написано в начале темы.
Вы что-то с этим решаете?

Наверх
#4625 - Tue Apr 20 2010 12:05 PM Re: Выставление ордеров через API TSLab [Re: ast]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: ast
Nektodron, я, наверно, поразбираюсь еще с Linq и прочим, но почему вы не хотите дать пользователям рабочий пример скрипта с использованием NewOrder как основу?
Вы же такой пример можете написать минут за 10-15, а каждому пользователю придется потратить несколько дней, а то и недель.
Присоединяюсь, что за стиль общения выдавать огрызки кода вырванные из контекста?

Наверх
#4636 - Tue Apr 20 2010 02:37 PM Re: Выставление ордеров через API TSLab [Re: Craft]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Nektodron, как в текущем контексте необходимо прописать Buy и Sell, чтобы программа/лаборатория созданная для торговли наконец-то начала понимать, что такое - Купить и что такое - Продать?
Code:
public virtual void Execute(IContext ctx, ISecurity source)
{
	ISecurityRt sourceRt = source as ISecurityRt;
...
Условия алгоритмам Hi_Low
...
int barsCount = source.Bars.Count;
for (int i = 0; (i < barsCount); i++)
{
	IPosition le = source.Positions.GetLastActiveForSignal("LE");
	if (le == null)
	{
		TSLab.DataSource.OrderType Growth = TSLab.DataSource.OrderType.Growth;
		sourceRt.NewOrder(Growth, Buy, high[i], 1, "LE");
	}
	else
	{
		le.CloseAtStop(i + 1, low[i], "LX");
	}
	IPosition se = source.Positions.GetLastActiveForSignal("SE");
	if (se == null)
	{
		TSLab.DataSource.OrderType Fall = TSLab.DataSource.OrderType.Fall;
		sourceRt.NewOrder(Fall, Sell, low2[i], 1, "SE");
	}
	else
	{
		se.CloseAtStop(i + 1, high2[i], "SX");
	}
}

Элемент 'ВнешниСкрипт' содержит ошибку:
c:\Users\Пользователь\Documents\SharpDevelop Projects\ISecurityRt.cs(61,32) : error CS0103: Имя 'Buy' отсутствует в текущем контексте
c:\Users\Пользователь\Documents\SharpDevelop Projects\ISecurityRt.cs(74,30) : error CS0103: Имя 'Sell' отсутствует в текущем контексте

Наверх
#4637 - Tue Apr 20 2010 02:40 PM Re: Выставление ордеров через API TSLab [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Либо пользуетесь позициями, либо NewOrder.
Солянка не возможна.
Buy и Sell - это должны быть числа - цены.

Наверх
#4638 - Tue Apr 20 2010 02:46 PM Re: Выставление ордеров через API TSLab [Re: Craft]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Originally Posted By: Craft
Имя 'Buy' отсутствует в текущем контексте


Его же надо сначала объявить.
Например, так:
bool Buy = true;

(и false, если надо продать)

Наверх
Page 2 of 7 < 1 2 3 4 5 6 7 >


Moderator:  ViL, sar