У вас не стоит Flash Player
Page 4 of 7 < 1 2 3 4 5 6 7 >
Настройки
#4751 - Thu Apr 22 2010 12:01 PM Re: Выставление ордеров через API TSLab [Re: ast]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
ЭЭЭЭ. Вы наверное имели ввиду, что хотите чтобы ордер на закрытие оставался и после указанного Вами бара? Ибо после указанного Вами бара он просто отменяется. Проще всего это предусмотреть в коде. то есть выставлять его еще раз. С лимитными есть проблема- с точки зрения позиций их не открыть. Однако NewOrder я бы не стал пользоваться-у Вас получится куча открытых позиций. Если Вы делаете не скальперскую стратегию, то зачем Вам лимитник?

Наверх
#4757 - Thu Apr 22 2010 12:16 PM Re: Выставление ордеров через API TSLab [Re: anothar]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: anothar
...Если Вы делаете не скальперскую стратегию, то зачем Вам лимитник?
Для закрытия по тейкпрофиту, например, по фиксированной цене.

Наверх
#4761 - Thu Apr 22 2010 12:57 PM Re: Выставление ордеров через API TSLab [Re: Craft]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Если вам критично именно по указанной цене, то вы можете разбить логику для тестирования и для реальной торговли. При реальной торговле действовать через NewOrder а при тестировании через позиции.

Наверх
#4762 - Thu Apr 22 2010 12:59 PM Re: Выставление ордеров через API TSLab [Re: anothar]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Originally Posted By: anothar
ЭЭЭЭ. Вы наверное имели ввиду, что хотите чтобы ордер на закрытие оставался и после указанного Вами бара?


Именно так.

Originally Posted By: anothar
Ибо после указанного Вами бара он просто отменяется. Проще всего это предусмотреть в коде. то есть выставлять его еще раз.


Если бы. Я тоже так думал. Но TSLab думает иначе.
Если лимитник не сработал он почему-то выставляет закрытие по рынке, что мне совершенно ни к чему.

Наверх
#4764 - Thu Apr 22 2010 01:10 PM Re: Выставление ордеров через API TSLab [Re: ast]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
А я кажется понял: Вы имели ввиду тот случай, когда проскальзывание установлено очень маленьким и сработал стопарь, а ордер не сбился? Да, тут придется юзать NewOrder. Отвратная это вещь... Вам придется вычислять текущую позицию ручками... Могу привести пример того как ее вычислить)))

Наверх
#4765 - Thu Apr 22 2010 01:19 PM Re: Выставление ордеров через API TSLab [Re: anothar]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Попробую вечером(скорее ночью)( если никто раньше не выложит))) выложить более-менее полноценный пример с разделением логики на случай лаборатории и не и с выставлением лимитника.

Наверх
#4768 - Thu Apr 22 2010 01:52 PM Re: Выставление ордеров через API TSLab [Re: anothar]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: anothar
Попробую вечером(скорее ночью)( если никто раньше не выложит))) выложить более-менее полноценный пример с разделением логики на случай лаборатории и не и с выставлением лимитника.
anothar, очень просим, если можно поподробней, для "тонких знатоков" С#, наподобие меня.

Наверх
#4790 - Thu Apr 22 2010 03:47 PM Re: Выставление ордеров через API TSLab [Re: anothar]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Originally Posted By: anothar
А я кажется понял: Вы имели ввиду тот случай, когда проскальзывание установлено очень маленьким и сработал стопарь


Проскальзывание вообще установлено в 0.

Вот давайте для понятности опишу пример.

В 10:30 я покупаю бумагу по 100 рублей.
И выставляю тейк-профит на 110.
Моя цель - продать именно по 110.

В 10:31 мой скрипт выставляет тейк-профит по 110.
Но цена еще пока не дошла до 110.
Я думаю, что логика должна быть такая: эта заявка с тейк-профитом висит до тех пор пока цена не дойдет до 110 (хоть до 6 вечера).
А у TSLab логика другая - если в 10:31 тейк-профит не сработал, он выставляет в 10:32 заявку на закрытие позиции ПО РЫНКУ.

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

Registered: Thu Jan 21 2010
Записи: 319
По логике, Лимитная заявка, если не исполнена должна переноситься с бара на бар (т. е. старая снимать и размещаться новая на каждом баре) с проверкой условия исполнения (это для случаев, когда при закрытии бара уровень Лимитного ордера может изменяться).

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

Registered: Tue Mar 23 2010
Записи: 415
По логике да, но вот тут почему-то не так.

Я вообще не понимаю, как остальные-то торгуют и этого не замечают?
Или все пока только тестируют на истории.
Или если торгуют, то не контролируют как у них происходит вход-выход и как это соотносится со скриптом в тестировании?

Наверх
#4802 - Thu Apr 22 2010 04:45 PM Re: Выставление ордеров через API TSLab [Re: ast]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Блин у меня лаб что-то сломался. То что он не переносит позиции-это одно и не страшно-можно в коде каждый раз заново ставить. А вот то что закрывает по рынку-это весьма странно и мне не верится... Но проверить сегодня я не могу. Так что если есть время и игровой счет.. Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;

namespace HourStrategy
{
public class TestScript : IExternalScript
{

#region IExternalScript Members

public void Execute(IContext ctx, ISecurity sec)
{

for (int i = 0; i < sec.Bars.Count; i++)
{
if (sec.Positions.LastLongPositionActive == null)
{
sec.Positions.BuyAtMarket(i+1,0, "Buy");
}
else
{
sec.Positions.LastLongPositionActive.CloseAtProfit(i+1, 2 * sec.OpenPrices[i], "Close");
}

}
}

#endregion
}
}
если закроется хотя бы раз-значит по рынку и надо тут подумать.

Наверх
#4806 - Thu Apr 22 2010 05:17 PM Re: Выставление ордеров через API TSLab [Re: anothar]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Originally Posted By: anothar
То что он не переносит позиции-это одно и не страшно-можно в коде каждый раз заново ставить. А вот то что закрывает по рынку-это весьма странно и мне не верится...


Да в коде-то у меня ставится.. Только толку нет.
И мне сначала не поверилось.

Посмотрите http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=2758#Post2758

Наверх
#4812 - Thu Apr 22 2010 06:01 PM Re: Выставление ордеров через API TSLab [Re: ast]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Я прочитал. Смысл тот же что я и описал. Цена дотрагивается до указанного Вами значения, после чего( поскольку на самом деле то тейкпрофит в лабе-это стоп-заявка) выставляется лимитник. Если Вы поставили проскальзывание 0, то он выставляется по цене стопаря, но цена только затронула эту цену-и потом пошла вниз. Ваш лимитник на этом баре таким образом не исполнился. На след баре ТСЛаб закрывает по рынку. Ну что поделать-либо извращаться через neworder либо ставить соответствующее проскальзывание.

Наверх
#4815 - Thu Apr 22 2010 06:18 PM Re: Выставление ордеров через API TSLab [Re: anothar]
ast Offline
addict

Registered: Tue Mar 23 2010
Записи: 415
Нет, смысл не тот же.

Originally Posted By: anothar
Цена дотрагивается до указанного Вами значения, после чего( поскольку на самом деле то тейкпрофит в лабе-это стоп-заявка) выставляется лимитник.


Она еще ни до чего не дотрагивается. Я выставляю тейк-профит, как только вхожу в позицию.

Наверх
#4817 - Thu Apr 22 2010 06:40 PM Re: Выставление ордеров через API TSLab [Re: ast]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Хорошо. Я конечно еще посмотрю что в лабе происходит-когда его починю))))Понятно что Вам нужно знать как выставлять заявки с помощью NewOrder и как потом считать позиции.

Наверх
#4820 - Thu Apr 22 2010 07:29 PM Re: Выставление ордеров через API TSLab [Re: anothar]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: anothar
Хорошо. Я конечно еще посмотрю что в лабе происходит-когда его починю))))Понятно что Вам нужно знать как выставлять заявки с помощью NewOrder и как потом считать позиции.
Да, anothar, помоги разобраться, как выставить Лимит и Стоп на открывшийся бар.

Наверх
#4831 - Thu Apr 22 2010 11:05 PM Re: Выставление ордеров через API TSLab [Re: Craft]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Вот небольшой пример. в нем используется стек заявок. До конца в нем не уверен, собственно говоря вот сабж:http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=4829&#Post4829
как получу на него ответ исправлю и дополню пример.

public void Execute(IContext ctx, ISecurity sec)
{
//проверка на лабораторию-если не реальная торговля-выходим
if (!sec.Positions.IsRealtime) return;
int i = sec.Bars.Count() - 1;
if (i < 0) return;
//получаем биржевой стакан
IList<IQueueData> buyQueue=sec.GetBuyQueue(i);
IList<IQueueData> sellQueue = sec.GetSellQueue(i);
ISecurityRt secRt = sec as ISecurityRt;
if (secRt == null) return;
//текущая позиция. если больше нуля-значит в лонге. мееьше нуля-в шорте
double lotsBalance = 0;
//пробегаемся по всем исполненным лимитникам-нам необходимо текущее число лотов
foreach (IOrder order in secRt.Orders)
if (order.OrderType == TSLab.DataSource.OrderType.Limit)
{
lotsBalance += order.IsBuy ? (order.Quantity-order.RestQuantity) :
(-order.Quantity+order.RestQuantity);
//для примера-если ордер не исполнился-убиваем
if (!order.IsExecuted) secRt.CancelOrder(order);
}


//условие-у нас нулевой баланс лотов
if (lotsBalance == 0)
{
//ставим лимитник на бай-хотим выше остальных
secRt.NewOrder(TSLab.DataSource.OrderType.Limit, true, buyQueue[0].Price + 0.01, 1, "Long");
//ставим лимитник на продажу-хотим ниже всех
secRt.NewOrder(TSLab.DataSource.OrderType.Limit, false, sellQueue[0].Price - 0.01, 1, "Short");
}
else
if (lotsBalance < 0)
{
//закрываем отрицательный баланс покупкой secRt.NewOrder(TSLab.DataSource.OrderType.Limit, true, buyQueue[0].Price + 0.01, -lotsBalance, "Long");
}
else
{
//закрываем положительный баланс лотов продажей
secRt.NewOrder(TSLab.DataSource.OrderType.Limit, false, sellQueue[0].Price - 0.01, lotsBalance, "Short");
}



}

Наверх
#4941 - Mon Apr 26 2010 10:50 AM Re: Выставление ордеров через API TSLab [Re: anothar]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: anothar
Вот небольшой пример. в нем используется стек заявок. До конца в нем не уверен, собственно говоря вот сабж:http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=4829&#Post4829
как получу на него ответ исправлю и дополню пример.
anothar, доброго здравия, ответ получен, пример остаётся без исправлений/дополнений?

Наверх
#4943 - Mon Apr 26 2010 10:58 AM Re: Выставление ордеров через API TSLab [Re: Craft]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Ага и Вам )))Но все-таки одно маленькое исправление:
//закрываем отрицательный баланс покупкой
secRt.NewOrder(TSLab.DataSource.OrderType.Limit, true, buyQueue[0].Price + 0.01, -lotsBalance, "Long");
-я тут забыл перенос вставить после комментов.
Эх жалко нельзя посты редактировать. Я предлагаю привести какой-нибудь новый пример, могу в нем использовать сжатие. Принимаю идею по поводу алгоритма-только простой, чем проще тем лучше. Пример постараюсь выложить сегодня или завтра вечером/ночью.

Наверх
#4944 - Mon Apr 26 2010 11:00 AM Re: Выставление ордеров через API TSLab [Re: anothar]
anothar Offline
journeyman

Registered: Thu Jan 07 2010
Записи: 85
Эх хорошо бы эти примеры потом еще в какую-нить отдельную тему, чтобы там были только они-без обсуждения и т.д.

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


Moderator:  ViL, sar