Понятно, что тренды вырастают и минимальных движений, которые сливаются в более мощные.
Что бы однозначно описать происходящее, я бы разделил рыночные движения на три диапазона.
Рендж «А».
Формируется минимальным движением цены. Минимально значимым для нас. Это по сути изменения цены за тот тайм фрейм, на котором мы работаем. Проще говоря, — дневная, часовая, минутная… волотильность. По большому счету все начинается с тиков. Это те кирпичики которые в дальнейшем выстраиваются в какое то направленное движение. Можно начинать отслеживать движение с тиков, но тогда до трендов мы дойдем, пройдя большее количество ступеней.
В общем, это уже из практики: основной кирпичик, — это волотильность того тайм фрейма, на который установлен индикатор.
Я работаю на днях, по этому мой кирпичик, ренж «А», — это изменение цены за день.
Расчет не сложный и общедоступный. И тут ни какого секрета нет, — волотильность, пока все просто.
Собственно и скрипт диапазона «А» несекретный могу опубликовать.
для WealthLab6:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using WealthLab;
using WealthLab.Indicators;
using finantic.TL;
namespace WealthLabCompile2
{
class Strategy: WealthScriptTL
{
public int RNGaFSeries (){
int fnResult = 0;
double RNGaHi, RNGaLo, RNGaRng = 0.0;
int bar = 0;
string sName = null;
sName = (string)«RNGaF('')»;
fnResult = FindNamedSeries(sName);
if ((fnResult >= 0)) return fnResult;
fnResult = CreateNamedSeries(sName);
for (bar = 5; bar <= (Bars.Count — 1); bar++) {
if ((PriceClose((bar — 1)) > PriceHigh(bar))) RNGaHi = (double)PriceClose((bar — 1));
else RNGaHi = (double)PriceHigh(bar);
if ((PriceClose((bar — 1)) < PriceLow(bar))) RNGaLo = (double)PriceClose((bar — 1));
else RNGaLo = (double)PriceLow(bar);
RNGaRng = (double)(((RNGaRng + ((RNGaHi — RNGaLo)))) / 2);
GetSeries(fnResult)[bar] = RNGaRng;
}
return fnResult;
}
public double RNGaF (int bar){
double fnResult = 0.0;
fnResult = GetSeriesValue(bar, RNGaFSeries());
return fnResult;
}
public int bar,RNGaFS;
public int RNGaPane;
protected override void Execute(){
Init();
RNGaFS = (int)CreateSeries();
RNGaPane = (int)CreatePane(50, true, true);
for (bar = 0; bar <= 5; bar++) {
GetSeries(RNGaFS)[bar] = 0;
}
for (bar = 5; bar <= (Bars.Count — 1); bar++) {
GetSeries(RNGaFS)[bar] = RNGaF(bar)/PriceClose(bar)*100;
PlotSeries(RNGaFS, RNGaPane, WL_BLUE, WL_THIN);
}
HideVolume();
}
}
}
Расчитав рендж«А», мы подготовились строить из этих кирпичиков рендж следущего уровня.
завтра продолжим...
Например, что из узкого диапазона тренд, с очень большой вероятностью, разовьется, что тренд уже идет и играть против него, что против ветра… Характер тренда, — спокойный, безоткатный, провокационный, глубина провокаций и т.д.
кстати что закончился все же можно говорить увереннее, не на хаях-лоях естественно.