[FIXED] TakeProfitStrategy отправляет неправильный ордер

[FIXED] TakeProfitStrategy отправляет неправильный ордер
Atom
6/23/2011
President


Разобравшись с http://stocksharp.com/forum/1684/-BUG--BatchStrategy---Value-cannot-be-null--Parameter-name--security/ наткнулся на другую проблему:

var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

в момент срабатывания посылает в QUIK заявку с Price = this.TakeProfitThreshold что существенно ниже лимитов рынка и заявка отвергается:

23.06.2011 11:11:00.667 [BS] [BS] [SLS] System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00al8; CLIENT_CODE=S#; TRANS_ID=40036888; CLASSCODE=SPBFUT; SECCODE=LKU1; QUANTITY=1; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=6;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Цена сделки вне лимита".'. Parameter name: transactionTxt at #=q3C5AM$iq8NbweFUGFWK_sU7Vcw7Z$U4vlB2Hc50kdH4=.#=qLgL84qMEfuN5KhECfgmmVtmEjdZHFTZu$WkBCYieTcI=(String #=qgclQ_YrKOL8W24OU8dAXtQ==, OrderStatus& #=q_xaMqAhWgI5tV2SZaQTgUw==, UInt32& #=q9f$NCAgNEA2P_dgSYQX4ag==, Int64& #=qwVmYFYP0ooLLxsTPLQePQg==, String& #=qR6gf_ntTXrn2yuZ9RSMZLQ==) at StockSharp.Quik.QuikTrader.#=q4vcoB7VlrVy4GatAp8_nMJ6AYLGi58dOpiGwxMBn6UQ=(Order #=qbn0ghccP_Nk8KrwPARMMqA==, TransactionBuilder #=qxOobaox1SG$xe4kqR2_8ZA==) at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order) at StockSharp.Algo.BaseTrader.RegisterOrder(Order order) at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order) at StockSharp.Algo.Strategies.QuotingStrategy.#=qFNjSJ7N1u5acr$1keu3nHg==() at StockSharp.Algo.Strategies.QuotingStrategy.#=qeubD$wKedi$ApPCf6cLO3rlmhGW$ZeerQHKTqhIth$w=.#=qEsRZe$IDBR8A0j$0apLQ$Q==() at StockSharp.Algo.Strategies.StrategyRule.#=qm8VBf4GDpEbeabai3WtCE_YuhOxfkovbmj6wDnrDrR0=.#=q0OgKPN9vlMKZZIjBhTnAcw==(Object #=q0xxkRlvbFaZQkdN1O3pBCA==) at StockSharp.Algo.Strategies.StrategyRule.#=qwurDVpnPEgnquLK$nRLn9OHeSuX4XtP79q8cEhLyYMI=.#=qTxwzPP4CbQG2ITMlWDV$_nA93xIudHPYiyO3YFbU4x4=() at StockSharp.Algo.Strategies.Strategy.#=qIHDBOzkYlc1Ka0H4Q5rQnQ==(StrategyRule #=qsRkj9dGU3TX31YwcXiQefQ==, Action #=qREJnLkxJR0fsGiLETZNSBg==)

Environment: S# v3.2.2, QUIK


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 6/23/2011
Reply


Нужен лог.

Thanks:

President

Avatar
Date: 6/23/2011
Reply


это и был кусок из лога - вот все что касается этого тейкпрофита

Lku1/Lkoh 23.06.2011 11:10:59.827 Trade 340523601 at price 17531 for security LKU1 with volume 1 at 23.06.2011 11:11:00. Lku1/Lkoh 23.06.2011 11:10:59.846 [BS] Стратегия запущена. - тут создаю батч стратегию с тейк профитом и стоп лоссом - все как по хэлпу Lku1/Lkoh 23.06.2011 11:10:59.846 [BS] [BS] Стратегия запущена. Lku1/Lkoh 23.06.2011 11:10:59.850 [BS] [BS] [TPS] Стратегия запущена. Lku1/Lkoh 23.06.2011 11:10:59.851 [BS] [BS] [SLS] Стратегия запущена. Lku1/Lkoh 23.06.2011 11:11:00.001 [BS] [BS] [SLS] Регистрация новой заявки на Buy с ценой 6 и объемом 1. Lku1/Lkoh 23.06.2011 11:11:00.554 Отмена заявки 40036887. - это в основной стратегии я убрал заявку Lku1/Lkoh 23.06.2011 11:11:00.667 [BS] [BS] [SLS] System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00al8; CLIENT_CODE=S#; TRANS_ID=40036888; CLASSCODE=SPBFUT; SECCODE=LKU1; QUANTITY=1; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=6;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Цена сделки вне лимита".'. Parameter name: transactionTxt at #=q3C5AM$iq8NbweFUGFWK_sU7Vcw7Z$U4vlB2Hc50kdH4=.#=qLgL84qMEfuN5KhECfgmmVtmEjdZHFTZu$WkBCYieTcI=(String #=qgclQ_YrKOL8W24OU8dAXtQ==, OrderStatus& #=q_xaMqAhWgI5tV2SZaQTgUw==, UInt32& #=q9f$NCAgNEA2P_dgSYQX4ag==, Int64& #=qwVmYFYP0ooLLxsTPLQePQg==, String& #=qR6gf_ntTXrn2yuZ9RSMZLQ==) at StockSharp.Quik.QuikTrader.#=q4vcoB7VlrVy4GatAp8_nMJ6AYLGi58dOpiGwxMBn6UQ=(Order #=qbn0ghccP_Nk8KrwPARMMqA==, TransactionBuilder #=qxOobaox1SG$xe4kqR2_8ZA==) at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order) at StockSharp.Algo.BaseTrader.RegisterOrder(Order order) at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order) at StockSharp.Algo.Strategies.QuotingStrategy.#=qFNjSJ7N1u5acr$1keu3nHg==() at StockSharp.Algo.Strategies.QuotingStrategy.#=qeubD$wKedi$ApPCf6cLO3rlmhGW$ZeerQHKTqhIth$w=.#=qEsRZe$IDBR8A0j$0apLQ$Q==() at StockSharp.Algo.Strategies.StrategyRule.#=qm8VBf4GDpEbeabai3WtCE_YuhOxfkovbmj6wDnrDrR0=.#=q0OgKPN9vlMKZZIjBhTnAcw==(Object #=q0xxkRlvbFaZQkdN1O3pBCA==) at StockSharp.Algo.Strategies.StrategyRule.#=qwurDVpnPEgnquLK$nRLn9OHeSuX4XtP79q8cEhLyYMI=.#=qTxwzPP4CbQG2ITMlWDV$_nA93xIudHPYiyO3YFbU4x4=() at StockSharp.Algo.Strategies.Strategy.#=qIHDBOzkYlc1Ka0H4Q5rQnQ==(StrategyRule #=qsRkj9dGU3TX31YwcXiQefQ==, Action #=qREJnLkxJR0fsGiLETZNSBg==) Lku1/Lkoh 23.06.2011 11:11:00.669 [BS] [BS] Стратегия останавливается. Lku1/Lkoh 23.06.2011 11:11:00.672 [BS] [BS] [TPS] Стратегия останавливается. Lku1/Lkoh 23.06.2011 11:11:00.675 [BS] [BS] Стратегия остановлена. Lku1/Lkoh 23.06.2011 11:11:00.675 [BS] [BS] [TPS] Стратегия остановлена. Lku1/Lkoh 23.06.2011 11:11:00.675 [BS] [BS] [SLS] Стратегия остановлена.

Thanks:

Alexander

Avatar
Date: 6/23/2011
Reply


var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

Thanks:

President

Avatar
Date: 6/23/2011
Reply


Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

тейк профит был 8 а стоп лосс 6 в обоих случаях аналогичный экспешн

Thanks:

Alexander

Avatar
Date: 6/23/2011
Reply


President:

Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

8 или 6 - судя по логам в примере вверху было 6

так по этой цене невозможно зарегистрировать заявку - цена вне пределов лимита. Нижняя возможная цена по лукойлу на сегодня - 16 471.

соответственно если попробовать зарегистрировать заявку с ценой ниже этой - возникает ошибка. так же и с верхней планкой - нельзя зарегистрировать заявку с ценой выше верхнего лимита цены - 18 575 на сегодня.

Thanks:

President

Avatar
Date: 6/23/2011
Reply


Alexander:

President:

Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

8 или 6 - судя по логам в примере вверху было 6

так по этой цене невозможно зарегистрировать заявку - цена вне пределов лимита. Нижняя возможная цена по лукойлу на сегодня - 16 471.

соответственно если попробовать зарегистрировать заявку с ценой ниже этой - возникает ошибка. так же и с верхней планкой - нельзя зарегистрировать заявку с ценой выше верхнего лимита цены - 18 575 на сегодня.

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

Thanks:

Alexander

Avatar
Date: 6/23/2011
Reply


President:

Alexander:

President:

Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

8 или 6 - судя по логам в примере вверху было 6

так по этой цене невозможно зарегистрировать заявку - цена вне пределов лимита. Нижняя возможная цена по лукойлу на сегодня - 16 471.

соответственно если попробовать зарегистрировать заявку с ценой ниже этой - возникает ошибка. так же и с верхней планкой - нельзя зарегистрировать заявку с ценой выше верхнего лимита цены - 18 575 на сегодня.

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

Действительно в документации так. Надо править либо доку, либо код. Сделаем фикс, спасибо.

Thanks:

Mikhail Sukhov

Avatar
Date: 6/23/2011
Reply


President:

Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

тейк профит был 8 а стоп лосс 6 в обоих случаях аналогичный экспешн

Какого типа эти 6 и 8? Я посмотрел по коду - все таки это дельта. Но не понятно, почему не работает. Наверное, ошибка где-то в другом месте.

Thanks:

President

Avatar
Date: 6/23/2011
Reply


Mikhail Sukhov:

President:

Alexander: var takeProfit = new TakeProfitStrategy(t, this.TakeProfitThreshold);

Чему конкретно равен this.TakeProfitThreshold?

тейк профит был 8 а стоп лосс 6 в обоих случаях аналогичный экспешн

Какого типа эти 6 и 8? Я посмотрел по коду - все таки это дельта. Но не понятно, почему не работает. Наверное, ошибка где-то в другом месте.

decimal TakeProfitThreshold; decimal StopLossThreshold; this.TakeProfitThreshold = 8; this.StopLossThreshold = 6;

Thanks:

Mikhail Sukhov

Avatar
Date: 6/23/2011
Reply


President: decimal TakeProfitThreshold; decimal StopLossThreshold; this.TakeProfitThreshold = 8; this.StopLossThreshold = 6;

А чему равно t.Trade.Price? Вывод сделайте в лог прямо перед созданием стратегии.

Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy