2.6 ActionStrategyConditionHelper работает ?

2.6 ActionStrategyConditionHelper работает ?
Atom
11/30/2010


Приветствую уважаемых Михаила и всех коллег.

1. После перехода на 2.6 у меня перестало срабатывать ActionStrategyConditionHelper например CurrentCandleTotalVolumeMore
в 2.5.2 работало. Или у меня одного так и больше никто ничего подобного не заметил?

Делаю так

Code
public static Func<bool> ctv;
...
_candleManager.CandlesChanged += (token, candles) =>
{
ctv= ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1);
DrawCandles(candles);
};

В DrawCandles вывожу ctv(), которое всегда false , при этом данные по свечкам ок

2. Пример в документации "Тейк профит и стоп лосс" пункт 2.
а) не компилируется предложение
Code

batch.ChildStrategies.AddRange(trades.Select


AddRange не определён в ChildStrategies и непонятно откуда тут берётся trades или должно быть myTrades ?

и хотелось бы увидеть пример _takeProfit(t); и _stopLoss(t);

б) И еще последний вопрос про логику обработки NewMyTrades в этом же примере. Когда сработают защитные заявки разве не произойдет опять же событие NewMyTrades и выставятся защитные заявки на защитные же.

Спасибо и с уважением!

Tags:


Thanks:


< 1 2 
ustas

Avatar
Date: 12/2/2010
Reply


Вообщем жду резолюции. Видно что на 2.5.2 работало иначе.

А тем временем, пока роботы курят ... (не из-за новой версии, можно продолжать работать на 2.5.2, а просто курят)
РОССИЯ 2018!
Ура!
Thanks:

Mikhail Sukhov

Avatar
Date: 12/2/2010
Reply


ustas
Mikhail Sukhov

У меня по тестам свечка выдается. Попробуйте все таки точно определить, то ли время передается в CandleManager и есть ли на тот момент свечка (получив их через GetTimeFrameCandles и сравнив, имеет ли необходимая среди нет).


А у меня нет :(

Ну вот полностью код примера c выводом


Две новости, хорошая и плохая. Плохая - пока не знаю почему код не так работает. Хорошая, нашел в Вашем коде ошибку[biggrin] Вы создаете просто нереальное количество условий. Создавайте один раз. Вместо:

Code
_candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

_candleManager.CandlesChanged += (token, candles) =>
{
ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1);
DrawCandles(candles);
};


Надо писать:

Code
var tfToken = _candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

// или по вашему ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(tfToken, 1);
ctv = tfToken.CurrentCandleTotalVolumeMore(1);

_candleManager.CandlesChanged += (token, candles) =>
{
// Console(ctv());
DrawCandles(candles);
};
Thanks:

ustas

Avatar
Date: 12/3/2010
Reply


Mikhail Sukhov



Надо писать:

Code
var tfToken = _candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

// или по вашему ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(tfToken, 1);
ctv = tfToken.CurrentCandleTotalVolumeMore(1);

_candleManager.CandlesChanged += (token, candles) =>
{
// Console(ctv());
DrawCandles(candles);
};


О! Спасибо! Об этом тоже хотел спросить меняется ли ActionStrategyConditionHelper динамически. Как до этого догадаться самому не знал.
Условия думал не плодятся, так как переменная статическая. Делал присваивание при каждом изменении типа для уверенности. :)

Жду решения!

Спасибо и с уважением!
Thanks:

Mikhail Sukhov

Avatar
Date: 12/3/2010
Reply


ustas

Жду решения!

Спасибо и с уважением!


Ошибку нашел. К след. неделе выложу фикс 2.6.1.
Thanks: ustas

ustas

Avatar
Date: 12/6/2010
Reply


Mikhail Sukhov
[
Ошибку нашел. К след. неделе выложу фикс 2.6.1.


Супер! Фикс 2.6.1 работает подтверждаю. :) Спасибо!

Единственно небольшая помарочка. В документации в том же примере "Тейк-профит и стоп-лосс ".

Вы добавили фильтрацию по TargetOrder. Отлично! Но в конце

base.ChildStrategies.Add(batch);

будет выполняться всегда независимо от от того создалась дочерняя стратегия по или нет. И может возникнуть ошибка что "дочерняя стратегия не найдена".

Спасибо и с уважением!
Thanks:

Mikhail Sukhov

Avatar
Date: 12/7/2010
Reply


ustas
Вы добавили фильтрацию по TargetOrder. Отлично! Но в конце

base.ChildStrategies.Add(batch);

будет выполняться всегда независимо от от того создалась дочерняя стратегия по или нет. И может возникнуть ошибка что "дочерняя стратегия не найдена".

Спасибо и с уважением!


Да, надо поставить проверку:

Code
// если не найдена ни одна сделка для заявки TargetOrder
if (trades.Count() == 0)
    return;
Thanks: ustas
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy