Индикатор поддержки/сопротивления - страница 3

 
Yurixx - не слушайте никого. Сами исследуйте и делайте свои выводы. Если вы умеете делать выводы то у вас все получится.

Полностью согласен и поддерживаю. Велосипеды у всех разные выходят...

Иначе будете как дурак считать 4 бара слева а потом 4 бара справа :)

у вас есть альтернативная (намного лучшая) система определения линий поддержки/сопротивления, что подсчет баров вызывает у вас улыбку?

ЗЫ: Либо на этом форуме в норме нанести оскорбление (оскорбительное сравнение и т.п.)? либо я мнительный... либо либо... Может все же стоит более уважительно относится к собеседникам? к тому же я подозреваю, что вы вряд ли знакомы с Yurixx, и тем более со мной... хотя бы одно это уже должно немного сдерживать вас в высказываньях и сравненьях.
 
Ind-WSO+WRO+Trend Line.mq4 это и есть классическое понимание поддержки и сопротивления.
"Линии поддержки и сопротивления"
"Линии тренда"


На сайте Metaquotes просто слова. Они не определяют поддержку/сопротивление
так, чтобы это можно было запрограммировать. Тем более, не определяют
однозначно.

Либо я чего то не совсем понял! либо вы что то не так сделали


Без сомнения это я не так сделал. Я не разбирался с Вашим индикатором. Просто
кинул его на EURUSD, М1 (не "кривой" :-). Картинка мне понравилась, но как сделать
так, чтобы она показывала те уровни, что я вижу глазами, я не знаю.

Ваше определение вполне четкое и ясное. Однако, есть две проблемы. Упомянутых Вами
точек достаточно много - это в основном вершины зигзага, о котором писал Quark, с не
очень большим параметром. Далеко не все эти точки относятся к поддержке/сопротивлению.
Большинство просто вершины ступенек при восходящем/нисходящем тренде.

Вторая проблема - ваш индикатор не показывает те уровни, которые остались в
недавнем прошлом. По крайней мере я не знаю как сделать так, чтобы он их показывал.
На М1 я увидел только то, что находится в непосредственной близости от текущей цены.
Индикаторы Демарка в этом смысле работают лучше. Если, конечно, я не ошибаюсь.
 
Либо на этом форуме в норме нанести оскорбление (оскорбительное сравнение и т.п.)? либо я мнительный...


nsi2000, не принимайте этого так близко к сердцу.
Ну любят пацаны локтями потолкаться. Особенно заочно,
когда знают, что за ухо никто не схватит. Возраст такой.
 
На сайте Metaquotes просто слова. Они не определяют поддержку/сопротивление
так, чтобы это можно было запрограммировать. Тем более, не определяют однозначно.

Согласен! скупо, но по существу.

Без сомнения это я не так сделал. Я не разбирался с Вашим индикатором. Просто
кинул его на EURUSD, М1 (не "кривой" :-). Картинка мне понравилась, но как сделать
так, чтобы она показывала те уровни, что я вижу глазами, я не знаю.

Вы хотите сказать что индикатор не нарисовал линию на отметке 1.2170? у меня все рисуется и отображается...

Ваше определение вполне четкое и ясное. Однако, есть две проблемы. Упомянутых Вами
точек достаточно много - это в основном вершины зигзага, о котором писал Quark, с не
очень большим параметром. Далеко не все эти точки относятся к поддержке/сопротивлению.
Большинство просто вершины ступенек при восходящем/нисходящем тренде.

Вторая проблема - ваш индикатор не показывает те уровни, которые остались в
недавнем прошлом. По крайней мере я не знаю как сделать так, чтобы он их показывал.
На М1 я увидел только то, что находится в непосредственной близости от текущей цены.
Индикаторы Демарка в этом смысле работают лучше. Если, конечно, я не ошибаюсь.

Я чесно сказать не представляю себе как можно что либо определять по м1...
порылся в архивах, и нашел для вас описание системы торговли по этому индикатору с подробным описанием самого индикатора. выложил здесь http://www.expert-mt4.nm.ru/widner.rar просьба скачать к себе, так как в ближайшем будущем этот фаил будет удален с сайта.
Думаю после прочтения у вас отпадут многие вопросы по поводу формирования точек под./сопр.
 

Но в целом - все просто :)

Гыгы :) кончится, как все у тебя, полуфабрикатом недалеким ;)


Выкладываю очередной недалекий полуфабрикат. Может, пригодится кому.

#property copyright "Quark"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_minimum -1
#property indicator_maximum 1

// indicator parameters
extern int nMinMaxPoints = 100;

// indicator buffers
double arrExtMapBuffer[];
double arrExtMapBuffer_1[];

int nExtCountedBars = 0;

int nLastMinMaxBar;
int nLastMinMaxBarTmp;
int nLastMinMaxType;

double dLastMin, dLastMax;

double arrLastExtremums[3];			// Price
int arrLastExtremumsIdx[3];		// Bar number
int nNumOfExtremums = 0;			// At the very beginning there can be < 3

////////////////////////
int init()
{
	ObjectCreate("Support", OBJ_TREND, 0, 0, 0);
	ObjectSet("Support", OBJPROP_COLOR, Yellow);
	
	ObjectCreate("Resistance", OBJ_TREND, 0, 0, 0);
	ObjectSet("Resistance", OBJPROP_COLOR, Yellow);

	string strIndicatorShortName;

	// drawing settings
	SetIndexStyle(0, DRAW_HISTOGRAM);
	SetIndexShift(0, 0);
	SetIndexEmptyValue(0,0.0);
		
	SetIndexStyle(1, DRAW_HISTOGRAM);
	SetIndexShift(1, 0);
	SetIndexEmptyValue(1,0.0);

	IndicatorDigits(4);
		
	strIndicatorShortName = "Zigzag_2(" + nMinMaxPoints + ")";  
	IndicatorShortName(strIndicatorShortName);

	// indicator buffers mapping
	SetIndexBuffer(0, arrExtMapBuffer);
	SetIndexBuffer(1, arrExtMapBuffer_1);

	dLastMin = Low[Bars - 1];
	dLastMax = High[Bars - 1];

	nLastMinMaxBar = Bars - 1;
	nLastMinMaxType = 0;

	int nPos = Bars - 1;
	int nLastPos = nPos;

	while(nPos >= 0)	// Looking for a first min or max
	{
		if(dLastMax <= High[nPos])
		{
			dLastMax = High[nPos];
			nLastMinMaxBar = nPos;
		}

		if(dLastMin >= Low[nPos])
		{
			dLastMin = Low[nPos];
			nLastMinMaxBar = nPos;
		}

		if(Low[nPos] < dLastMax - nMinMaxPoints * Point)	// Maximum found
		{
			nLastMinMaxType = 1;
			dLastMin = Low[nPos];
			dLastMax = High[nPos];
			nLastMinMaxBar = nPos;
		
			break;
		}
		else if(High[nPos] > dLastMin + nMinMaxPoints * Point)	// Minimum found
		{
			nLastMinMaxType = -1;
			dLastMax = High[nPos];
			dLastMin = Low[nPos];
			nLastMinMaxBar = nPos;
			
			break;			
		}

		nPos--;
	}

	return(0);
}

// ------

int deinit()
{
	ObjectDelete("Support");
	ObjectDelete("Resistance");
}

// ------

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 - 2;

	while(nPos > 0)
	{
		arrExtMapBuffer[nPos] = 0.0;
		arrExtMapBuffer_1[nPos] = 0.0;
		
		double dLastMaxTmp = dLastMax;
		double dLastMinTmp = dLastMin;
		
		if(nLastMinMaxType != 1)	// Expecting maximum
		{
			if(dLastMax <= High[nPos])
			{
				dLastMax = High[nPos];
				nLastMinMaxBar = nPos;
			}
			
			if(Low[nPos] < dLastMax - nMinMaxPoints * Point)	// Maximum found
			{
				if(High[nPos] - Low[nPos] <= nMinMaxPoints * Point)
				{
					arrExtMapBuffer[nPos] = 1.0;//High[nLastMinMaxBar];
					arrExtMapBuffer_1[nLastMinMaxBar] = 1.0;
					nLastMinMaxType = 1;
					dLastMin = Low[nPos];
					dLastMax = High[nPos];
					
					nLastMinMaxBarTmp = nLastMinMaxBar;
					nLastMinMaxBar = nPos;
				}
				else
				{
					arrExtMapBuffer[nPos] = 0.0;
					arrExtMapBuffer[nPos + 1] = 0.0;
					arrExtMapBuffer_1[nLastMinMaxBar] = 0.0;
					dLastMax = dLastMaxTmp;
					dLastMin = dLastMinTmp;
				}
			}
		}
		
		if(nLastMinMaxType != -1)	// Expecting minimum
		{
			if(dLastMin >= Low[nPos])
			{
				dLastMin = Low[nPos];
				nLastMinMaxBar = nPos;
			}
			
			if(High[nPos] > dLastMin + nMinMaxPoints * Point)	// Maximum found
			{
				if(High[nPos] - Low[nPos] <= nMinMaxPoints * Point)
				{
					arrExtMapBuffer[nPos] = -1.0;//Low[nLastMinMaxBar];
					arrExtMapBuffer_1[nLastMinMaxBar] = -1.0;
					nLastMinMaxType = -1;
					dLastMax = High[nPos];
					dLastMin = Low[nPos];
		
					nLastMinMaxBarTmp = nLastMinMaxBar;
					nLastMinMaxBar = nPos;
				}
				else
				{
					arrExtMapBuffer[nPos] = 0;
					arrExtMapBuffer[nPos + 1] = 0;
					arrExtMapBuffer_1[nLastMinMaxBar] = 0.0;
					dLastMax = dLastMaxTmp;
					dLastMin = dLastMinTmp;
				}
			}
		}
		
		if(arrExtMapBuffer[nPos] != 0)
		{
			int nMaxShift = MathMin(nNumOfExtremums, 2);
		
			for(int i = 0; i < nMaxShift; i++)
			{
				arrLastExtremums[i] = arrLastExtremums[i + 1];
				arrLastExtremumsIdx[i] = arrLastExtremumsIdx[i + 1];
			}
			
			if(nLastMinMaxType == -1)	// Minimum
				arrLastExtremums[i] = Low[nLastMinMaxBarTmp];
			else
				arrLastExtremums[i] = High[nLastMinMaxBarTmp];
			
			arrLastExtremumsIdx[i] = nLastMinMaxBarTmp;	
		
			nNumOfExtremums++;
			
			if(nNumOfExtremums > 2)
			{
				double dA = (arrLastExtremums[2] - arrLastExtremums[0]) / 
					(Time[arrLastExtremumsIdx[2]] - Time[arrLastExtremumsIdx[0]]);

				if(nLastMinMaxType == -1)	// Minimum, we draw support first
				{
/*					ObjectMove("Support", 0, Time[arrLastExtremumsIdx[0]], arrLastExtremums[0]);
					ObjectMove("Support", 1, Time[arrLastExtremumsIdx[2]], arrLastExtremums[2]);

					ObjectMove("Resistance", 0, Time[arrLastExtremumsIdx[1]], arrLastExtremums[1]);
					ObjectMove("Resistance", 1, Time[arrLastExtremumsIdx[2]], 
						dA * (Time[arrLastExtremumsIdx[2]] - Time[arrLastExtremumsIdx[1]]) 
							+ arrLastExtremumsIdx[1]);
*/				}
				else
				{
					ObjectMove("Resistance", 0, Time[arrLastExtremumsIdx[0]], arrLastExtremums[0]);
					ObjectMove("Resistance", 1, Time[arrLastExtremumsIdx[2]], arrLastExtremums[2]);

					ObjectMove("Support", 0, Time[arrLastExtremumsIdx[1]], arrLastExtremums[1]);
					ObjectMove("Support", 1, Time[arrLastExtremumsIdx[2]], 
						dA * (Time[arrLastExtremumsIdx[2]] - Time[arrLastExtremumsIdx[1]]) 
							+ arrLastExtremums[1]);
				}
			}
		}

		nPos--;
	}
}
///////////////////
/*

if(IsTesting())
{
	FileDelete("__zigzag_test.txt"); 
	hFile = FileOpen("__zigzag_test.txt", FILE_BIN | FILE_WRITE, '\t');	
}

void SaveComment(string strComment)
{
	if(IsTesting())
	{
		FileWriteString(hFile, strComment, StringLen(strComment));
	}
}

if(IsTesting())
	FileClose(hFile);
*/


 
ЗЫ: Либо на этом форуме в норме нанести оскорбление (оскорбительное сравнение и т.п.)? либо я мнительный... либо либо... Может все же стоит более уважительно относится к собеседникам? к тому же я подозреваю, что вы вряд ли знакомы с Yurixx, и тем более со мной... хотя бы одно это уже должно немного сдерживать вас в высказываньях и сравненьях.

Сорри если кого обидел. Надеюсь со временем вы перестанете считать 4 бара слева а потом ... вобщем ерунда это все :)
 

Либо на этом форуме в норме нанести оскорбление (оскорбительное сравнение и т.п.)? либо я мнительный... либо либо... Может все же стоит более уважительно относится к собеседникам? к тому же я подозреваю, что вы вряд ли знакомы с Yurixx, и тем более со мной... хотя бы одно это уже должно немного сдерживать вас в высказываньях и сравненьях.


Присоединяюсь.
 

Ну что, уважаемый Begun, берете свое Гыгы обратно?
:)

Не ;) Не берем USDCAD w1 .. параметр = 100. Смотрbм и думаем что таки полуфабрикат недоделанный :)

На самом деле ктото нечто подобное уже делал.. не помню кто и где...
 
Лана - отныне прекрашаю я критикованием заниматься.
Неблагодарное это дело. Сорри кого обидел.
 

Ну что, уважаемый Begun, берете свое Гыгы обратно?
:)

Не ;) Не берем USDCAD w1 .. параметр = 100. Смотрbм и думаем что таки полуфабрикат недоделанный :)

На самом деле ктото нечто подобное уже делал.. не помню кто и где...


А и правда :) Спасибо.
Причина обращения: