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

Робот не закрывает позицию по времени.

Добавлено: 05 мар 2016, 13:13
evge
Gena 05.03.2016 12:51:36

робот не закрывает позицию по времени.

На основе робота Alfa_EE создаю новый, добавляю третье правило на закрытие позиции, если текущее время больше 23:28 (для графика SIH6 период М30). Терминал сгенерировал код:

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

/// ПРАВИЛО 3
   if ( (BarTime() > AsTime(23, 28, 0)) )
   {
   ClosePosition();
   }

При тестировании робот после 23:25 не закрывает позицию. То же и для Alfa_ES, Alfa_MACD.
Создал робота (для графика SIH6 период М30) для входа в Шорт при пересечении ЕМА50 быстрой ЕМА10 сверху вниз и выходе при закрытии бара выше EMA10 или по времени (третье правило)- при тестировании правило работает!!!! Закрывает сделку после 23:28.
При использовании иных индикаторов третье правило не работает. Получился всего 1 робот с работающим 3-м правилом. Не пойму в чем причина. Ведь весь код генерировала машина.

Re: Робот не закрывает позицию по времени.

Добавлено: 05 мар 2016, 13:14
evge
Это не текущее время, а время бара.

и если у вас в правилах открытия EMA > EMA и EMA < EMA замените на пересекает вверх и пересекает вниз и всё заработает.

а ещё важно какой таймфрейм, если у вас H1 или выше на роботе, то
BarTime() на 23 часах выдаст 23:00:00, а это меньше вашего условия и правило не сработает, а на следующем баре будет уже 00:00:00 и правило так же не сработает, т.к. условие не выполняется.

Alfa_EE-01.png
Alfa_EE-01.png (26.1 КБ) 24419 просмотров

Alfa_EE-02.png
Alfa_EE-02.png (28.45 КБ) 24413 просмотров


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

/**
Стратегия на пересечении 2х ЕМА.
Developed by Alfadirect;
Algorithm = ТРЕНД;
Hash code CF943F470615A836BD6B1073B46C0714
**/
function Initialize()
{
   StrategyName = "Alfa_EE";
   AddParameter("P1", 1, "", 1);
   AddParameter("P2", 100, "", 0);
   AddInput("Input1", Inputs.Candle, 60, true, "GAZP=МБ ЦК");
   LongLimit = 0;
   ShortLimit = 0;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (CrossAbove(EMA(Input1.Close, P1), EMA(Input1.Close, P2)) == true) )
   {
      EnterLong();
   }

   /// ПРАВИЛО 2
   if ( (CrossBelow(EMA(Input1.Close, P1), EMA(Input1.Close, P2)) == true) )
   {
      EnterShort();
   }

   /// ПРАВИЛО 5
   if ( (BarTime() > AsTime(23, 28, 0)) )
   {
      ClosePosition();
   }

}

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 03:02
Геннадий
У меня возникло несколько вопросов.
1. Если я создам робота, он будет работать после закрытия мною терминала? Или же робот работает, пока терминал включен?
2. Я заметил, что если задаешь в условии получить реакцию относительно скажем, максимума бара, при тестировании робот всё равно учитывает закрытие бара. При реальной работе робот будет реагировать на максимум бара, как прописано в условии, или нет?
3. При создании робота учитываются только открытие, закрытие, максимум и минимум бара, или можно задать роботу реагировать на текущее значение бара? Если можно, то какой параметр задавать на отслеживание текущего значения бара.
Заранее спасибо за ответы.

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 07:46
evge
Геннадий писал(а):1. Если я создам робота, он будет работать после закрытия мною терминала? Или же робот работает, пока терминал включен?


Только при включенном терминале.

Геннадий писал(а):2. Я заметил, что если задаешь в условии получить реакцию относительно скажем, максимума бара, при тестировании робот всё равно учитывает закрытие бара. При реальной работе робот будет реагировать на максимум бара, как прописано в условии, или нет?


High, Low, Open, Close, Vol всё это доступно для правил, т.е. для принятия решений, но сигнал робот исполняет на закрытии, т.е. только на close свечи.

Геннадий писал(а):3. При создании робота учитываются только открытие, закрытие, максимум и минимум бара, или можно задать роботу реагировать на текущее значение бара? Если можно, то какой параметр задавать на отслеживание текущего значения бара.


Ответ в ответе на вопрос 2. Текущее значение робот не видит.

Это что понял я, а также ответы на мои подобные вопросы и других участников в офиц. форуме и вебинарах по роботам.

Вообще если хотите официальных ответов от разработчиков записывайтесь на вебинар по роботам и там можно многое узнать про работу роботов. Периодически они (вебинары) появляются в учебном центре в закладке "Терминал". Вот следующий на 15 марта назначен, записывайтесь т.к. места ограничены.

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 14:20
Геннадий
Спасибо за информацию. Слежу за семинарами, но во Владивостоке навряд ли буду проводить семинары по роботам. Поэтому приходится всё собирать по крупицам.

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 14:31
Геннадий
Вот собрал простенького робота. Используется для открытия шорта на нисходящем тренде.
Оптимизирован для SIH6 M30.
Открытие: Правило 1 - шорт открывается при пересечении ЕМА50 быстрой ЕМА10 сверху вниз.
Закрытие: Правило 2 – бар закрывается выше EMA10; Правило 3 – позиция закрывается сразу после 23:28 (до закрытия вечерней сессии); Правило 4 – минимум бара закрывается выше учетной цены открытой роботом позиции.
Выражение && AverPrice() > 0 не позволяет срабатывать правилам на закрытие шорта при отсутствии открытой позиции [когда AverPrice()=0].
На тесте за 43 дня с 22.01.16 по 4.03.16 прибыль составила 62,46% (просадка -3,64%). Из 12 сделок 8 прибыльных.

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

/**Si  ЕМА10хЕМА50 (Шорт на М30). Стоп
Developed by GenGal;
Algorithm = ТРЕНД;**/

function Initialize()
{
   StrategyName = "GenGal_EE_test2";
   AddParameter("P1", 10, "", 1);
   AddParameter("P2", 50, "", 0);
   AddInput("Input1", Inputs.Candle, 30, true, "SiH6=ФОРТС");
   LongLimit = 0;
   ShortLimit = 0;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (CrossBelow(EMA(Input1.Close, P1), EMA(Input1.Close, P2)) == true) )
   {
      EnterShort();
   }

   /// ПРАВИЛО 2
   if ( ((Input1.Close > EMA(Input1.Close, P1)) && AverPrice() > 0))
   {
      CloseShort();
   }

   /// ПРАВИЛО 3
   if ( ((BarTime() > AsTime(23, 28, 0)) && AverPrice() > 0))
   {
      CloseShort();
   }

   /// ПРАВИЛО 4
   if ( ((Input1.Low > AverPrice()) && AverPrice() > 0))
   {
      CloseShort();
   }

}



Пример

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 15:41
Геннадий
Откорректировал сообщение выше. Первый раз тут. Еще не все тонкости оформления освоил, извините.
Подскажите еще как вставлять изображение. Вызываю теги img/img между ними нужно вставить ссылку на изображение. А откуда брать ссылку?

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 15:45
evge
Геннадий писал(а):Правило 4 нужно записать так


Вы всегда можете отредактировать свое сообщение нажав карандаш у своего сообщения.

как оформлять код я подсказывал вот тут и тогда он будет выглядеть близко к цветовому оформлению редактора АД4. Ваше первое сообщение я первый раз поправил, теперь попробуйте сами исправить его и заменить правило 4.

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 19:00
evge
Геннадий писал(а):Подскажите еще как вставлять изображение


Внизу вашего сообщения есть Настройки \ Вложения
во вложениях загрузите (Добавить файлы) вашу картинку \ картинки и там же будет кнопка вставить в текст вашего поста (заранее поставьте в тексте в нужное место курсор)

А тэг IMG, который в меню редактирования это для вставки внешних картинок (с других сайтов)

Re: Робот не закрывает позицию по времени.

Добавлено: 06 мар 2016, 20:43
evge
Геннадий писал(а):Слежу за семинарами, но во Владивостоке навряд ли буду проводить семинары по роботам


речь о онлайн-семинарах - вебинарах, т.е. через интернет.