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

помогите реализовать

Добавлено: 06 апр 2022, 23:33
TPEHEP
Друзья, помогите пожалуйста написать код для кусочка стратегии, я не силен в операторах и переменных C#


Если цена закрытия выше 5EMA но не более 1%-2%
то открыть лонг

Re: помогите реализовать

Добавлено: 09 апр 2022, 07:35
evge
Приветствую!

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

function Initialize()
{
   StrategyName = "5EMA";
   AddParameter("Percent", 2, "Максимально допустимый процент", 1);
   AddParameter("Take", 0.5, "TakeProfit процент", 1);
   AddParameter("Period1", 10, "EMA1 период", 1);
   AddParameter("Period2", 20, "EMA2 период", 1);
   AddParameter("Period3", 30, "EMA3 период", 1);
   AddParameter("Period4", 40, "EMA4 период", 1);
   AddParameter("Period5", 50, "EMA5 период", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 100;
   ShortLimit = -100;
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period1"}});
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period2"}});
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period3"}});
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period4"}});
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period5"}});
}

function OnUpdate()
{

// evge 09.04.2022 https://alfadirect4.ru

var I = Input1;
var C = I.Close[0];

var E1 = EMA(I, Period1)[0];
var E2 = EMA(I, Period2)[0];
var E3 = EMA(I, Period3)[0];
var E4 = EMA(I, Period4)[0];
var E5 = EMA(I, Period5)[0];

double[] E = {E1, E2, E3, E4, E5};
double Max = E.Max();

if (C > Max && (C - Max) / Max * 100 < Percent) EnterLong();

if (CurrentPLper() >= Take) ClosePosition();

}

Re: помогите реализовать

Добавлено: 07 фев 2023, 16:19
ip851874
При тестировании скользящие стартуют из точки начала тестирования, как сдеалть что бы EMA накладывались на график не зависимо от старта тестирования ?

Re: помогите реализовать

Добавлено: 05 мар 2023, 08:59
BugsDigger
Вы имеете в виду графики результатов именно после тестирования?

Графики считаются от некоторой точки до левой границы оси времени на графике. Эта точка выбирается программой автоматически при листании графика влево-вправо.

Мне помнится (давно уж не открывал терминал, не вижу смысла), что вроде и на графике тестирования индикаторы показывались так же. М.б. что-то за год изменилось или память подводит ...

Если и вправду разработчики отрезали показ именно в результатах тестирования (что выглядит странно, т.к. для этого нужно прилагать отдельные дополнительные усилия), то только обращение в поддержку поможет вам и нам понять - зачем.