Обнуление переменных при торговле в реал-тайм

3/21/2011 7:12:18 PM
Gravatar
Total Posts 6

Обнуление переменных при торговле в реал-тайм

Добрый день!

При работе с классом WLRT.LiveTrading.WealthScript не представляется возможным сохранять и, соответственно, использовать любые пользовательские переменные. При наступлении нового бара все переменные, используемые в системе, обнуляются.

Простой пример:

using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

using WealthLab;

using WealthLab.Indicators;

namespace WealthLab.Strategies

{

public class MyStrategy : WLRT.LiveTrading.WealthScript

{

protected override void Execute()

{

int n = 0;

int bar = Bars.Count - 1;

{

PrintDebug("n0 = " + n);

n++;

}

}

}

}

На каждом новом баре, переменная «n» равняется нулю.

Данная проблема существенно затрудняет использование стратегий, отличных от простых систем, в которых используются только пересечения индикаторов.

Будет ли решена данная проблема и если будет, то когда ? И, пока данное решение не внедрено, как сделать, что бы переменная “n” , из вышеуказанной системы, не обнулялась ?

Заранее спасибо за ответ!

С уважением.

3/21/2011 8:33:48 PM
Gravatar
Total Posts 151

RE:Обнуление переменных при торговле в реал-тайм

Требуется модификация Вашего кода. В простейшем случае - такая:

[CODE]using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

using WealthLab;

using WealthLab.Indicators;

namespace WealthLab.Strategies

{

public class MyStrategy : WLRT.LiveTrading.WealthScript

{

int _n;//объявляете переменную "уровня класса"(поле класса, field)

protected override void Execute()

{

//int n = 0; у вас тут явно 0 присваивается, так что ничего другого и не может быть

int bar = Bars.Count - 1;

{

PrintDebug("n0 = " + _n); //используете

_n++; //увеличиваете на 1

}

}

}

}

[/CODE]

4/5/2011 9:57:53 PM
Gravatar
Total Posts 6

RE:Обнуление переменных при торговле в реал-тайм

А как быть, если схема перезапускалась, а в ней используются данные, например последнего или предпоследнего выхода?

С уважением!

4/5/2011 10:15:02 PM
Gravatar
Total Posts 151

RE:Обнуление переменных при торговле в реал-тайм

Видимо нужно определить такую ситуацию в коде и попробовать восстановить состояние по доступным данным.

Определить то, что ваша стратегия перезапустилась можно например так:

[CODE]using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

using WealthLab;

using WealthLab.Indicators;

namespace WealthLab.Strategies

{

public class MyStrategy : WLRT.LiveTrading.WealthScript

{

int _n;//объявляете переменную "уровня класса"(поле класса, field)

bool _firstTime;//поле - признак того, что стратегия перезапущена

public MyStrategy()//конструктор, исполняется 1 раз, когда вы перезапускаете стратегию

//(например нажимаете кнопку Compile или после перезапуска)

{

_firstTime = true;

}

protected override void Execute()

{

if(_firstTime)

{

//первичная инициализация, найти последнюю позицию, провести рассчеты

_firstTime = false;//установка признака, что перезапуск обработан

}

int bar = Bars.Count - 1;

{

PrintDebug("n0 = " + _n); //используете

_n++; //увеличиваете на 1

}

}

}

}[/CODE]

Восстановить состояние можно с помощью доступных Вам данных: котировок и всех позиций стратегии.