#80914 - Sun Jan 08 2017 04:44 PM
Область видимости объекта
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
Всем салют! С прошедшими праздниками! Ниже представлен скрипт который выдает ошибку типа: 08.01.2017 16:32:17 138 System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в TradeScript.SBRF_VTB_STATIC_SETKA.Execute(IContext ctx, ISecurity secSBRF, ISecurity secVTBR) в TSLab.User.Script.Execute(IContext context, ISecurity Источник1, ISecurity ТоргуемИнструм)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSLab.DataSource;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;
using TSLab.Script.Optimization;
namespace TradeScript
{
public class SBRF_VTB_STATIC_SETKA : IExternalScript2
{
#region Параметры оптимизации
public OptimProperty SlippageSBRF = new OptimProperty(0, 0, 0, 0);
public OptimProperty SlippageVTB = new OptimProperty(0, 0, 0, 0);
public OptimProperty SMASub = new OptimProperty(464, 500, 1500, 10);
public OptimProperty SizeLevel = new OptimProperty(100, 50, 1000, 10);
public OptimProperty SumLevel = new OptimProperty(5, 1, 5, 10);
#endregion
public void Execute(IContext ctx, ISecurity secSBRF, ISecurity secVTBR)
{
#region Расчет Индикаторов
var sub = Series.Sub(secSBRF.ClosePrices, secVTBR.ClosePrices); //Вычитание значений закрытия инструментов
var smaSub = ctx.GetData("SMASub", new string[] { SMASub.Value.ToString() }, () => Series.SMA(sub, SMASub));//Скользящая построенная по разнице
var extendable = Series.Sub(smaSub, sub); //Разница от скользящей и разницей цен
#endregion
for (int i = 0; i < ctx.BarsCount; i++)
{
////Прямые позиции
////Прямые позиции
var leVtbr = secVTBR.Positions.GetLastActiveForSignal("VTBR_LE", i);// Получаем позицию или null
var seSbrf = secSBRF.Positions.GetLastActiveForSignal("SBRF_SE", i);// Получаем позицию или null
if (leVtbr == null && seSbrf == null)
{
if (extendable[i] < 100)
{
secSBRF.Positions.SellAtMarket(i + 1, 1, "SBRF_SE", "Продажа SBRF");// Входим в шорт
secVTBR.Positions.BuyAtMarket(i + 1, 2, "VTBR_LE", "Продажа VTB"); // Входим в лонг
}
}
else
{
for (int j = 0; j < SumLevel; j++)
{
if (extendable[i] < SizeLevel && seSbrf.Shares <= j + 1)
{
leVtbr.ChangeAtMarket(i + 1, leVtbr.Shares + 2, "VTBR_LE2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
seSbrf.ChangeAtMarket(i + 1, seSbrf.Shares - 1, "SBRF_SE2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
}
if (extendable[i] > SizeLevel && seSbrf.Shares >= j + 1)
{
leVtbr.ChangeAtMarket(i + 1, leVtbr.Shares - 2, "VTBR_LX2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
seSbrf.ChangeAtMarket(i + 1, seSbrf.Shares + 1, "SBRF_SX2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
}
}
if (extendable[i] >= 0)
{
seSbrf.CloseAtMarket(i + 1, "SBRF_SX");
}
}
}
#region Визуализация
...
#endregion
}
}
}
Не могу понять почему не видит. Подскажите пожалуйста в какую сторону копать?
Отредактировано konstantinio (Mon Jan 09 2017 08:49 PM)
|
Наверх
|
|
|
|
#80915 - Sun Jan 08 2017 05:57 PM
Re: Область видимости объекта
[Re: konstantinio]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
И где а вас созданы обьекты VTBR_LE2 и SBRF_SE2?
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80916 - Sun Jan 08 2017 06:06 PM
Re: Область видимости объекта
[Re: komissar]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
VTBR_LE2 и SBRF_SE2 - это название сигналов. Объекты тут: var leVtbr = secVTBR.Positions.GetLastActiveForSignal("VTBR_LE", i);// Получаем позицию или null
var seSbrf = secSBRF.Positions.GetLastActiveForSignal("SBRF_SE", i);// Получаем позицию или null
|
Наверх
|
|
|
|
#80917 - Sun Jan 08 2017 06:07 PM
Re: Область видимости объекта
[Re: komissar]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
Прошу пардону. Херню сморозилс.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80918 - Sun Jan 08 2017 06:15 PM
Re: Область видимости объекта
[Re: komissar]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
f (leVtbr == null && seSbrf == null) - А если один из обьектов не нулл, а другой нулл- то переход на елсе и одной позииции нет.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80919 - Sun Jan 08 2017 06:28 PM
Re: Область видимости объекта
[Re: komissar]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
а еще мне кажется некорректное добавление позиции-здесь нужны новые обьеты.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80920 - Sun Jan 08 2017 06:28 PM
Re: Область видимости объекта
[Re: komissar]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
Не думаю что в этом дело. Тестирую на истории и то что был пропущен вход на истории этого не может быть. На всякий случай проверил так: for (int j = 0; j < SumLevel; j++)
{
if (extendable[i] < SizeLevel && seSbrf.Shares <= j + 1)
{
if (leVtbr != null) leVtbr.ChangeAtMarket(i + 1, leVtbr.Shares + 2, "VTBR_LE2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
if (seSbrf != null) seSbrf.ChangeAtMarket(i + 1, seSbrf.Shares - 1, "SBRF_SE2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
}
if (extendable[i] > SizeLevel && seSbrf.Shares >= j + 1)
{
if (leVtbr != null) leVtbr.ChangeAtMarket(i + 1, leVtbr.Shares - 2, "VTBR_LX2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
if (seSbrf != null) seSbrf.ChangeAtMarket(i + 1, seSbrf.Shares + 1, "SBRF_SX2");// <<<<<<<<=======Ссылка не указывает на экземпляр объекта
}
} Результат тот же.
|
Наверх
|
|
|
|
#80921 - Sun Jan 08 2017 06:31 PM
Re: Область видимости объекта
[Re: konstantinio]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
Новые позиции создавать в предыдущих версиях нужно было. В 2,0 можно менять размер одной позиции.
Отредактировано konstantinio (Sun Jan 08 2017 06:34 PM)
|
Наверх
|
|
|
|
#80922 - Sun Jan 08 2017 06:38 PM
Re: Область видимости объекта
[Re: konstantinio]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
тогда я пас. но ошибка именно здесь. попробуйте не менять позицию.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80923 - Sun Jan 08 2017 06:42 PM
Re: Область видимости объекта
[Re: komissar]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
или сразу же после изменения ее проинциализировать.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80924 - Sun Jan 08 2017 06:48 PM
Re: Область видимости объекта
[Re: komissar]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
Я тестирую стратегию с донабором и сбросом позиции. К стати если не использовать цикл, а написать несколько раз то что делает цикл, то все работает. Но дело в том что цикл нужен.
|
Наверх
|
|
|
|
#80925 - Sun Jan 08 2017 06:56 PM
Re: Область видимости объекта
[Re: konstantinio]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
ТсЛаб не видит позицию. Добавте в цикле елсе leVtbr = secVTBR.Positions.GetLastActiveForSignal("VTBR_LE", i);// Получаем позицию или null seSbrf = secSBRF.Positions.GetLastActiveFor
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80927 - Sun Jan 08 2017 07:20 PM
Re: Область видимости объекта
[Re: konstantinio]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
Тогда к нему. Создается - то в родителе, а меняется в цикле елсе. Мне кажется после каждого изменения нужна инициализация.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80942 - Mon Jan 09 2017 08:56 PM
Re: Область видимости объекта
[Re: komissar]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
С отладкой в visual Studio еще как на зло проблемы какие то начались. Не работают точки останова и все тут. Пишет: В настоящий момент попадание в точку останова не произойдет. Нет загруженных символов для этого документа Весь интернет прогуглил, все перепробовал - ничего толкового нет.
|
Наверх
|
|
|
|
#80943 - Tue Jan 10 2017 07:27 AM
Re: Область видимости объекта
[Re: konstantinio]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
Бывают такие заглюки. Оставляю в скрипте самый минимум и потихоньку добавляю. Как правило все вылазит от 'сам дурак' до версии NET и вирусов.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#80954 - Wed Jan 11 2017 06:57 AM
Re: Область видимости объекта
[Re: komissar]
|
newbie
Registered: Wed Aug 31 2016
Записи: 41
|
Как говорится дело было не в бабине! Просто напутал количество лотов в наращивании и сбросе из за чего возникала такая ошибка.
|
Наверх
|
|
|
|
#80959 - Wed Jan 11 2017 11:16 AM
Re: Область видимости объекта
[Re: komissar]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
а еще мне кажется некорректное добавление позиции-здесь нужны новые обьеты. Вот. Про что я вам и толдычил.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
|
|