← Назад

Пара вопросов

  1. Есть ли возможность прописывать в ордера свою информацию, так чтобы она сохранялась при перезапуске S#? ExtendedInfo не сохраняется, Comment при посылке ордера в Quik доходит как строка "S#", но возвращается как пустая строка.

  2. В ChartControl не отображаются ордера, я ставил добавку ордеров на событие NewOrders - на чарте ничего нет. Может отображаются только активные, неисполненные ордера?

Комментарии (46)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

Foxbow:

  1. Есть ли возможность прописывать в ордера свою информацию, так чтобы она сохранялась при перезапуске S#? ExtendedInfo не сохраняется, Comment при посылке ордера в Quik доходит как строка "S#", но возвращается как пустая строка.

S# - это не комментарий, а код клиента. В Киви они сливаются в одно поле.

Думаю, лучше себя не ограничивать тестовой информацией и прописывать информацию во внешних хранилищах - БД, файлы. Какую примерно информацию необходимо сохранять?

Foxbow: 2. В ChartControl не отображаются ордера, я ставил добавку ордеров на событие NewOrders - на чарте ничего нет. Может отображаются только активные, неисполненные ордера?

ChartControl я не доделал. Он работает только для свечек. Используйте напрямую amCharts (он лежит в основе ChartControl).

Foxbow
Foxbow Автор

Ок, спасибо, но ChartsControl будет доделываться?

И еще, можно ли в ChartControl, например через _stockChart отключить отображение объемов или хотя бы изменить размер области с объемами?

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Ок, спасибо, но ChartsControl будет доделываться?

И еще, можно ли в ChartControl, например через _stockChart отключить отображение объемов или хотя бы изменить размер области с объемами?

Доделывать - это немного не то слово. Вся магия в amCharts. А я лишь сделал так, чтобы было удобнее работать с торговыми объектами S# - вот и получился ChartControl. Так что, если Вы по серьезному хотите использовать графики - лучше используйте напрямую amCharts. S# слабо развивается в графическом направлении. Могу код выложить, если нужно. Там практически и нет ничего.😒

Foxbow
Foxbow Автор

Если не сложно, выложите, я с amChart работал много, но не stock часть, а с обычными, так хоть будет откуда начать, да и зачем выдумывать велосипеды, ваш стиль архитектуры мне нравится =).

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Если не сложно, выложите, я с amChart работал много, но не stock часть, а с обычными, так хоть будет откуда начать, да и зачем выдумывать велосипеды, ваш стиль архитектуры мне нравится =).

Если сделаете модернизацию, отпишитесь и выложите для всеобщего блага.

Foxbow
Foxbow Автор

Ок, попробую, то что вы выложили явно не последняя версия, нет добавки трендов, не все типы и объекты объявлены. Кстати, тренды, если их несколько сейчас дают помехи друг на друга. я еще не понял механизма. А AmChart делают в прибалтике, и общаться с нимим можно и по русски (я случайно выяснил при переписке с ними)

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Ок, попробую, то что вы выложили явно не последняя версия, нет добавки трендов, не все типы и объекты объявлены. Кстати, тренды, если их несколько сейчас дают помехи друг на друга. я еще не понял механизма.

Исправился.

Foxbow: А AmChart делают в прибалтике, и общаться с нимим можно и по русски (я случайно выяснил при переписке с ними)

Это вообще прекрасно. Теперь ко мне будет меньше вопросов.😀

Foxbow
Foxbow Автор

Исправился.

Теперь отлично.

Разобрался с трендами, они находятся в разных координатных пространствах со свечками, сразу не заметил шкалу на левой стороне чарта.=(

Foxbow
Foxbow Автор

При получении фьючерсов вечерки их тип выставляется в Equity, вместо Futures.

И еще, не знаю, возможно это секрет полишенеля, но исполнение заявки по маркету возможно всегда. Достаточно в качестве цены указать цену сдвинутую на 30-40 пунктов в невыгодную сторону, тогда она будет исполнена по самой выгодной из существующих возможных цен. Так-же и с защитными спредами на тейк-профитах, я ставлю 50-60 пунктов и всегда они исполнялись по лучшей цене из возможных, никогда не пролетали мимо. По крайней мере так у меня на Quik от Финама.

Mikhail Sukhov
Mikhail Sukhov

Foxbow: При получении фьючерсов вечерки их тип выставляется в Equity, вместо Futures.

А класс инструмента какой при этом? FUTEVN?

Foxbow
Foxbow Автор

Именно

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Именно

QuikTrader.SecurityClassInfo

Foxbow
Foxbow Автор

Сделал свой CandleManager, претензии к старому:

На исторических данных, если я получаю трейды за весь день, генерируются только события о завершенных свечках, а мне нужна симуляция обычной работы, когда на трейды приходит событие о изменении последней свечки. Я понимаю, это медленней, приходится работать по одной свечке, но для обкатки роботов это необходимо.

Менеджер не умеет работать с парой фьючей, дневной и вечерней сессии, если в нем зарегистрировать обе бумаги то он присылает свечки не в хронологическом порядке, а как придется.

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Сделал свой CandleManager, претензии к старому:

На исторических данных, если я получаю трейды за весь день, генерируются только события о завершенных свечках, а мне нужна симуляция обычной работы, когда на трейды приходит событие о изменении последней свечки. Я понимаю, это медленней, приходится работать по одной свечке, но для обкатки роботов это необходимо.

Это Вы для тестировании на истории используете?

Foxbow: Менеджер не умеет работать с парой фьючей, дневной и вечерней сессии, если в нем зарегистрировать обе бумаги то он присылает свечки не в хронологическом порядке, а как придется.

А сделки есть для обоих бумаг? ДДЕ шлет в порядке добавления записей в таблицу. В таблице сделок сами сделки упорядочены?

Foxbow
Foxbow Автор

Это Вы для тестировании на истории используете?

Конечно, у меня механизм робота основан не на Idle приложения, а на события завершения свечи и изменения свечи. Так что мне это критично.

А сделки есть для обоих бумаг? ДДЕ шлет в порядке добавления записей в таблицу. В таблице сделок сами сделки упорядочены?

Да, есть, но иногда вечерняя свечка прилетает раньше обеда. Посмотрите таблицу "все сделки", трейды с вечерки вчерашнего дня сегодня утром видны как сегодняшние (у них в поле Дата стоит сегодняшнее число)

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Да, есть, но иногда вечерняя свечка прилетает раньше обеда.

Это что значит?

William B
William B

У меня при добавлении инструмента из группы "Фьючерсы РТС (история пред. сессии)" дата в таблице сделок стоит "правильная", т. е. вчерашняя вечерка отображается с датой 01.12.10

Foxbow
Foxbow Автор

вот так, сорри, я опечатался, речь шла про таблицу "мои сделки"

Foxbow
Foxbow Автор

Да, в списке инструментов у меня есть и SPBFUT и FUTEVN, но если я обе бумаги подписываю в CandleManager бывает что от него свечка с вечерней сессии приходит сильно раньше чем будут получены все свечи дневной сессии

Mikhail Sukhov
Mikhail Sukhov

Foxbow: Да, в списке инструментов у меня есть и SPBFUT и FUTEVN, но если я обе бумаги подписываю в CandleManager бывает что от него свечка с вечерней сессии приходит сильно раньше чем будут получены все свечи дневной сессии

Порядок появления свечек между инструментами не детерминирован.

Foxbow
Foxbow Автор

именно, поэтому и сделал свой candlemanager =)

Mikhail Sukhov
Mikhail Sukhov

Foxbow: именно, поэтому и сделал свой candlemanager =)

А для чего нужна синхронизация свечек между инструментами?

Foxbow
Foxbow Автор

А для чего нужна синхронизация свечек между инструментами?

Потому что GZZ0 SPBFUT и GZZ0 FUTEVN по сути один инструмент, просто в разные сессии. Больше незачем, хотя мои аппетиты только начинают формироваться.

Mikhail Sukhov
Mikhail Sukhov

Foxbow:

А для чего нужна синхронизация свечек между инструментами?

Потому что GZZ0 SPBFUT и GZZ0 FUTEVN по сути один инструмент, просто в разные сессии. Больше незачем, хотя мои аппетиты только начинают формироваться.

Самое простое решение, которое я собираюсь сделать, заменить класс FUTEVN на SPBFUT и FUTOPT на SPBOPT. Вы можете это и сами сделать через QuikTrader.PreProcessDdeData.

Foxbow
Foxbow Автор

Mikhail Sukhov: Самое простое решение, которое я собираюсь сделать, заменить класс FUTEVN на SPBFUT и FUTOPT на SPBOPT. Вы можете это и сами сделать через QuikTrader.PreProcessDdeData.

Неа, никатит... Если я буду слать ордер на вечерку, а бумага, указанная в ордере будет SPBFUT, что будет?

Mikhail Sukhov
Mikhail Sukhov

Foxbow:

Mikhail Sukhov: Самое простое решение, которое я собираюсь сделать, заменить класс FUTEVN на SPBFUT и FUTOPT на SPBOPT. Вы можете это и сами сделать через QuikTrader.PreProcessDdeData.

Неа, никатит... Если я буду слать ордер на вечерку, а бумага, указанная в ордере будет SPBFUT, что будет?

А разве класс не на след торговой сессии меняется?

Foxbow
Foxbow Автор

В принципе логично.

Подпилил чартинг, когда доведу до ума, перешлю исходники

Mikhail Sukhov
Mikhail Sukhov

Foxbow: В принципе логично.

Подпилил чартинг, когда доведу до ума, перешлю исходники

Выглядит впечатляюще. А что за синяя и желтая линии?

Foxbow
Foxbow Автор

синяя - сигналы на открытие, желтая, текущее состояние робота (лонг/шот), но я его в полдень слегка допиливал, привинчивал примитивный анализ свечей, так что трейды не совпадают с состояниями.

dart
dart

Foxbow: синяя - сигналы на открытие, желтая, текущее состояние робота (лонг/шот), но я его в полдень слегка допиливал, привинчивал примитивный анализ свечей, так что трейды не совпадают с состояниями. Да, картинки классные. Хоть у роботов я графику полностью отключил, но сейчас подумал что для тестирования это было бы самое то. Вы можете код привести, как стрелками покупки-продажи на графике рисовать?

Foxbow
Foxbow Автор

public void AddTrade(MyTrade _trade)
{
	var eb = new EventBullet();
	switch (_trade.Order.Direction)
	{
		case OrderDirections.Buy:
			eb.BulletType = EventBulletType.ArrowUp;
			eb.Fill = Brushes.Green;
			break;
		case OrderDirections.Sell:
			eb.BulletType = EventBulletType.ArrowDown;
			eb.Fill = Brushes.Red;
			break;
	}
	var time = _trade.Trade.Time;
	if (time.Hour > 19)
	{
		time = new DateTime(_trade.Order.Time.Year, _trade.Order.Time.Month, _trade.Order.Time.Day, time.Hour, time.Minute,
							time.Second);
	}
	eb.DataItem = new EventDataItem
	{
		Value = _trade.Trade.Price,
		Date = time,
		Description =
			string.Format("{0} {4}: {1} #{2} ({3})", _trade.Order.Direction, _trade.Trade.Price, _trade.Trade.Id,
						  time.ToShortTimeString(), _trade.Trade.Volume)
	};
	if (!((CustomChartIndicatorList<Candle>)Candles).ContainsTime(_trade.Trade.Time))
	{
		var candle = new VolumeCandle { Volume = 1, Time = time };
		candle.OpenPrice = candle.ClosePrice = candle.HighPrice = candle.LowPrice = _trade.Trade.Price;

		Candles.Add(candle);
	}
	m_candlesGraph.EventBullets.Add(eb);
}

public void AddMark(DateTime _time, string _description, EventBulletType _bulletType, Brush _brush, bool _onAxis)
{
	var eb = new EventBullet
	{
		Fill = _brush,
		BulletType = _bulletType,
		OnAxis = _onAxis,
		DataItem = new EventDataItem
		{
			Date = _time,
			Description = _description,
		}
	};
	m_candlesGraph.EventBullets.Add(eb);
}

dart a.dobryn
dart
dart

Спасибо большое! У меня EventBullet, EventDataItem и m_candlesGraph не находит. Что подключить нужно?

Foxbow
Foxbow Автор

dart: Спасибо большое! У меня EventBullet, EventDataItem и m_candlesGraph не находит. Что подключить нужно?

В этой теме Михаил выкладывал исходники CandleChart, посмотрите на первой странице, а лучше скачайте примеры отсюда AmChart

А разве класс не на след торговой сессии меняется? Э, не понял, поясните.

Кстати, хочу похвастаться, вчера мой робот взял 16%, пилю дальше.

Mikhail Sukhov
Mikhail Sukhov

Foxbow:

А разве класс не на след торговой сессии меняется? Э, не понял, поясните.

Я к тому, что FUTEVN - это информационный инструмент, и что по нему невозможно создавать заявки. Или это не так?

dart
dart

Foxbow:

dart: Спасибо большое! У меня EventBullet, EventDataItem и m_candlesGraph не находит. Что подключить нужно?

В этой теме Михаил выкладывал исходники CandleChart, посмотрите на первой странице, а лучше скачайте примеры отсюда AmChart спасибо, и всё-таки я не нашёл как подключать пространство имён EventBulletType и Brush

MCTuTeJ|19951995
MCTuTeJ|19951995

FoxBow, а какой компонент AmCharts Вы используете ? StockChart ?

Foxbow
Foxbow Автор

MCTuTeJ|19951995: FoxBow, а какой компонент AmCharts Вы используете ? StockChart ?

Именно, хотя на своей работе мы все еще юзаем обычный, но у нас там огромные объемы для отображения, приходится искусственно прорежать, чтобы машинки не умирали.

Foxbow
Foxbow Автор

врать не буду, робота на вечерке не запускал, не знаю

Foxbow
Foxbow Автор

AmCharts.Windows.Stock.Primitives.EventBulletType System.Windows.Media.Brush

ustas
ustas

а кто-нибудь разобрался как в amcharts двигать границы отображаемого периода? например так чтобы показывался постоянно полследний час и не надо было руками двигать ползунки. Есть примеры?

Спасибо и с уважением!

Foxbow
Foxbow Автор

public void ShowAll()
{
	_stockChart.StartDate = Candles.First().Time;
	_stockChart.EndDate = Candles.Last().Time;
}

ustas
ustas
ustas

Foxbow: ... Использую пример Михаила SampleCandles там в контроле ChartWindow нет свойств ни StartDate ни EndDate 🤨 Проясните, пжл

Спасибо и с уважением!

ustas
ustas

супер, попробую ...

Foxbow
Foxbow Автор

В этой теме Михаил выкладывал исходники контрола для чартинга, там ничего сложного. Почитайте всю тему.

ustas
ustas
ustas

Foxbow: В этой теме Михаил выкладывал исходники контрола для чартинга, там ничего сложного. Почитайте всю тему.

Да, так и сделал. Получилось.

Спасибо и с уважением!

a.dobryn
a.dobryn

а у меня не может найти ContainsTime