Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1230

Добавлено: evge » 30 май 2018, 07:34

Тема: Re: Fractal – фрактал (экстремум)

Текст сообщения:

Все верно, пример уже корректный, т.е. как я выше и писал [0] или [Period] - имеет значение!
Как и в моем примере последнем, где нет заглядывания в будущее и использовано [Period].

Заглядыванием в будущее будет, если

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

   if(!Double.IsNaN(h[Period])) last_high_fractal = h[Period];
   if(!Double.IsNaN(l[Period])) last_low_fractal = l[Period];   


было бы

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

   if(!Double.IsNaN(h[Period])) last_high_fractal = h[0];
   if(!Double.IsNaN(l[Period])) last_low_fractal = l[0];   


в таком варианте конечно работать не будет, но если запустить на нём контртренд тогда будет обманывать.

Например так:

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

/**
Algorithm = ТРЕНД;
**/

function Initialize()
{
   StrategyName = "My_Fractals";
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   AddParameter("Period", 2, "Порядок фрактала");
   LongLimit = 1;
   ShortLimit = -1;
   AddChartIndicator("MY.Fractal", new Dictionary <string, string>{{"Period", "Period"}});
   AddGlobalVariable("last_high_fractal", Types.Double, 10000000000.0);
   AddGlobalVariable("last_low_fractal", Types.Double, -1.0);
}

function OnUpdate()
{
   var fractal = MY.Fractal(Input1, Period);
   var h = fractal["H"];
   var l = fractal["L"];
     
   /// это максимум
   if ( h[0] > 0 )
   {
      EnterShort();
   }

   /// это минимум
   if ( l[0] > 0 )
   {
      EnterLong();
   }

}


и получим следующее:

My_Fractals-04.png
My_Fractals-04.png (40.87 КБ) 31053 просмотра

My_Fractals-03.png
My_Fractals-03.png (47.89 КБ) 31053 просмотра


Должно быть, если заменить [0] на [Period], вот так

My_Fractals-02.png
My_Fractals-02.png (35.85 КБ) 31054 просмотра

My_Fractals-01.png
My_Fractals-01.png (35.96 КБ) 31056 просмотров