У нас возникла такая проблема. Скрипт написанный на 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);
}
}
}
}