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

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

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

Добавлено: evge » 15 окт 2020, 19:45

Тема: FiboBars - трендовый индикатор, фильтр шума

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

FiboBars индикатор служит для удаления шума в графике цены. В своей логике он использует число Фибоначчи. Для возможности настройки уровня шума, в настройках есть поле "Period" и уровень "Level" fibo (0.236 по умолчанию). Чем выше значение периода, тем больше шумы поглощает индикатора.

Идеально подходит для трендовых инструментов.

Для лучшего восприятия отображения индикатора желательно включить график в виде баров.

По мотивам: https://ru.tradingview.com/script/z3Suev68-fibobars/

Примеры

FiboBars-02.png
FiboBars-02.png (24.67 КБ) 10576 просмотров

FiboBars-01.png
FiboBars-01.png (29.44 КБ) 10576 просмотров

FiboBars.zip
(71.38 КБ) 922 скачивания


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

function Initialize()
{
   IndicatorName = "FiboBars";   
   AddInput("Input", Inputs.Candle);   
   AddSeries("Bear", DrawAs.Custom, Color.Red, AxisType.Default, true, Axes.Parent);
   AddSeries("Bull", DrawAs.Custom, Color.Green, AxisType.Default, true, Axes.Parent);

   AddSeries("trend", DrawAs.Custom, Color.Red, false);
   
   AddGlobalVariable("Last", Types.Boolean, false);   
   AddParameter("Period", 7, 1);
   AddParameter("Level", 0.236, 1);
}

function Evaluate()
{

//evge 15.10.2020 https://alfadirect4.ru

var I = Input;

double lwst = I.Low[0];
double hgst = I.High[0];
for (int x = 1; x < Period; x++)
{
   if (I.Low[x] < lwst) lwst = I.Low[x];
   if (I.High[x] > hgst) hgst = I.High[x];
}

int trend1 = (trend[1] >= 0) && ((hgst - lwst) * Level < (I.Close[0] - lwst)) ? 1 : -1;
int trend2 = (trend[1] <= 0) && ((hgst - lwst) * Level < (hgst - I.Close[0])) ? -1 : 1;

trend[0] = I.Open[0] > I.Close[0] ? trend1 : trend2;

Bear = Input.Low[0];
Bull = Input.High[0];
     
if (trend[0] > 0)
   {
      Bull.DrawHistogram(Bear);
      Last = true;
   }
   else
   {
      Bear.DrawHistogram(Bull);
      Last = false;
   }
}


простой пример использования в стратегии

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

function Initialize()
{
   StrategyName = "FiboBarsStr";
   AddParameter("P1", 7, "", 1);
   AddParameter("P2", 0.236, "", 1);
   AddInput("Input1", Inputs.Candle, 5, true, "SBER=МБ ЦК");
   LongLimit = 10;
   ShortLimit = -10;
   AddChartIndicator("MY.FiboBars", new Dictionary <string, string>{{"Period", "P1"},{"Level", "P2"}});
}

function OnUpdate()
{
var I = Input1;

var F = MY.FiboBars(I, P1, P2);

if (F["trend"][0] > 0) EnterLong();
if (F["trend"][0] < 0) EnterShort();

}


Скачать индикатор
FiboBars-03.png
FiboBars-03.png (26.41 КБ) 10576 просмотров