Идеально подходит для трендовых инструментов.
Для лучшего восприятия отображения индикатора желательно включить график в виде баров.
По мотивам: https://ru.tradingview.com/script/z3Suev68-fibobars/
Примеры
Код: Выделить всё
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();
}
Скачать индикатор