Если еще не ушел в отпуск - есть продолжение :))
я в отпуске.
Rosh, если у тебя нет нормального зигзага, могу поделиться. Скажи, куда кидать :)
Кинь в личку на Альпари или ФорексСистемз. Зигзаг у меня есть, но и твой посмотрю с удовольствием. :) Заранее спасибо - если бросишь, если не бросишь - не обижусь.
Послал... по-моему... :)
Quark, Вы можете и с нами поделиться. в своё время мы обещади внести зигзаг в число стандартных индикаторов. теперь постепенно собираем информацию о правильном зигзаге
Quark, Вы можете и с нами поделиться. в своё время мы обещади внести зигзаг в число стандартных индикаторов. теперь постепенно собираем информацию о правильном зигзаге
Сторгуемся :) Ускоренную навигацию по окнам с указанием того, какие там эксперты (Window - More Windows) сделаете?
Сейчас, архив найду.
#property copyright "Copyright Quark"
#property link ""
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
// indicator parameters
extern int nMinMaxPoints = 25;
// indicator buffers
double arrExtMapBuffer[];
int nExtCountedBars = 0;
int nLastMinMaxBar = 0;
int nLastMinMaxType = 0;
double dLastMin, dLastMax;
////////////////////////
int init()
{
string strIndicatorShortName;
// drawing settings
SetIndexStyle(0, DRAW_SECTION);
SetIndexShift(0, 0);
SetIndexEmptyValue(0,0.0);
IndicatorDigits(4);
strIndicatorShortName = "Zigzag(" + nMinMaxPoints + ")";
IndicatorShortName(strIndicatorShortName);
// indicator buffers mapping
SetIndexBuffer(0, arrExtMapBuffer);
dLastMin = Low[Bars - 1];
dLastMax = High[Bars - 1];
return(0);
}
///////////////////////////
int start()
{
nExtCountedBars = IndicatorCounted();
if(nExtCountedBars < 0)
return(-1);
// last counted bar will be recounted
if(nExtCountedBars > 0)
nExtCountedBars--;
Zigzag();
return(0);
}
///////////////////
void Zigzag()
{
int nPos = Bars - nExtCountedBars;
nPos = MathMax(nLastMinMaxBar, nPos);
dLastMin = Low[nPos];
dLastMax = High[nPos];
while(nPos >= 0)
{
arrExtMapBuffer[nPos] = 0.0;
if(nLastMinMaxType != 1) // Expecting maximum
{
if(dLastMax <= High[nPos])
{
dLastMax = High[nPos];
nLastMinMaxBar = nPos;
}
else if(Low[nPos] < dLastMax - nMinMaxPoints * Point) // Maximum found
{
arrExtMapBuffer[nLastMinMaxBar] = High[nLastMinMaxBar];
nLastMinMaxType = 1;
dLastMin = Low[nPos];
nLastMinMaxBar = nPos;
}
}
else if(nLastMinMaxType != -1) // Expecting minimum
{
if(dLastMin >= Low[nPos])
{
dLastMin = Low[nPos];
nLastMinMaxBar = nPos;
}
else if(High[nPos] > dLastMin + nMinMaxPoints * Point) // Maximum found
{
arrExtMapBuffer[nLastMinMaxBar] = Low[nLastMinMaxBar];
nLastMinMaxType = -1;
dLastMax = High[nPos];
nLastMinMaxBar = nPos;
}
}
nPos--;
}
}
///////////////////
Фы... Это _не_правильный зигзаг ! Он пропускает хаи или лои иногда.
Вобщем в штат его брать нельзя.
Сорри Quark :) без обид.
Вобщем в штат его брать нельзя.
Сорри Quark :) без обид.
Это мое видение зигзага :) Если хаи и лои ему не соответствуют - тем хуже для них. Впрочем, возможно, они были слишком близки к последнему экстремуму - там логика такая, что ловит прайс мув больше заданного.
Это мое видение зигзага :) Если хаи и лои ему не соответствуют - тем хуже для них. Впрочем, возможно, они были слишком близки к последнему экстремуму - там логика такая, что ловит прайс мув больше заданного.
В том то и дело что такой реализации зигзага уже наверное лет 10 и все всегда показывают пальцем на пропущенные хаилои а какойнить вумный перец говорит что типа так и нуна :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь