У вас не стоит Flash Player
Настройки
#47330 - Wed Oct 03 2012 01:44 PM Расхождения данных в TSlab с реальным счетом!
Alaxan Offline
stranger

Registered: Wed Oct 03 2012
Записи: 6
У нас возникла такая проблема. Скрипт написанный на API показывает совершенно разные данные на графике с данными которые фигурирую на реальном счете.
На реальных торгах скрипт встает в short или в long правильно, но выход из позиции происходит совершенно по непонятным ценам, которых в принципе не должны фигурировать. Т.е. на реальном счете мы выходим из позиции, а на графике показывает, что мы стоим в позиции.

В сложившейся ситуации дорогие форумчане и разработчики помогите разобраться!

Вот часть листинга скрипта.

for (int bar = StartBar; bar < barsCount; bar++)
{
ShortPos = source.Positions.GetLastActiveForSignal("SN");
LongPos = source.Positions.GetLastActiveForSignal("LN");
if ((ShortPos == null))
{
if ((ShortPrice > 0) && (LongPos == null) )
{
source.Positions.SellIfLess(bar+1, 1, ShortPrice, "SN");

}
ShortPos = source.Positions.GetLastActiveForSignal("SN");

}
else
{
if (CoverPrice > 0)
{

ShortPos.CloseAtStop(bar+1, CoverPrice, "SX");
ShortPos.CloseAtProfit(bar+1,CloseShortPrice, "TPS");

ctx.Log("TPS = "+ CloseShortPrice.ToString()+" "+ CoverPrice.ToString(),1);
}
}
//==============================================================================
// выполнение сигналов для длинной позиции
LongPos = source.Positions.GetLastActiveForSignal("LN");
ShortPos = source.Positions.GetLastActiveForSignal("SN");
if ((LongPos == null) )
{
if ((BuyPrice > 0) && (ShortPos==null) )
{
source.Positions.BuyIfGreater(bar+1, 1, BuyPrice, "LN");
}
LongPos = source.Positions.GetLastActiveForSignal("LN");
}
else
{
if (SellPrice > 0)
{

LongPos.CloseAtStop(bar+1, SellPrice, "LX");
LongPos.CloseAtProfit(bar+1, CloseLongPrice, "TPL");

ctx.Log("TPL = "+ CloseLongPrice.ToString()+" "+ SellPrice.ToString(),1);
}
}
}
}

Наверх
#47332 - Wed Oct 03 2012 02:52 PM Re: Расхождения данных в TSlab с реальным счетом! [Re: Alaxan]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
Originally Posted By: Alaxan
Вот часть листинга скрипта.
for (int bar = StartBar; bar < barsCount; bar++)
{
ShortPos = source.Positions.GetLastActiveForSignal("SN");
LongPos = source.Positions.GetLastActiveForSignal("LN");
if ((ShortPos == null))
{
if ((ShortPrice > 0) && (LongPos == null) )
{
source.Positions.SellIfLess(bar+1, 1, ShortPrice, "SN");

}
ShortPos = source.Positions.GetLastActiveForSignal("SN");

}
else
{
if (CoverPrice > 0)
{

ShortPos.CloseAtStop(bar+1, CoverPrice, "SX");
ShortPos.CloseAtProfit(bar+1,CloseShortPrice, "TPS");

ctx.Log("TPS = "+ CloseShortPrice.ToString()+" "+ CoverPrice.ToString(),1);
}
}
//==============================================================================
// выполнение сигналов для длинной позиции
LongPos = source.Positions.GetLastActiveForSignal("LN");
ShortPos = source.Positions.GetLastActiveForSignal("SN");
if ((LongPos == null) )
{
if ((BuyPrice > 0) && (ShortPos==null) )
{
source.Positions.BuyIfGreater(bar+1, 1, BuyPrice, "LN");
}
LongPos = source.Positions.GetLastActiveForSignal("LN");
}
else
{
if (SellPrice > 0)
{

LongPos.CloseAtStop(bar+1, SellPrice, "LX");
LongPos.CloseAtProfit(bar+1, CloseLongPrice, "TPL");

ctx.Log("TPL = "+ CloseLongPrice.ToString()+" "+ SellPrice.ToString(),1);
}
}
}
}

Подчеркнутые строки лишние. В реальном времени позиция будет открыта позже.
Если ShortPrice, BuyPrice, CoverPrice, CloseShortPrice, SellPrice, CloseLongPrice - локальные переменные, то их значения надо рассчитывать каждый раз. Между пересчетами скрипта их значения не сохраняются.

Наверх
#47333 - Wed Oct 03 2012 02:56 PM Re: Расхождения данных в TSlab с реальным счетом! [Re: Gji]
Alaxan Offline
stranger

Registered: Wed Oct 03 2012
Записи: 6
Спасибо за ответ! Хотелось бы узнать почему система отражает разные данные, в программе показывает что позиция открыта, а на реальном счете, что позиция закрыта, разве данные не синхронизируются.


А глобальных переменных можно хранить данные ? Т.е. описывать и инициализировать в не public virtual void Execute(IContext ctx, ISecurity source)

Наверх
#47335 - Wed Oct 03 2012 03:07 PM Re: Расхождения данных в TSlab с реальным счетом! [Re: Alaxan]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
Originally Posted By: Alaxan
Хотелось бы узнать почему система отражает разные данные, в программе показывает что позиция открыта, а на реальном счете, что позиция закрыта, разве данные не синхронизируются.

Не могу знать, может у Вас два скрипта работает по одному инструменту? Один в шортах, другой в лонгах, совокупная позиция = 0. Может программа виртуальную позицию показывает, т.е. в лаборатории вход есть, а в реале нет - проскальзывания не хватило. Гадать можно долго...

Originally Posted By: Alaxan

А глобальных переменных можно хранить данные ? Т.е. описывать и инициализировать в не public virtual void Execute(IContext ctx, ISecurity source)
Можно, но лучше сначала с текущей проблемой разберитесь, иначе не раз еще об нее споткнетесь.

Наверх
#47355 - Thu Oct 04 2012 06:56 AM Re: Расхождения данных в TSlab с реальным счетом! [Re: Gji]
Alaxan Offline
stranger

Registered: Wed Oct 03 2012
Записи: 6
Работает один скрипт и вход в позицию осуществляется синхронно(одинаковое вхождение в позицию со стороны tslab и реального счета).

А что имеете в виду под проскальзыванием в данном контексте?

Наверх
#47361 - Thu Oct 04 2012 11:15 AM Re: Расхождения данных в TSlab с реальным счетом! [Re: Alaxan]
Alaxan Offline
stranger

Registered: Wed Oct 03 2012
Записи: 6
При тестировании была замечена проблема, мы пытаемся одновременно отправить две заявки по закрытию позиции, когда срабатывает одна из заявок, то другая сразу теряет активность и на оборот.

LongPos.CloseAtStop(bar+1, SellPrice, "LX");
LongPos.CloseAtProfit(bar+1, CloseLongPrice, "TPL");

Можно ли так отправить две заявки ???


Отредактировано Alaxan (Thu Oct 04 2012 11:20 AM)

Наверх
#47375 - Thu Oct 04 2012 04:56 PM Re: Расхождения данных в TSlab с реальным счетом! [Re: Alaxan]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492

Наверх


Moderator:  ViL, sar