У вас не стоит Flash Player
Настройки
#55095 - Mon May 13 2013 10:27 PM подскажите - что не так с лимитным ордером в 1.2 ?
yan Offline
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 (248 downloads)
2.JPG (267 downloads)
3.JPG (237 downloads)
4.JPG (262 downloads)
script.txt (106 downloads)


Наверх
#55100 - Tue May 14 2013 12:47 AM Re: подскажите - что не так с лимитным ордером в 1.2 ? [Re: yan]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
к i нужно прибавить 1
_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#55105 - Tue May 14 2013 08:16 AM Re: подскажите - что не так с лимитным ордером в 1.2 ? [Re: jhgjrht]
ra81 Offline
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]
yan Offline
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]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Originally Posted By: yan

> не понятно назначение вот таких фокусов
ISecurityRt secRt = sec as ISecurityRt;
int i = secRt.Bars.Count-1;
Зачем это нужно если вы не используете возможности ISecurityRt? Работайте просто с ISecurity и не заморачивайтесь.

возможности "ISecurityRt" я использую, а "фокусы" взяты из примеров скриптов размещенных на сайте.
без этих фокусов не получается запустить скрипт в реальном времени.

Если ваш скрипт содержит только то что вы разместили тут, то совершенно не нужно использовать ISecurityRt яб даже сказал что противопоказано. потому как нельзя одновременно пользоваться им и использовать генерацию позиций то есть пользоваться свойством Positions. Это будет приводить к странным вещам если начать ставить сделки через ISecurityRt.
В ващем скрипте, совершенно не нужны все эти "фокусы" ибо они только усложняют скрипт, но ничего в него не привносят. так же создают потенциал для хорошеньких таких и вкусных ошибок smile
_________________________
__


Наверх
#55140 - Wed May 15 2013 01:46 AM Re: подскажите - что не так с лимитным ордером в 1.2 ? [Re: ra81]
yan Offline
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]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Originally Posted By: yan
Могли бы вы подробнее развернуть ваши предостережения: какие ошибки могут подстерегать ?
и, если можно, привести пример более простого скрипта - я лепил скрипт из примеров на форуме, документация сложная для понимания - примеров нет, нюансы приходится постигать методом проб и ошибок.
Ваш опыт был бы очень полезен и позволил бы избежать мне и читающим эту ветку многих ошибок и потерь времени.

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

Ошибка будет заключаться в том, что нельзя использовать Rt интерфейс и пытаться работать с позициями. Это невозможно. Либо вы через Rt либо работаете с позициями.
А в вашем случае нужно убрать ISercurityRt и оставить просто ISecurity. Работать будет совершенно так же. Вообще сей интерфейс нужен только в очень редких случаях, для особотребовательных товарищей которым мало того что уже есть.

Вот по ссылке разбирается создание стратегии в коде. Там же есть код стратегии и так далее. http://smart-lab.ru/blog/96958.php
_________________________
__


Наверх


Moderator:  ViL, sar