Страница 1 из 1

Живой бар

Добавлено: 11 ноя 2020, 16:02
Инта
Так он появился все таки этот "живой" бар или все по прежнему никак?

Re: Живой бар

Добавлено: 12 ноя 2020, 18:12
Инта
Евгений (evge), добрый вечер.
У вас есть варианты реализации "живого" бара?
Покажите пожалуйста сам принцип и как его реализовать (с исходным кодом стратегии).

Re: Живой бар

Добавлено: 12 ноя 2020, 19:01
evge
Добрый вечер.

Нет, у меня кода нет. "Живой" бар не использовал. Но в целом всё просто, описано в документации. Добавляйте настройки эти в Initialize() и всё заработает.

UseClosedBar – настройка, позволяющая вызывать код метода OnUpdate() внутри бара (по приходу новых сделок). Если в коде указано UseClosedBar = false, то вызов метода будет происходить внутри бара не чаще чем один раз в LiveBarTimeout секунд.

Тестирование стратегии с UseClosedBar = false невозможно. Предварительно оценить ее эффективность можно в режиме робота-советника.

Пример.

Код: Выделить всё

   UseClosedBar = false;
   LiveBarTimeout = 10; // Вызывать не чаще чем раз в 10 секунд


OneSignalOnBar – флаг позволяет отправлять несколько торговых команд на одном баре. Значение флага по умолчанию true. Для включения опции множество сигналов на одном баре используйте
OneSignalOnBar = false;

Внимание!
Использование флага OneSignalOnBar = false (множественного исполнения сделок на одном баре) совместно с флагом UseClosedBar = false (проверка условий робота внутри бара) может приводить к большому числу сделок на одном баре.
Обратите внимание, что использование данного флага также позволит роботу отправлять несколько торговых команд за один проход вызова функции OnUpdate.

Для примера накидал простую стратегию:

Если цена (Close) выше чем High предыдущего бара, то продаем.
Если цена (Close) ниже чем Low предыдущего бара, то покупаем.
Если позиция открыта и цена (Close) вернулось в рамки предыдущего бара, т.е. текущего бара Close между Low и High предыдущего, то позиция закрывается.

Код: Выделить всё

function Initialize()
{
   StrategyName = "LiveBar";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 0;
   ShortLimit = 0;
   
   //настройка для "живого" бара
   UseClosedBar = false;
   LiveBarTimeout = 10;
   OneSignalOnBar = false;
}

function OnUpdate()
{
   if (Input1.Close[0] > Input1.High[1]) EnterShort();
   if (Input1.Close[0] < Input1.Low[1]) EnterLong();
   
   if (CurrentPosition() != 0)
   if (Input1.Close[0] > Input1.Low[1] && Input1.Close[0] < Input1.High[1]) ClosePosition();
}

Re: "Живой" бар и мультитаймфрейм

Добавлено: 12 ноя 2020, 19:14
Инта
Спасибо Евгений комментарии по "живому" бару.
Также на вебинаре анонсировался мультитаймфрейм.
Вам удалось уже его реализовать и протестировать в работе?
Буду благодарен за код!

Re: Живой бар

Добавлено: 12 ноя 2020, 19:19
evge
Анонсировали когда?

Если появится, то конечно это прорыв будет для АД4 :)

Я пока не в курсе. Говорится давно об этом.

Re: Живой бар

Добавлено: 12 ноя 2020, 19:26
Инта
Анонсировал Дмитрий, на том же летнем вебинаре. Кстати очень полезная была информация для начинающих и пользуясь случаем ему отдельное спасибо здесь!
Может если он увидит переписку здесь, то и прокомментирует ситуацию с мультитаймфреймом. Возможно я не корректно его понял по поводу времени когда он появиться, но то что работы шли в этом направлении это факт, и к осени он должен был выйти в свет!

Re: Живой бар

Добавлено: 12 ноя 2020, 19:34
E_V_N
Живой бар был реализован в прошлом обновлении. Но осталась проблема, что одновременно на баре может быть только одна торговая и одна стоповая заявки. Причем при попытке проверить работу живого бара, у меня лично, получается, что заявка выставляется внутри бара, а вот выполнение все равно только на закрытии.