RealTimeEmulationTrader
Atom Ответить
23.10.2013


Всех приветствую.

S# начал осваивать совсем недавно, поэтому многого тут ещё тупо не знаю, так что сильно ногами за вопрос не пинать.

У меня проблема в том, что при использовании SellAtMarket, BuyAtMarket сделок не происходит (хотя гоняю 1 контракт на эмуляшке).

Более того, если посмотреть, что генерирует SellAtMarket в примере

[cs]
Order myNewOrder = this.SellAtMarket(1);
RegisterOrder(this.SellAtMarket(1));
[/cs]

, то видно, что Цена почему-то берётся равной 10, время вообще чуть ли не рождение Христа видело и прочие "радости". Естественно, ClosePosition() нормально не отрабатывает тоже.

Подскажите, может, где в какой ветке уже обсуждалось - просто уже глаз "замылился" искать, так буду оооочень признателен.

Спасибо.

Логи и прочие ништяки смогу только завтра после 10-ти утра выложить, к сожалению - у меня привязка к квику...



Спасибо:




5 Ответов
Самунджян Артем

Фотография
Автор статей Программист
Дата: 24.10.2013
Ответить


Rebelion Перейти

Логи и прочие ништяки смогу только завтра после 10-ти утра выложить, к сожалению - у меня привязка к квику...


Эти методы используют значения, которые они вынимают из Security.MaxPrice и Security.MinPrice. Для акций, можно спокойно отправлять заявки рыночные (биржа принимает заявки с ценой 0), а вот для фьючерсов цену для "рынка" надо откуда то брать, поэтому если нет нормальных значений в этих свойствах, то заявка выставляться тоже не будет.

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

Если хотите быстро обучиться S# (скидка 20% как ученику). Посмотрите готовые проекты с комменатриями, получите он-лайн техподдержку.
Спасибо:

Rebelion

Фотография
Курсы
Дата: 25.10.2013
Ответить


Самунджян Артем Перейти
Rebelion Перейти

Логи и прочие ништяки смогу только завтра после 10-ти утра выложить, к сожалению - у меня привязка к квику...


Эти методы используют значения, которые они вынимают из Security.MaxPrice и Security.MinPrice. Для акций, можно спокойно отправлять заявки рыночные (биржа принимает заявки с ценой 0), а вот для фьючерсов цену для "рынка" надо откуда то брать, поэтому если нет нормальных значений в этих свойствах, то заявка выставляться тоже не будет.

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

Если хотите быстро обучиться S# (скидка 20% как ученику). Посмотрите готовые проекты с комменатриями, получите он-лайн техподдержку.


Пасиба за ответ! Буду пробовать. А подскажите, почему при выставлении заявки на свечке в истории в режиме эмуляции у меня заявка привязывается к текущему времени, а не ко времени свечек? Т.е. все сделки сыпятся в итоге (когда стратегия прогоняется с начала торгового дня до текущего времени) в одно время - в текущее?

Насчёт курсов - я планирую после НГ, сейчас просто с деньгами не очень в моменте. :-(
Автор топика
Спасибо:

Самунджян Артем

Фотография
Автор статей Программист
Дата: 25.10.2013
Ответить


Rebelion Перейти

Пасиба за ответ! Буду пробовать. А подскажите, почему при выставлении заявки на свечке в истории в режиме эмуляции у меня заявка привязывается к текущему времени, а не ко времени свечек? Т.е. все сделки сыпятся в итоге (когда стратегия прогоняется с начала торгового дня до текущего времени) в одно время - в текущее?


Потому что время выставлении заявки = времени её выставления BigGrin Режим истории и эмуляции это разные вещи. Режим эмуляции на текущих данных только проходит, а на истории, только на исторических.

Rebelion Перейти

Насчёт курсов - я планирую после НГ, сейчас просто с деньгами не очень в моменте. :-(


У Вас уже есть опыт программирования C#, вы можете пройти edulive (как раз таки то о чем я писал). Более ускоренно начинать обучаться, а когда накопите, то сможете пройти основные курсы со скидкой на саму стоимость edulive.
Спасибо:

Rebelion

Фотография
Курсы
Дата: 25.10.2013
Ответить


Самунджян Артем Перейти
Rebelion Перейти

Пасиба за ответ! Буду пробовать. А подскажите, почему при выставлении заявки на свечке в истории в режиме эмуляции у меня заявка привязывается к текущему времени, а не ко времени свечек? Т.е. все сделки сыпятся в итоге (когда стратегия прогоняется с начала торгового дня до текущего времени) в одно время - в текущее?


Потому что время выставлении заявки = времени её выставления BigGrin Режим истории и эмуляции это разные вещи. Режим эмуляции на текущих данных только проходит, а на истории, только на исторических.

Rebelion Перейти

Насчёт курсов - я планирую после НГ, сейчас просто с деньгами не очень в моменте. :-(


У Вас уже есть опыт программирования C#, вы можете пройти edulive (как раз таки то о чем я писал). Более ускоренно начинать обучаться, а когда накопите, то сможете пройти основные курсы со скидкой на саму стоимость edulive.



Да, по поводу Edulive - присоединюсь после 4-го ноября, когда зп дадут, обязательно.
В отношении C# - опыт есть и немалый. До этого разработкой в связке MSVS + WL занимался, писал под WL, но у WL куча проблем - проблемы с собственными свечками клиента, возможностью экспорта данных вовне и прочая, прочая, прочая. Поэтому и переключился на S# - считаю, что за этим проектом будущее.

Насчёт ордеров, собственно, тогда вопрос такой.
Допустим, мне надо сделать так, чтобы моя стратегия, которая запускается в произвольное время в течение дня (ну, проспал я, например, начало торгов), отрисовывала бы на графике свечек те сделки, которые были в прошлом (с начала дня), при этом работая с текущими данными и генерируя сигналы по текущим строящимся свечкам (работаю я с Range свечками). Как лучше было бы объединить куски кода по отрисовке ранних ордеров и текущих ордеров на графике?
Да, ещё попутный вопрос - код

Код
private void ProcessCandle(Candle candle)
{
    var bollingerBands = candle.State == CandleStates.Finished ? new ChartIndicatorValue(_strategy.bBands, _strategy.bBands.Process(candle)) : null;
    var maValue = candle.State == CandleStates.Finished ? new ChartIndicatorValue(_strategy.movingAverage, _strategy.movingAverage.Process(candle)) : null;
            
    _chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
    {
	{ _candlesElem, candle },
	{ _bBands, bollingerBands },
        { _movingAverage, maValue },
    };
}


не отрисовывает линии боллинджера. При этом свойства индикатора IsFormed стоит в состоянии true. Скользящая средняя отрисовывается нормально. Верно ли я понимаю, что комплексные индикаторы должны отрисовываться несколько иначе, чем обычные типа скользящей средней?

Спасибо!
Автор топика
Спасибо:

Rebelion

Фотография
Курсы
Дата: 28.10.2013
Ответить


Ап!
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy