Стратегии и роботы > Вход по лимитной заявке и индикатору.

Обсуждение, описание стратегий и роботов, идеи для стратегий
Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 18:31

Здравствуйте.
Возможно ли реализовать следующую стратегию, если да, то как?
Лимитная заявка следует вдоль индикатора. Например, цена выше скользящей средней (EMA 50), лимитник на покупку=ЕМА и смещается вслед за ней. Когда происходит откат к средней, лимитка срабатывает.
Закрытие позиции аналогично, лимиткой, например, на касание PSAR, если он сверху.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 13 авг 2022, 19:50

Здравствуйте!

Если это все условия, то примерно так:

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

/**

**/

function Initialize()
{
   StrategyName = "FollowEMA";
   AddParameter("Period", 20, "EMA Period", 1);
   AddParameter("Step", 0.02, "PSAR Step", 1);
   AddParameter("Maximum", 0.2, "PSAR Maximum", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 1000;
   ShortLimit = -1000;
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period"}});
   AddChartIndicator("ParabolicSAR", new Dictionary <string, string>{{"Step","Step"},{"Maximum","Maximum"}});   
}

function OnUpdate()
{
   var I = Input1;
   var C = Input1.Close;
   var E = EMA(I, Period);
   var P = PSAR(I, Step, Maximum);
   var CP = CurrentPosition();
         
   if (C[0] > E[0] && CP == 0)
   {
      CancelActiveOrders(true);
      EnterLongLimit(E[0]);
   }
   
   if (C[0] > P[0] && C[1] < P[1] && CP > 0) CloseLong();
}


FollowEMA-01.png
FollowEMA-01.png (33.73 КБ) 20640 просмотров


здесь выход из позиции long это ожидание когда цена пересечет PSAR снизу - вверх.
т.е. если цена после входа в позицию выше PSAR, то стратегия сначала дождётся когда цена станет ниже PSAR, а затем будет выход только при пересечении PSAR снизу - вверх.
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 20:00

Спасибо!
На графике входы показаны на следующей свече после пересечения - это потому что отображение в тестере? В реалтайме будет вход в момент пересечения?
По выходу, не совсем так, нужно не Close , а SellLimit, обратной заявкой, привязанной к PSAR (так же как в случае с EMA), если открыта лонговая позиция.

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 20:36

robot.jpg
robot.jpg (78.6 КБ) 20620 просмотров

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 20:43

robot2.jpg
robot2.jpg (103.18 КБ) 20618 просмотров

Нужно, чтобы так работало ) А если касание не произошло, цена пробила PSAR вверх, заявка убиралась.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 13 авг 2022, 21:02

по закрытию со слежением аналогично, CloseLongLimit(Price)
с проверкой конечно же, что цена на текущий момент ниже чем PSAR

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

function Initialize()
{
   StrategyName = "FollowEMA";
   AddParameter("Period", 20, "EMA Period", 1);
   AddParameter("Step", 0.02, "PSAR Step", 1);
   AddParameter("Maximum", 0.2, "PSAR Maximum", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 1000;
   ShortLimit = -1000;
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period"}});
   AddChartIndicator("ParabolicSAR", new Dictionary <string, string>{{"Step","Step"},{"Maximum","Maximum"}});   
}

function OnUpdate()
{
   var I = Input1;
   var C = Input1.Close;
   var E = EMA(I, Period);
   var P = PSAR(I, Step, Maximum);
   var CP = CurrentPosition();
         
   if (C[0] > E[0] && CP == 0)
   {
      CancelActiveOrders(true);
      EnterLongLimit(E[0]);
   }
   
   if (C[0] < P[0] && CP > 0)
   {
      CancelActiveOrders(true);
      CloseLongLimit(P[0]);
   }

}
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 21:09

Спасибо, теперь вроде все как надо. Осталось довести до ума ))

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 13 авг 2022, 21:10

но тут надо учитывать что переставляется заявка лимитная тоже только если цена ниже, как только пересекла PSAR то может и не закрыться, т.к. лимитная заявка не будет снята предыдущая и новая не установится, будет ждать исполнения.
Но суть понятна, далее условиями можно сделать как нужно.
FollowEMA-02.png
FollowEMA-02.png (7.61 КБ) 20599 просмотров
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 13 авг 2022, 21:20

выше исходники поправил, там была в первом условии ошибка поэтому входы были там где ожидалось по тестам.

if (C[0] < E[0] && CP == 0)

заменено на

if (C[0] > E[0] && CP == 0)

т.е. перевыставление заявки нужно когда цена выше EMA

FollowEMA-03.png
FollowEMA-03.png (31.72 КБ) 20592 просмотра
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 13 авг 2022, 23:56

А стоп сюда как еще добавить, чтобы он корректно работал? На случай форсмажора.


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей