#55095 - Mon May 13 2013 10:27 PM
подскажите - что не так с лимитным ордером в 1.2 ?
|
newbie
Registered: Fri May 04 2012
Записи: 49
|
не могу заставить скрипт войти в позицию с помощью лимитного ордера. скрипт простой - просто продать по цене 140000: ------------------------------------------------------- using System; using System.IO; using System.Collections.Generic; using System.Linq; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.Script.Helpers; using TSLab.Script.Optimization; using TSLab.Script.Realtime;
namespace TSLab.Samples { public class zzz_20130513_Test_Limit_Order : IExternalScript { public void Execute(IContext ctx, ISecurity sec) {
if (!sec.Positions.IsRealtime) { return; } ISecurityRt secRt = sec as ISecurityRt; int i = secRt.Bars.Count-1; IPosition last_Pose_Dn = secRt.Positions.GetLastActiveForSignal("dn"); double pri_dn = 140000; if (last_Pose_Dn==null) { if (pri_dn!=0) { secRt.Positions.SellAtPrice(i, 1, pri_dn, "dn"); ctx.Log("лимитный ордер Sell по "+pri_dn,0); } } else { ctx.Log("мы в шорте ("+last_Pose_Dn.EntryPrice+") !!!",0); } } } } -------------------------------------------------------
при достижении рынком запланированной цены после формирования нового бара скрипт рисует на графике "вход", но в списке открытых позиций количество открытых позиций остается равным нулю. в списке сделок появляется "открытая позиция", но цена входа постоянно меняется. в логе выходит сообщение "пропущен сигнал "dn" входа в позицию. Требуется вмешательство через Менеджер Команд." Цена сходила на 100 вверх, ушла ниже, а фактически поза не открылась (не отобразилась в таблице "Позиции"). После того, как цена ушла ниже 140000 "сделка" в списке сделок исчезает, словно не было никакого лимитного ордера и цена не доходила до 140000.
Прилагаю скриншоты работы и текст скрипта.
Что надо поправить в тексте скрипта или в настройках скрипта, чтобы TSLab открывал позицию по 140000 и она отобразилась в таблице "Позиции" ?
Жду с нетерпением комментарии разработчиков !
Attachments
1.JPG (257 downloads)2.JPG (276 downloads)3.JPG (242 downloads)4.JPG (272 downloads)script.txt (112 downloads)
|
Наверх
|
|
|
|
#55100 - Tue May 14 2013 12:47 AM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: yan]
|
writer
Registered: Sun Nov 21 2010
Записи: 428
|
к i нужно прибавить 1
_________________________
Не пишите мне! Никому ничего делать не буду.
|
Наверх
|
|
|
|
#55105 - Tue May 14 2013 08:16 AM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: jhgjrht]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Ага. Вы пробуете сделать вход на уже законченном баре, что неверно. Если у вас пересчет идет по ИНТЕРВАЛ то так и получается.
И не понятно назначение вот таких фокусов ISecurityRt secRt = sec as ISecurityRt; int i = secRt.Bars.Count-1; Зачем это нужно если вы не используете возможности ISecurityRt? Работайте просто с ISecurity и не заморачивайтесь.
_________________________
__
|
Наверх
|
|
|
|
#55133 - Tue May 14 2013 04:36 PM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: ra81]
|
newbie
Registered: Fri May 04 2012
Записи: 49
|
>Ага. Вы пробуете сделать вход на уже законченном баре, что неверно. Если у вас пересчет идет по ИНТЕРВАЛ то так и получается. детскую ошибку исправил
> не понятно назначение вот таких фокусов ISecurityRt secRt = sec as ISecurityRt; int i = secRt.Bars.Count-1; Зачем это нужно если вы не используете возможности ISecurityRt? Работайте просто с ISecurity и не заморачивайтесь.
возможности "ISecurityRt" я использую, а "фокусы" взяты из примеров скриптов размещенных на сайте. без этих фокусов не получается запустить скрипт в реальном времени.
|
Наверх
|
|
|
|
#55139 - Tue May 14 2013 10:19 PM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: yan]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
> не понятно назначение вот таких фокусов ISecurityRt secRt = sec as ISecurityRt; int i = secRt.Bars.Count-1; Зачем это нужно если вы не используете возможности ISecurityRt? Работайте просто с ISecurity и не заморачивайтесь.
возможности "ISecurityRt" я использую, а "фокусы" взяты из примеров скриптов размещенных на сайте. без этих фокусов не получается запустить скрипт в реальном времени.
Если ваш скрипт содержит только то что вы разместили тут, то совершенно не нужно использовать ISecurityRt яб даже сказал что противопоказано. потому как нельзя одновременно пользоваться им и использовать генерацию позиций то есть пользоваться свойством Positions. Это будет приводить к странным вещам если начать ставить сделки через ISecurityRt. В ващем скрипте, совершенно не нужны все эти "фокусы" ибо они только усложняют скрипт, но ничего в него не привносят. так же создают потенциал для хорошеньких таких и вкусных ошибок
_________________________
__
|
Наверх
|
|
|
|
#55140 - Wed May 15 2013 01:46 AM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: ra81]
|
newbie
Registered: Fri May 04 2012
Записи: 49
|
Могли бы вы подробнее развернуть ваши предостережения: какие ошибки могут подстерегать ? и, если можно, привести пример более простого скрипта - я лепил скрипт из примеров на форуме, документация сложная для понимания - примеров нет, нюансы приходится постигать методом проб и ошибок. Ваш опыт был бы очень полезен и позволил бы избежать мне и читающим эту ветку многих ошибок и потерь времени.
Задача, стоявшая перед скриптом заключалась в том, чтобы увидеть работу лимитного ордера в режиме реального времени, отследить появление заявок в таблицах, отражение в таблице сделок скрипта и т.п.
Отредактировано yan (Wed May 15 2013 01:48 AM)
|
Наверх
|
|
|
|
#55141 - Wed May 15 2013 08:34 AM
Re: подскажите - что не так с лимитным ордером в 1.2 ?
[Re: yan]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Могли бы вы подробнее развернуть ваши предостережения: какие ошибки могут подстерегать ? и, если можно, привести пример более простого скрипта - я лепил скрипт из примеров на форуме, документация сложная для понимания - примеров нет, нюансы приходится постигать методом проб и ошибок. Ваш опыт был бы очень полезен и позволил бы избежать мне и читающим эту ветку многих ошибок и потерь времени.
Задача, стоявшая перед скриптом заключалась в том, чтобы увидеть работу лимитного ордера в режиме реального времени, отследить появление заявок в таблицах, отражение в таблице сделок скрипта и т.п. Ошибка будет заключаться в том, что нельзя использовать Rt интерфейс и пытаться работать с позициями. Это невозможно. Либо вы через Rt либо работаете с позициями. А в вашем случае нужно убрать ISercurityRt и оставить просто ISecurity. Работать будет совершенно так же. Вообще сей интерфейс нужен только в очень редких случаях, для особотребовательных товарищей которым мало того что уже есть. Вот по ссылке разбирается создание стратегии в коде. Там же есть код стратегии и так далее. http://smart-lab.ru/blog/96958.php
_________________________
__
|
Наверх
|
|
|
|
|
|