Страница 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 (33.73 КБ) 28016 просмотров
здесь выход из позиции long это ожидание когда цена пересечет PSAR снизу - вверх.
т.е. если цена после входа в позицию выше PSAR, то стратегия сначала дождётся когда цена станет ниже PSAR, а затем будет выход только при пересечении PSAR снизу - вверх.
Re: Вход по лимитной заявке и индикатору.
Добавлено: 13 авг 2022, 20:00
Максим
Спасибо!
На графике входы показаны на следующей свече после пересечения - это потому что отображение в тестере? В реалтайме будет вход в момент пересечения?
По выходу, не совсем так, нужно не Close , а SellLimit, обратной заявкой, привязанной к PSAR (так же как в случае с EMA), если открыта лонговая позиция.
Re: Вход по лимитной заявке и индикатору.
Добавлено: 13 авг 2022, 20:36
Максим
- robot.jpg (78.6 КБ) 27996 просмотров
Re: Вход по лимитной заявке и индикатору.
Добавлено: 13 авг 2022, 20:43
Максим
- 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 (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 (31.72 КБ) 27968 просмотров
Re: Вход по лимитной заявке и индикатору.
Добавлено: 13 авг 2022, 23:56
Максим
А стоп сюда как еще добавить, чтобы он корректно работал? На случай форсмажора.