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

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

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

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

Добавлено: 13 авг 2022, 19:50
evge
Здравствуйте!

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

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

/**

**/

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 КБ) 28016 просмотров


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

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

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

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

Добавлено: 13 авг 2022, 20:36
Максим
robot.jpg
robot.jpg (78.6 КБ) 27996 просмотров

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

Добавлено: 13 авг 2022, 20:43
Максим
robot2.jpg
robot2.jpg (103.18 КБ) 27994 просмотра

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

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

Добавлено: 13 авг 2022, 21:02
evge
по закрытию со слежением аналогично, 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]);
   }

}

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

Добавлено: 13 авг 2022, 21:09
Максим
Спасибо, теперь вроде все как надо. Осталось довести до ума ))

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

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

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

Добавлено: 13 авг 2022, 21:20
evge
выше исходники поправил, там была в первом условии ошибка поэтому входы были там где ожидалось по тестам.

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

заменено на

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

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

FollowEMA-03.png
FollowEMA-03.png (31.72 КБ) 27968 просмотров

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

Добавлено: 13 авг 2022, 23:56
Максим
А стоп сюда как еще добавить, чтобы он корректно работал? На случай форсмажора.