Условия возникновения событий Strategy.OrderChange, Strategy.NewOrder, Strategy.NewMyTrades


Условия возникновения событий Strategy.OrderChange, Strategy.NewOrder, Strategy.NewMyTrades
Atom Ответить
07.10.2010


Каковы условия возникновения этих событий у стратегии по сравнению с аналогичными событиями в Trader?

Они как-то фильтруются по стратегии? Если да, то как?

Теги:


Спасибо:




82 Ответов
< 1 2 3 4  >
Mikhail Sukhov

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


Dmitriy Klimov
Mikhail Sukhov
QuikTrader.ProcessDataError - это сигнал к тому, что что-то не то в программе. Тут не может быть только.

Отфильтровал таблицу "Позиции по бумагам" по счетам депо, ошибки исчезли. Но события от стоп-заявок так и не возникают. Что еще можно попробовать?


Все исчезли? Первая была связана вовсе не с позицией, а как раз с заявками.
Спасибо:

Dmitriy Klimov

Фотография
Дата: 09.11.2010
Ответить


Mikhail Sukhov
Dmitriy Klimov
Mikhail Sukhov
QuikTrader.ProcessDataError - это сигнал к тому, что что-то не то в программе. Тут не может быть только.

Отфильтровал таблицу "Позиции по бумагам" по счетам депо, ошибки исчезли. Но события от стоп-заявок так и не возникают. Что еще можно попробовать?


Все исчезли? Первая была связана вовсе не с позицией, а как раз с заявками.

Да, все исчезли. В таблице Заявки были заявки, сделанные через привод Quot Pro. Похоже, заявки, выставленные через него, имели одинаковое значение поля "ID транзакции".
Спасибо:

Dmitriy Klimov

Фотография
Дата: 09.11.2010
Ответить


Попробовал подписать на события NewStopOrders, StopOrdersChanged, StopOrdersFailed у QuikTrader. Возникает только событие StopOrdersChanged. NewStopOrders возникло всего один раз, и туда пришла старая стоп-заяка. Новых не было. Почему у стратегии не возникает хотя бы StopOrdersChanged, не понятно...
Спасибо:

Mikhail Sukhov

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


Дмитрий,

приношу свои извинения за качества моего тестирования. Я сейчас написал отдельное приложение, где все сделал "с нуля" для Вашей стратегии. Действительно, она StopOrderChanged не вызывался. Причина оказалось в QuikTrader.AsyncMode = false. В своих тестах я использую только асинхронный режим. Переключился на него, события стали работать. Прикладываю свой пример с исходниками. Проверьте, чтобы точно убедиться, что Ваша причина в том же самом.
StopOrdersTest.zip 8,7KB (3)
Спасибо:

Dmitriy Klimov

Фотография
Дата: 10.11.2010
Ответить


Mikhail Sukhov
Дмитрий,

приношу свои извинения за качества моего тестирования. Я сейчас написал отдельное приложение, где все сделал "с нуля" для Вашей стратегии. Действительно, она StopOrderChanged не вызывался. Причина оказалось в QuikTrader.AsyncMode = false. В своих тестах я использую только асинхронный режим. Переключился на него, события стали работать. Прикладываю свой пример с исходниками. Проверьте, чтобы точно убедиться, что Ваша причина в том же самом.

Михаил, ваш пример у меня не заработал. Заявки почему-то не принимались биржей. Но тем не менее, проблема решилась, когда я выставил QuikTrader.AsyncMode = true. Буду тестировать дальше в асинхронном режиме. Спасибо за то, что смогли разобраться.
Спасибо:

Mikhail Sukhov

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


Dmitriy Klimov
Mikhail Sukhov
Дмитрий,

приношу свои извинения за качества моего тестирования. Я сейчас написал отдельное приложение, где все сделал "с нуля" для Вашей стратегии. Действительно, она StopOrderChanged не вызывался. Причина оказалось в QuikTrader.AsyncMode = false. В своих тестах я использую только асинхронный режим. Переключился на него, события стали работать. Прикладываю свой пример с исходниками. Проверьте, чтобы точно убедиться, что Ваша причина в том же самом.

Михаил, ваш пример у меня не заработал. Заявки почему-то не принимались биржей. Но тем не менее, проблема решилась, когда я выставил QuikTrader.AsyncMode = true. Буду тестировать дальше в асинхронном режиме. Спасибо за то, что смогли разобраться.


А Вы можете написать причину, почему не принимались?
Спасибо:

Dmitriy Klimov

Фотография
Дата: 10.11.2010
Ответить


Mikhail Sukhov
Dmitriy Klimov
Mikhail Sukhov
Дмитрий,

приношу свои извинения за качества моего тестирования. Я сейчас написал отдельное приложение, где все сделал "с нуля" для Вашей стратегии. Действительно, она StopOrderChanged не вызывался. Причина оказалось в QuikTrader.AsyncMode = false. В своих тестах я использую только асинхронный режим. Переключился на него, события стали работать. Прикладываю свой пример с исходниками. Проверьте, чтобы точно убедиться, что Ваша причина в том же самом.

Михаил, ваш пример у меня не заработал. Заявки почему-то не принимались биржей. Но тем не менее, проблема решилась, когда я выставил QuikTrader.AsyncMode = true. Буду тестировать дальше в асинхронном режиме. Спасибо за то, что смогли разобраться.


А Вы можете написать причину, почему не принимались?

Если честно, сам не понял. Поменял в вашем коде только инструмент и значения StopLoss и TakeProfit.
Спасибо:

Mikhail Sukhov

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


Dmitriy Klimov

Если честно, сам не понял. Поменял в вашем коде только инструмент и значения StopLoss и TakeProfit.


А Вы можете посмотреть? Там достаточно лишь вывести само тело ошибки в MessageBox. Если это проигнорировать сейчас потом может оказаться новой ошибкой.BigGrin
Спасибо:

Dmitriy Klimov

Фотография
Дата: 10.11.2010
Ответить


Mikhail Sukhov
Dmitriy Klimov

Если честно, сам не понял. Поменял в вашем коде только инструмент и значения StopLoss и TakeProfit.


А Вы можете посмотреть? Там достаточно лишь вывести само тело ошибки в MessageBox. Если это проигнорировать сейчас потом может оказаться новой ошибкой.BigGrin

Говорит, что я не могу торговать на выбранном счете. Попробовал счет сам указывать так:
Код
trader.NewPortfolios += portfolios =>
{
_pf = portfolios.First(p => p.Name.Contains("SPBFUTХХХХХ"));
};

но выходит такая ошибка при подключении: http://screencast.com/t/i4ksJFg96Z. Хотя тот же код нормально работает в моей программе. Так и не понял, в чем прикол.
Спасибо:

Mikhail Sukhov

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


Dmitriy Klimov
Mikhail Sukhov
Dmitriy Klimov

Если честно, сам не понял. Поменял в вашем коде только инструмент и значения StopLoss и TakeProfit.


А Вы можете посмотреть? Там достаточно лишь вывести само тело ошибки в MessageBox. Если это проигнорировать сейчас потом может оказаться новой ошибкой.BigGrin

Говорит, что я не могу торговать на выбранном счете.


Потому что возвращался первый попавшийся портфель. Видимо для Вашего случая он был не форцовый.

Dmitriy Klimov

Попробовал счет сам указывать так:
Код
trader.NewPortfolios += portfolios =>
{
_pf = portfolios.First(p => p.Name.Contains("SPBFUTХХХХХ"));
};

но выходит такая ошибка при подключении: http://screencast.com/t/i4ksJFg96Z. Хотя тот же код нормально работает в моей программе. Так и не понял, в чем прикол.


Так писать вообще не верно. Вы полагаетесь на то, что в событие придут сразу все портфели. А это событие появление новых портфелей.
Спасибо:

freelancer

Фотография
Дата: 15.05.2011
Ответить


У меня та же ситуация. Тему прочитал...
При исполнении QuikStopConditionTypes.TakeProfitStopLimit сделки не приходят ни в Strategy.NewMyTrades, ни в baseTrader.NewMyTrades
Стоит IsAsyncMode = true
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
У меня та же ситуация. Тему прочитал...
При исполнении QuikStopConditionTypes.TakeProfitStopLimit сделки не приходят ни в Strategy.NewMyTrades, ни в baseTrader.NewMyTrades
Стоит IsAsyncMode = true


ITrader.NewStopOrders + ITrader.StopOrdersChanged вызываются?
Спасибо:

freelancer

Фотография
Дата: 15.05.2011
Ответить


Mikhail Sukhov Перейти
ITrader.NewStopOrders + ITrader.StopOrdersChanged вызываются?

Да. Сначала NewStopOrders, потом StopOrdersChanged
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
Mikhail Sukhov Перейти
ITrader.NewStopOrders + ITrader.StopOrdersChanged вызываются?

Да. Сначала NewStopOrders, потом StopOrdersChanged


Как регистрируете заявку.
Спасибо:

freelancer

Фотография
Дата: 15.05.2011
Ответить


Mikhail Sukhov Перейти
Как регистрируете заявку.

Код
private Order CreateTakeProfitAndStopLimit(decimal price, bool IsBuy, decimal? stopPrice, decimal? profit, Unit spread, int volume)
{
return new Order
{
Type = OrderTypes.Conditional,
Volume = volume,
Price = price,
Security = this.Security,
Portfolio = this.Portfolio,
Direction = IsBuy ? OrderDirections.Buy : OrderDirections.Sell,
StopCondition = new QuikStopCondition
{
Type = QuikStopConditionTypes.TakeProfitStopLimit,
ExpiryDate = null,
StopPrice = profit,
StopLimitPrice = stopPrice,
Offset = new Unit(decimal.Zero),
Spread = spread,
ActiveTime = null,
},
};
}

Код
var TP_SL = CreateTakeProfitAndStopLimit(candle.OpenPrice - stopLoss - slippage, false, candle.OpenPrice - stopLoss, candle.OpenPrice + takeProfit, new Unit(slippage), Volume);
RegisterOrder(TP_SL);
Спасибо:

Mikhail Sukhov

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


RegisterOrder который у Trader или у Strategy?
Спасибо:

freelancer

Фотография
Дата: 15.05.2011
Ответить


Mikhail Sukhov Перейти
RegisterOrder который у Trader или у Strategy?

Strategy
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
Mikhail Sukhov Перейти
RegisterOrder который у Trader или у Strategy?

Strategy


А Strategy.NewStopOrder + StopOrderChanged вызывается? Приходит ли заявка, сгеренированная стопом через Strategy.NewOrder?
Спасибо:

freelancer

Фотография
Дата: 15.05.2011
Ответить


Mikhail Sukhov Перейти
А Strategy.NewStopOrder + StopOrderChanged вызывается? Приходит ли заявка, сгеренированная стопом через Strategy.NewOrder?

Вызываются. Нет, не приходит
Спасибо:

freelancer

Фотография
Дата: 16.05.2011
Ответить


Из-за чего это может быть ?
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
Из-за чего это может быть ?


Попробуйте выставить стоп-заявку вне стратегии, через ITrader. И посмотрите, приходит ли производная заявка через NewOrders и сделка по ней.
Спасибо:

freelancer

Фотография
Дата: 16.05.2011
Ответить


Не приходит ни то, ни то
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
Не приходит ни то, ни то


Ага, уже понятнее. А ProcessDataError что выводит?
Спасибо:

freelancer

Фотография
Дата: 16.05.2011
Ответить


Молчит Glare
Спасибо:

Mikhail Sukhov

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


freelancer Перейти
Молчит Glare


Уже теряюсь в догадках... А стоп заявка вообще срабатывает? Заявка появляется в таблице Заявки?
Спасибо:
< 1 2 3 4  >

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

loading
clippy