2.6 ActionStrategyConditionHelper работает ?
Atom
30.11.2010


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

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

Делаю так

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

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

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

batch.ChildStrategies.AddRange(trades.Select


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

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

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

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

Теги:


Спасибо:


< 1 2 
ustas

Фотография
Дата: 02.12.2010
Ответить


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

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

Mikhail Sukhov

Фотография
Дата: 02.12.2010
Ответить


ustas
Mikhail Sukhov

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


А у меня нет :(

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


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

Код
_candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

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


Надо писать:

Код
var tfToken = _candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

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

_candleManager.CandlesChanged += (token, candles) =>
{
// Console(ctv());
DrawCandles(candles);
};
Спасибо:

ustas

Фотография
Дата: 03.12.2010
Ответить


Mikhail Sukhov



Надо писать:

Код
var tfToken = _candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

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

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


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

Жду решения!

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

Mikhail Sukhov

Фотография
Дата: 03.12.2010
Ответить


ustas

Жду решения!

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


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

ustas

Фотография
Дата: 06.12.2010
Ответить


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


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

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

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

base.ChildStrategies.Add(batch);

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

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

Mikhail Sukhov

Фотография
Дата: 07.12.2010
Ответить


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

base.ChildStrategies.Add(batch);

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

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


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

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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy