#10133 - Mon Aug 16 2010 03:28 PM
Re: Практические примеры API
[Re: ZSE]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Ок, отправил. Тема: Реал-тайм.
P. S. Отправил новый э-мэйл с темой: Реал-тайм 2. В прошлом были более старые логи.
Отредактировано Craft (Mon Aug 16 2010 03:34 PM)
|
Наверх
|
|
|
|
#10134 - Mon Aug 16 2010 03:42 PM
Re: Практические примеры API
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Вы не используете позиции, а выставляете заявки сами? Отправил нужный лог, предыдущие более старые.
|
Наверх
|
|
|
|
#10158 - Tue Aug 17 2010 12:55 AM
Re: Практические примеры API
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Концептуально алгоритм работает, так (за основу раздела "//Торговля" взяты примеры приведённые выше в теме): using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;
using TSLab.Script.Realtime;
namespace TSLab.Samples
{
public class Final : IExternalScript
{
public …
public virtual void Execute(IContext ctx, ISecurity sec)
{
var …
IList<double> …
{
int barsCount = sec.Bars.Count;
for (int i = 50; (i < barsCount); i++)
{
if …
else …
{
BT = …;
ST = …;
}
}
}
// Торговля.
if (!sec.Positions.IsRealtime) return;
{
int i = sec.Bars.Count - 1;
if (i < 0) return;
//текущая позиция. если больше нуля-в лонге. меньше нуля-в шорте
double lotsBalance = 0;
//пробегаемся по всем исполненным ордерам. необходимо текущее число лотов
foreach (IOrder order in secRt.Orders)
//Проверка что мы на этом баре не ставили заявки!!!
if (order.Date >= sec.Bars[i].Date) return;
else
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.Growth, true, BT, Contracts, "LE");
//ставим стоп-лимит на селл
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, ST, Contracts, "SE");
}
else
if (lotsBalance < 0)
{
//закрываем отрицательный баланс покупкой
secRt.NewOrder(TSLab.DataSource.OrderType.Growth, true, BT, -lotsBalance + Contracts, "SXLE");
{
//если есть промежуточный профит закрываем nn контрактов
if (sec.LowPrices[i] <= sec.Positions.LastPositionActive.EntryPrice - OtskokS)
secRt.NewOrder(TSLab.DataSource.OrderType.Growth, true, sec.Positions.LastPositionActive.EntryPrice - buS, nn, "SXTP");
}
}
else
{
//закрываем положительный баланс лотов продажей
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, ST, lotsBalance - Contracts, "LXSE");
{
//если есть промежуточный профит закрываем nn контрактов
if (sec.HighPrices[i] >= sec.Positions.LastPositionActive.EntryPrice + OtskokL)
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, sec.Positions.LastPositionActive.EntryPrice + buL, nn, "LXTP");
}
}
}
}
}
}
Прошу помощи, как довести алгоритм до робастного состояния. Из-за скудности навыков программирования, буду признателен, если внесёте исправления в раздел "//Торговля", т. к. боюсь не все замечания смогу воспринять правильно.
|
Наверх
|
|
|
|
#10196 - Tue Aug 17 2010 12:09 PM
Re: Практические примеры API
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Алгоритм работать не будет. Я уже вам писал, что нельзя смешивать ручное управление заявками и позиции. Либо то, либо другое. sec.Positions.LastPositionActive - это использовать нельзя. Nektodron, подскажите, что нужно использовать вместо sec.Positions.LastPositionActive, чтобы определить цену открытия позиции? Как оформить раздел "//Торговля", чтобы при достижении определённого уровня профита, часть контрактов открытой позиции могла быть закрыта в безубыток при неблагоприятном движении цены?
|
Наверх
|
|
|
|
#10199 - Tue Aug 17 2010 12:40 PM
Re: Практические примеры API
[Re: Craft]
|
Carpal Tunnel
Registered: Thu Oct 23 2008
Записи: 5492
|
|
Наверх
|
|
|
|
#10210 - Tue Aug 17 2010 02:16 PM
Re: Практические примеры API
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Nektodron, помогите довести скрипт до робастности, надеюсь, пригодится ни одному мне пример использования реал-тайм с возможностью фиксации части прибыли/позиции. Вот на что хватила интуитивных навыков программирования с включением подсказанного выше Вами кода: using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;
using TSLab.Script.Realtime;
namespace TSLab.Samples
{
public class Final : IExternalScript
{
public …
public virtual void Execute(IContext ctx, ISecurity sec, ISecurityRt rtSec, out double curQty, out double curPrice)
{
var …
IList<double> …
{
int barsCount = sec.Bars.Count;
for (int i = 50; (i < barsCount); i++)
{
if …
else …
{
BT = …
ST = …
}
}
}
// Торговля.
if (!sec.Positions.IsRealtime) return;
{
int i = sec.Bars.Count - 1;
if (i < 0) return;
curQty = 0;
curPrice = 0;
if (rtSec != null)
{
var orders = rtSec.Orders.OrderBy(ord => ord.Date);
foreach (var order in orders)
{
if (order.IsExecuted)
{
int bs = (order.IsBuy ? 1 : -1);
double qty = order.Quantity * bs;
double price = order.Price;
double newQty = curQty + qty;
bool isGrowPos = Math.Abs(newQty) > Math.Abs(curQty);
if (isGrowPos)
{
curPrice = newQty == 0 ? 0 : (curQty*curPrice + qty*price)/newQty;
}
curQty = newQty;
}
}
}
curPrice = curQty == 0 ? 0 : curPrice;
//текущая позиция. если больше нуля-в лонге. меньше нуля-в шорте
double lotsBalance = 0;
//пробегаемся по всем исполненным ордерам. необходимо текущее число лотов
foreach (IOrder order in secRt.Orders)
//Проверка что мы на этом баре не ставили заявки!!!
if (order.Date >= sec.Bars[i].Date) return;
else
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.Growth, true, BT, Contracts, "LE");
//ставим стоп-лимит на селл
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, ST, Contracts, "SE");
}
else
if (lotsBalance < 0)
{
//закрываем отрицательный баланс покупкой
secRt.NewOrder(TSLab.DataSource.OrderType.Growth, true, BT, -lotsBalance + Contracts, "SXLE");
{
//если есть промежуточный профит закрываем nn контрактов
if (sec.LowPrices[i] <= price - OtskokS)
secRt.NewOrder(TSLab.DataSource.OrderType.Growth, true, price - buS, nn, "SXTP");
}
}
else
{
//закрываем положительный баланс лотов продажей
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, ST, lotsBalance - Contracts, "LXSE");
{
//если есть промежуточный профит закрываем nn контрактов
if (sec.HighPrices[i] >= price + OtskokL)
secRt.NewOrder(TSLab.DataSource.OrderType.Fall, false, price + buL, nn, "LXTP");
}
}
}
}
}
}
При компиляции выдаёт ошибку: 'TSLab.Samples.Final' не реализует член интерфейса 'TSLab.Script.Handlers.IExternalScript.Execute(TSLab.Script.Handlers.IContext, TSLab.Script.ISecurity)' (CS0535) - C:\Users\Пользователь\Documents\SharpDevelop Projects\DT+AverRT\DT+AverRT\Properties\AssemblyInfo.cs:10,15
|
Наверх
|
|
|
|
#10256 - Tue Aug 17 2010 11:51 PM
Re: Практические примеры API
[Re: Craft]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
2 месяца авансируя являюсь официальным пользователем вашего софта, не имея возможности осуществлять торговлю с желаемой степенью соотношения риск/доходность (промежуточная фиксация прибыли/позы) в надежде на помощь от разработчиков (честно сказать первый раз встречаю такое чуткое отношение к своим пользователям, до этого приходилось перечитывать форумы разработчиков Вэлса, Мульта и ТрейдСтейшн) в доведении алгоритма до разумных соотношений и применения его торговле. Первоначально обращался за помощью в подветку Forums » Разработка МТС и торговля с ее помощью в системе TSLab » Создание алгоритма при помощи TSLab API » Статьи, примеры 1. Laber, большое спасибо за проделанную работу, с большим интересом и пользой для себя изучаю этот раздел. При создании алгоритма с использованием API, есть ещё один очень интересный/важный момент - исполнение ордеров риал-тайм, а не по закрытию бара. Не могли бы Вы для примера переделать алгоритм с использованием: TSLab.DataSource.OrderType.Growth и TSLab.DataSource.OrderType.Fall? Очень прошу создать один пример с использованием этих команд. 2. Laber, помогите плиз с риал-таймом, есть наработки, но они корявые, не хочу показывать чтобы не сбить Вас с оптимального пути - уверен у Вас получится практичней и продуманей. 3. 4. Laber, добрый день. Уж, две недели прошло, нет новой информации относительно написания примера для реал-тайм? Получал вежливые ответы: 1. Интересно попробовать. Хотя я этим не пользовался... Надо будет разобраться как это реализовать. 2. В конечном счете для практической работы важен именно режим реального времени (риэл-тайм). Изготовление такого примера есть в планах, и с учетом Ваших пожеланий этот пункт будет иметь более высокий приоритет, можно ожидать его реализации в ближайшее время. 3. Как только появится - будет опубликовано. 4. Реал-тайм - это отдельная песня. В примерах показана логика системы, и упор делается на получение доходной стратегии. Техника работы с ТСлабом скорее всего обсуждается где-нибудь на форуме, на какой-нибудь специальной ветке. Отчаявшись ждать помощи от Laber, по его совету (Техника работы с ТСлабом скорее всего обсуждается где-нибудь на форуме, на какой-нибудь специальной ветке.) прошу помощи в ветке Forums » Разработка МТС и торговля с ее помощью в системе TSLab » Создание алгоритма при помощи TSLab API » Практические примеры API. Nektodron, можно ожидать помощи от разработчиков по доведению скрипта до робастного состояния??? Для Вас это дело 15 минут чтобы ткнуть носом неразумного, подсказать, помочь и забыть о проблемы, для меня - 2 меся авансовых надежд.
|
Наверх
|
|
|
|
#10272 - Wed Aug 18 2010 10:49 AM
Re: Практические примеры API
[Re: andy]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
andy, Вы меня заинтриговали, составить ТЗ на пример от разработчиков скрипта с исполнением торговых приказов реал-тайм? С радостью сейчас отправлю на contact@tslab.ru, мне очень интересно сколько по времени займёт согласования сроков и цена за 15 мин. практического труда специалиста для нужд пользователей.
|
Наверх
|
|
|
|
#10274 - Wed Aug 18 2010 11:05 AM
Re: Практические примеры API
[Re: Craft]
|
Pooh-Bah
Registered: Mon Feb 16 2009
Записи: 2130
|
andy, Вы меня заинтриговали, составить ТЗ на пример от разработчиков скрипта с исполнением торговых приказов реал-тайм? С радостью сейчас отправлю на contact@tslab.ru, мне очень интересно сколько по времени займёт согласования сроков и цена за 15 мин. практического труда специалиста для нужд пользователей. Сформулируйте развернутое ТЗ, какие вопросы вы бы хотели осветить. Выложите сюда. Мы обсудим. Утвердим. Далее Лабер сделает, при условии что это пример, а не готовый комбайн на пару дней работы по кодингу :-). Мы проверим и выложим как пример.
|
Наверх
|
|
|
|
#10275 - Wed Aug 18 2010 11:16 AM
Re: Практические примеры API
[Re: andy]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Вот текст из отправленного письма на contact@tslab.ru Добрый день, дорогие разработчики программы автоматической торговли TSLab. Прошу согласовать сроки и деньги по написанию примера торговли реал-тайм через вашу программу. В качестве ТЗ прошу использовать Модификацию скрипта Hi-Lo по данному адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211В какие сроки и сколько денег будут стоить - создание примера работы для данного скрипта через реал-тайм? С уважением, Юрий
|
Наверх
|
|
|
|
#10276 - Wed Aug 18 2010 11:35 AM
Re: Практические примеры API
[Re: Craft]
|
Pooh-Bah
Registered: Mon Feb 16 2009
Записи: 2130
|
Вот текст из отправленного письма на contact@tslab.ru Добрый день, дорогие разработчики программы автоматической торговли TSLab. Прошу согласовать сроки и деньги по написанию примера торговли реал-тайм через вашу программу. В качестве ТЗ прошу использовать Модификацию скрипта Hi-Lo по данному адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211В какие сроки и сколько денег будут стоить - создание примера работы для данного скрипта через реал-тайм? С уважением, Юрий Здорово. Четкое ТЗ то где ?
|
Наверх
|
|
|
|
#10277 - Wed Aug 18 2010 11:43 AM
Re: Практические примеры API
[Re: andy]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Техническое задание, следующее:
1. Создать пример для Модификации скрипта Hi-Lo с исполнением ордеров реал-тайм, т. е. создать пример скрипта с исполнением ордеров в разделе "//Торговля" ни как сейчас i+1, а с использованием ордеров реал-тайм. 2. Частичное закрытие позиции скользящим стопом (очень важно с т. з. учёта цены исполнения открытой позиции и учёта частично закрытых и оставшихся оредров). 3. Пример должен содержать использование стопов (открытие и переворот позиции с переносом стопа в случае не исполнения на следующий бар) и маркетов (частичное закрытие скользящим стопом).
Задача примера скрипта с использованием исполнения ордеров реал-тайм, продемонстрировать клиентам на примере, как можно больше возможностей программы TSLab по реал-тайму.
|
Наверх
|
|
|
|
#10279 - Wed Aug 18 2010 12:00 PM
Re: Практические примеры API
[Re: Craft]
|
Pooh-Bah
Registered: Mon Feb 16 2009
Записи: 2130
|
Техническое задание, следующее:
1. Создать пример для Модификации скрипта Hi-Lo с исполнением ордеров реал-тайм, т. е. создать пример скрипта с исполнением ордеров в разделе "//Торговля" ни как сейчас i+1, а с использованием ордеров реал-тайм. Еще раз. ТЗ где ? Где четко описано условия входа, условия выхода ( тут возможно придираюсь, т.к. понятно что есть Hi-Lo, но будем последовательны до конца ). Необходима четкая постановка задачи программисту. Что есть в Вашем понимании =а с использованием ордеров реал-тайм=. Как должны вести себя заявки-сделки. Нюансы. Что вам именно необходимо.
|
Наверх
|
|
|
|
#10280 - Wed Aug 18 2010 12:09 PM
Re: Практические примеры API
[Re: andy]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
andy, дополнил свой пост выше, с сигналами всё понятно, принципы и условия исполнения расписал, если вашими программистом будет что-то не понятно (а я уверен, что им всё понятно), задавайте вопросы распишу более подробно. Могу достать темплейт ТЗ из прошлой жизни и листов на 20 расписать, но суть от этого не изменится - заменить раздел //Торговля с приказов i+1 на реал-тайм.
|
Наверх
|
|
|
|
#10281 - Wed Aug 18 2010 12:20 PM
Re: Практические примеры API
[Re: Craft]
|
Pooh-Bah
Registered: Mon Feb 16 2009
Записи: 2130
|
Могу достать темплейт ТЗ из прошлой жизни и листов на 20 расписать, но суть от этого не изменится - заменить раздел //Торговля с приказов i+1 на реал-тайм. Это лишнее. Далее вопросы. Распишите. 1. Условия входа. Подробнее можно ? =открытие и переворот позиции с переносом стопа в случае не исполнения на следующий бар= Весь алгоритм четко нужно описать. Как входим, как переворачиваемся. Какими заявками. Какие нюансы. 2. Условия ведения позиции. =Частичное закрытие позиции скользящим стопом= Что есть скользящий стоп ? Какой принцип его работы реализовать ? Частичное закрытие - что имеется ввиду ? Заявка имеет случайный обьем неисполнения ? Что делаем с невошедшим по сигналу остатком ? Убиваем или докупаем ? 3. Условия закрытия позиции. Ну и тд Нужен четкий алгоритм действий со всеми нюансами. ТЗ мне тоже за вас написать ? :-)
Отредактировано andy (Wed Aug 18 2010 12:21 PM)
|
Наверх
|
|
|
|
#10283 - Wed Aug 18 2010 12:41 PM
Re: Практические примеры API
[Re: andy]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
1. Условия входа. Подробнее можно ? =открытие и переворот позиции с переносом стопа в случае не исполнения на следующий бар= Весь алгоритм четко нужно описать. Как входим, как переворачиваемся. Условия входа и переворота расписаны в логике скрипта в Теме High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211Какими заявками. Какие нюансы. Вход и переворот через стоп ордера, при наступлении условия срабатывания скользящий стоп – маркет ордер с закрытием половины открытой позиции. 2. Условия ведения позиции. =Частичное закрытие позиции скользящим стопом= Что есть скользящий стоп ? Какой принцип его работы реализовать ? За пример берётся скрипт в Теме High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211Частичное закрытие - что имеется ввиду ? Заявка имеет случайный обьем неисполнения ? закрытие половины открытой позиции (можно количеством контрактов задаваемых пользователем, как вам будет проще) маркет ордером Что делаем с невошедшим по сигналу остатком ? Убиваем или докупаем ? Тоже, что и в скрипте из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211 3. Условия закрытия позиции. Те же, что и в скрипте из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211ТЗ мне тоже за вас написать ? :-) andy, за основу берётся скрипт из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211 90% технических вопросов в нём уже предусмотрено, необходимо переделать скрипт на реал-тайм.
|
Наверх
|
|
|
|
|
|