Ниже код примера, как протестировать стратегию использующую индикатор Fractal.
Здесь нужно обратить внимание на то какое смещение указано в GetValue(..., Period),
т.е. вызывая индикатор фрактала с некоторым периодом мы этот же период используем как смещение для анализа, если использовать текущий бар со смещением 0, то это будет заглядыванием в будущее!
Код: Выделить всё
function Initialize()
{
StrategyName = "FractalTest";
AddParameter("Period", 5, "", 1);
AddInput("Input1", Inputs.Candle, 5, true, "SRM8=ФОРТС");
LongLimit = 44;
ShortLimit = -44;
AddChartIndicator("MY.Fractal", new Dictionary <string, string>{{"Period", "Period"}});
}
function OnUpdate()
{
/// ПРАВИЛО 1
if ( (MY.Fractal(Input1, Period).GetValue("H", (int)Period) > 0) )
{
EnterShort();
}
/// ПРАВИЛО 2
if ( (MY.Fractal(Input1, Period).GetValue("L", (int)Period) > 0) )
{
EnterLong();
}
}
Вот результат уже похож на правду
теперь мы видим, что позиции открываются после реального обнаружения фрактала, на том баре где фракталы были обнаружены реально.