У вас не стоит Flash Player
Page 2 of 3 < 1 2 3 >
Настройки
#10133 - Mon Aug 16 2010 03:28 PM Re: Практические примеры API [Re: ZSE]
Craft Offline
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]
Craft Offline
enthusiast

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

Наверх
#10157 - Tue Aug 17 2010 12:00 AM Re: Практические примеры API [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
я не про лог спрашивал.
алгоритм на чем основал, использует позиции или сам выставляет заявки с помощью ISecurityRt

Наверх
#10158 - Tue Aug 17 2010 12:55 AM Re: Практические примеры API [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Концептуально алгоритм работает, так (за основу раздела "//Торговля" взяты примеры приведённые выше в теме):
Code:
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");			
					}				
				}
			}							
		}								
	}									
 }
Прошу помощи, как довести алгоритм до робастного состояния. Из-за скудности навыков программирования, буду признателен, если внесёте исправления в раздел "//Торговля", т. к. боюсь не все замечания смогу воспринять правильно.

Наверх
#10169 - Tue Aug 17 2010 09:50 AM Re: Практические примеры API [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Алгоритм работать не будет. Я уже вам писал, что нельзя смешивать ручное управление заявками и позиции. Либо то, либо другое.
sec.Positions.LastPositionActive - это использовать нельзя.

Наверх
#10196 - Tue Aug 17 2010 12:09 PM Re: Практические примеры API [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: Nektodron
Алгоритм работать не будет. Я уже вам писал, что нельзя смешивать ручное управление заявками и позиции. Либо то, либо другое.
sec.Positions.LastPositionActive - это использовать нельзя.
Nektodron, подскажите, что нужно использовать вместо sec.Positions.LastPositionActive, чтобы определить цену открытия позиции?
Как оформить раздел "//Торговля", чтобы при достижении определённого уровня профита, часть контрактов открытой позиции могла быть закрыта в безубыток при неблагоприятном движении цены?

Наверх
#10199 - Tue Aug 17 2010 12:40 PM Re: Практические примеры API [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492

Наверх
#10210 - Tue Aug 17 2010 02:16 PM Re: Практические примеры API [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Nektodron, помогите довести скрипт до робастности, надеюсь, пригодится ни одному мне пример использования реал-тайм с возможностью фиксации части прибыли/позиции.
Вот на что хватила интуитивных навыков программирования с включением подсказанного выше Вами кода:
Code:
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]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
2 месяца авансируя являюсь официальным пользователем вашего софта, не имея возможности осуществлять торговлю с желаемой степенью соотношения риск/доходность (промежуточная фиксация прибыли/позы) в надежде на помощь от разработчиков (честно сказать первый раз встречаю такое чуткое отношение к своим пользователям, до этого приходилось перечитывать форумы разработчиков Вэлса, Мульта и ТрейдСтейшн) в доведении алгоритма до разумных соотношений и применения его торговле.

Первоначально обращался за помощью в подветку Forums » Разработка МТС и торговля с ее помощью в системе TSLab » Создание алгоритма при помощи TSLab API » Статьи, примеры
1.
Originally Posted By: Craft
Laber, большое спасибо за проделанную работу, с большим интересом и пользой для себя изучаю этот раздел.
При создании алгоритма с использованием API, есть ещё один очень интересный/важный момент - исполнение ордеров риал-тайм, а не по закрытию бара. Не могли бы Вы для примера переделать алгоритм с использованием: TSLab.DataSource.OrderType.Growth и TSLab.DataSource.OrderType.Fall?
Очень прошу создать один пример с использованием этих команд.

2.
Originally Posted By: Craft
Laber, помогите плиз с риал-таймом, есть наработки, но они корявые, не хочу показывать чтобы не сбить Вас с оптимального пути - уверен у Вас получится практичней и продуманей.

3.
Originally Posted By: Craft
Конечно, Laber, Вы абсолютно правы, поэтому и попросил в ветке сделать одни пример:
http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211
Интересен/важен взгляд специалиста, сделайте пожалуйста один пример.

4.
Quote:
Laber, добрый день.
Уж, две недели прошло, нет новой информации относительно написания примера для реал-тайм?


Получал вежливые ответы:
1.
Originally Posted By: Laber
Интересно попробовать. Хотя я этим не пользовался...
Надо будет разобраться как это реализовать.

2.
Originally Posted By: Laber
В конечном счете для практической работы важен именно режим реального времени (риэл-тайм). Изготовление такого примера есть в планах, и с учетом Ваших пожеланий этот пункт будет иметь более высокий приоритет, можно ожидать его реализации в ближайшее время.

3.
Originally Posted By: Laber
Как только появится - будет опубликовано.

4.
Originally Posted By: Laber
Реал-тайм - это отдельная песня. В примерах показана логика системы, и упор делается на получение доходной стратегии. Техника работы с ТСлабом скорее всего обсуждается где-нибудь на форуме, на какой-нибудь специальной ветке.


Отчаявшись ждать помощи от Laber, по его совету (Техника работы с ТСлабом скорее всего обсуждается где-нибудь на форуме, на какой-нибудь специальной ветке.) прошу помощи в ветке Forums » Разработка МТС и торговля с ее помощью в системе TSLab » Создание алгоритма при помощи TSLab API » Практические примеры API.

Nektodron, можно ожидать помощи от разработчиков по доведению скрипта до робастного состояния???

Для Вас это дело 15 минут чтобы ткнуть носом неразумного, подсказать, помочь и забыть о проблемы, для меня - 2 меся авансовых надежд.

Наверх
#10259 - Wed Aug 18 2010 01:10 AM Re: Практические примеры API [Re: Craft]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Вы задаете вопросы, мы по мере сил стараемся на них ответить.
Писать код за вас у нас нет желания.
Мы не благотворительная организация.
На все ваши вопросы даются ответы, то что у вас не хватает квалификации именно в C# - это другой вопрос, мы это по моему уже обсуждали. Другие-то разбираются.

Какие пути решения ?
1. Разбираться дальше с матчастью.
2. Прислать нам ТЗ на contact@tslab.ru. Мы согласуем сроки и деньги. Реализуем.
Такая форма общения нами практикуется. Есть спрос.
3. Возможны персональные занятия по 1-2 часа в день в течении месяца. Skype. Webex. Шарится десктоп и идет общение.
Цена за обучение договорная. Пишите contact@tslab.ru. Обсудим.

Как видите при желании все решаемо.

Что касаемо Лабера, человек решает поставленные задачи. Как дело дойдет до примера, он будет сделан.

Наверх
#10272 - Wed Aug 18 2010 10:49 AM Re: Практические примеры API [Re: andy]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
andy, Вы меня заинтриговали, составить ТЗ на пример от разработчиков скрипта с исполнением торговых приказов реал-тайм?
С радостью сейчас отправлю на contact@tslab.ru, мне очень интересно сколько по времени займёт согласования сроков и цена за 15 мин. практического труда специалиста для нужд пользователей.

Наверх
#10274 - Wed Aug 18 2010 11:05 AM Re: Практические примеры API [Re: Craft]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: Craft
andy, Вы меня заинтриговали, составить ТЗ на пример от разработчиков скрипта с исполнением торговых приказов реал-тайм?
С радостью сейчас отправлю на contact@tslab.ru, мне очень интересно сколько по времени займёт согласования сроков и цена за 15 мин. практического труда специалиста для нужд пользователей.


Сформулируйте развернутое ТЗ, какие вопросы вы бы хотели осветить.
Выложите сюда. Мы обсудим. Утвердим.
Далее Лабер сделает, при условии что это пример, а не готовый комбайн на пару дней работы по кодингу :-).
Мы проверим и выложим как пример.

Наверх
#10275 - Wed Aug 18 2010 11:16 AM Re: Практические примеры API [Re: andy]
Craft Offline
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]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: Craft
Вот текст из отправленного письма на 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]
Craft Offline
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]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: Craft
Техническое задание, следующее:

1. Создать пример для Модификации скрипта Hi-Lo с исполнением ордеров реал-тайм, т. е. создать пример скрипта с исполнением ордеров в разделе "//Торговля" ни как сейчас i+1, а с использованием ордеров реал-тайм.


Еще раз.
ТЗ где ?

Где четко описано условия входа, условия выхода ( тут возможно придираюсь, т.к. понятно что есть Hi-Lo, но будем последовательны до конца ). Необходима четкая постановка задачи программисту. Что есть в Вашем понимании =а с использованием ордеров реал-тайм=. Как должны вести себя заявки-сделки. Нюансы. Что вам именно необходимо.

Наверх
#10280 - Wed Aug 18 2010 12:09 PM Re: Практические примеры API [Re: andy]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
andy, дополнил свой пост выше, с сигналами всё понятно, принципы и условия исполнения расписал, если вашими программистом будет что-то не понятно (а я уверен, что им всё понятно), задавайте вопросы распишу более подробно. Могу достать темплейт ТЗ из прошлой жизни и листов на 20 расписать, но суть от этого не изменится - заменить раздел //Торговля с приказов i+1 на реал-тайм.

Наверх
#10281 - Wed Aug 18 2010 12:20 PM Re: Практические примеры API [Re: Craft]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: Craft
Могу достать темплейт ТЗ из прошлой жизни и листов на 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]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: andy
1. Условия входа. Подробнее можно ? =открытие и переворот позиции с переносом стопа в случае не исполнения на следующий бар= Весь алгоритм четко нужно описать. Как входим, как переворачиваемся.
Условия входа и переворота расписаны в логике скрипта в Теме High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211
Quote:
Какими заявками. Какие нюансы.
Вход и переворот через стоп ордера, при наступлении условия срабатывания скользящий стоп – маркет ордер с закрытием половины открытой позиции.
Quote:
2. Условия ведения позиции. =Частичное закрытие позиции скользящим стопом= Что есть скользящий стоп ? Какой принцип его работы реализовать ?
За пример берётся скрипт в Теме High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211
Quote:
Частичное закрытие - что имеется ввиду ? Заявка имеет случайный обьем неисполнения ?
закрытие половины открытой позиции (можно количеством контрактов задаваемых пользователем, как вам будет проще) маркет ордером
Quote:
Что делаем с невошедшим по сигналу остатком ? Убиваем или докупаем ?
Тоже, что и в скрипте из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211
Quote:
3. Условия закрытия позиции.
Те же, что и в скрипте из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211

Quote:
ТЗ мне тоже за вас написать ? :-)
andy, за основу берётся скрипт из Темы High-Low (channel breakout) + скользящий стоп (Модификация скрипта Hi-Lo) по адресу: http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7211#Post7211 90% технических вопросов в нём уже предусмотрено, необходимо переделать скрипт на реал-тайм.

Наверх
#10286 - Wed Aug 18 2010 12:54 PM Re: Практические примеры API [Re: Craft]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Отлично.
Теперь весь этот винегрет из линков в виде четкого ТЗ в ворде можно собрать ?
1. Условия входа.
2. Ведение позиции.
3. Условия выхода.
Нюансы неисполнения заявки, превороты, лесенки и прочии бантики.

При наличии полного и ясного описания программер получит задание на разработку.

ps
Меня не будет до вечера. Думаю стоит это время потратить с пользой.

Наверх
Page 2 of 3 < 1 2 3 >


Moderator:  ViL, sar