не могу заставить скрипт войти в позицию с помощью лимитного ордера.
скрипт простой - просто продать по цене 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 (275 downloads)
2.JPG (295 downloads)
3.JPG (257 downloads)
4.JPG (285 downloads)
script.txt (128 downloads)