Японские свечи- хороший индикатор - страница 2

 
хех ... очередной пример заблуждения новичка :)
сходите на форум поля. там вам все расскажут про свечи со всеми стат. выкладками.
 
Ни кто не гворит, что надо торговать только по свечам - но их сигналы очень помогают в совокупности с другими индикаторами!! Самое трудное помнить их сочетания - поэтому индикатор и нужен
 
какая пара?

EURUSD H4

По моему - там все правильно
 
Да, японские свечи - хороший анализатор, не спорю. Сам по ним работаю.
И эксперта по ним тоже написал. Но никогд ане стоит забывать, что это как котировки Reuters - индикативно! Во первых, сами свечи создавались для товарных рынком, где минимумом был ДЕНЬ торговли, когда почти гарантированно появляется какой никакой разрыв. В нашем же случае всё очень и очень субьективно, посему отарбатывается всё почти что на интуиции, а подобные эксперты выдают ну уж самые явные сигналы (не забывайте, к стати, адаптировать свечной анализ применительно к Форексу, там много разных допусков...).
 
Это все понятно. Но свечи, тем не менее хорошо говорят и на Форексе. По моему - это очень хороший подтверждающий сигнал к другим индикаторам.
 
Profi_R 13.07.05 12:46

да действительно, даже не вникая в код поместил индикатор на чарт (GBPUSD D1) и наблюдаю 31/03/2003 что одна и та же свеча идет как молот и вечерняя звезда (противоположные сигналы), позже на следующей недели если ничего не найдешь попробую перевести твой код


В книге под редакцией Сафина "Кому светят японские свечи?", изданной Форекс Клубом - есть пример, как они интерпретируют их комбинации (кажется двоичным кодом). Я не программист, но кажется это может помочь для расширения количества патернов свечей включаемых в индикатор.
Вообще полностью согласен с Hell - самому держать в голове, а главное сравнивать комбинации для определения того или иного вида - весьма утомительно. Индикатор - хорошее подспорье.
Другое дело - насколько он эффкутивно будет показывать, так на том же Fibo есть программа DealSmart в которую включен такой индикатор, но во первых колличество анализируемых паттернов слишком мало, как раз те, котрые и без них в голове сидят. Да и порой врет безбожно.
Если же дело до такой работы дойдет, то могу поискать описание различных паттернов свечей, в свое время собирал из различных источноиков.
А за индикатор для MT4 мноuие скажут спасибо.
 
Еще один вариант этого индикатора - более экономично пользуется памятью, не все бары обсчитывает, а только сколько нужно - это его на Viacе поправили
_______________________________________________________________
/*[[
Name := Bheurekso_pattern
Author := Bheurekso, correction - Divergence & lot
Link := http://www.darmasdt.com
Notes := Pattern Recognizer
Separate Window := No
First Color := Lime
First Draw Type := Symbol
First Symbol := 108
Use Second Data := Yes
Second Color := Red
Second Draw Type := Symbol
Second Symbol := 108
]]*/

Input : Prevbars(500), Arrow(1), Name(1);
Variable : myBars(0), StartBar(0), Kedip(false);
Variable : shift(0), shift1(0), shift2(0), shift3(0);
Variable : BullEngulf(False), MorningStar(False), BullPierce(False), Hammer(False);
Variable : BearEngulf(False), EveningStar(False), DarkCloud(False), Shooter(False);
Variable : Harami(False);
SetLoopCount(0);

if (myBars!=Bars) then { myBars=Bars; StartBar=Prevbars;
DelObject("",0,0,0,0);
DelArrow(0,0); };
StartBar += 1;
For shift=StartBar Downto 0 {

// Manjakan MT
shift1=shift+1;
shift2=shift+2;
shift3=shift+3;


//*** periksa pola bullish***
//***************************

//--- Bullish Engulfing (2 bars)
if c[shift2] < o[shift2] & o[shift1] < c[shift2] & //| l[shift1] < l[shift2]) &
c[shift1] > o[shift2] then BullEngulf=True else BullEngulf=False;

//--- Bullish Piercing (2 bars) cuma cari kalo ga ada BullEngulf
if !BullEngulf then {
if c[shift2] < o[shift2] & c[shift1] > o[shift1] & (o[shift1] < c[shift2] | l[shift1] < l[shift2]) &
c[shift1] > c[shift2]+((o[shift2]-c[shift2])/2) then BullPierce=True else BullPierce=False;
}
else {
BullPierce=False;
};

// Morning Star (3 bars)
if c[shift3] < o[shift3] & o[shift2] < c[shift3] & c[shift2] < c[shift3] &
(o[shift1] > c[shift2] | h[shift1] > h[shift2]) & c[shift1] >= c[shift3] then MorningStar=True else MorningStar=False;

// Hammer
if c[shift1] > o[shift1] & (o[shift1]-l[shift1] > max( h[shift1]-c[shift1],c[shift1]-o[shift1])*3 ) then Hammer=True else Hammer=False;


//*** periksa pola bearish***
//***************************

//--- Bearish Engulfing (2 bars)
if c[shift2] > o[shift2] & c[shift1] < o[shift1] & o[shift1] > c[shift2] &
(c[shift1] < o[shift2] | l[shift1] < l[shift2]) then BearEngulf=True else BearEngulf=False;

//--- Bearish Dark Cloud (2 bars) cuma cari kalo ga ada BearEngulf
if !BearEngulf then {
if c[shift2] > o[shift2] & (o[shift1] > c[shift2] | h[shift1] > h[shift2]) &
c[shift1] < c[shift2]-((c[shift2]-o[shift2])/2) then DarkCloud=True else DarkCloud=False;
}
else {
DarkCloud=False;
};

// Evening Star (3 bars)
if c[shift3] > o[shift3] & o[shift2] > c[shift3] & c[shift2] > c[shift3] &
(o[shift1] < c[shift2] | l[shift1] < l[shift2]) & c[shift1] < c[shift3] then EveningStar=True else EveningStar=False;

// Shooting Star
if c[shift1] < o[shift1] & (h[shift1]-o[shift1] > max( c[shift1]-l[shift1],o[shift1]-c[shift1])*3 ) then Shooter=True else Shooter=False;


// Kasih keterangan dan panah Bullish di chart
if BullEngulf then {
if Name=1 then SetText(t[shift1],l[shift1]-28*Point,"Engulfing",LIME);
if Arrow=1 then SetArrow(t[shift1],l[shift1]-20*Point,241,LIME);
}
else {
if BullPierce then {
if Name=1 then SetText(t[shift1],l[shift1]-23*Point,"Piercing",WHITE);
if Arrow=1 then SetArrow(t[shift1],l[shift1]-15*Point,241,LIME);
};
};

if MorningStar then {
if Name=1 then SetText(t[shift2],l[shift2]-18*Point,"Morning Star",Magenta);
if Arrow=1 then SetArrow(t[shift2],l[shift2]-10*Point,241,LIME);
};

if Hammer then {
if Name=1 then SetText(t[shift1],l[shift1]-13*Point,"Hammer",LIME);
if Arrow=1 then SetArrow(t[shift1],l[shift1]-5*Point,241,LIME);
};

// Kasih keterangan dan panah Bearish di chart
if BearEngulf then {
if Name=1 then SetText(t[shift1],h[shift1]+28*Point,"Engulfing",ORANGERED);
if Arrow=1 then SetArrow(t[shift1],h[shift1]+20*Point,242,ORANGERED);
}
else {
if DarkCloud then {
if Name=1 then SetText(t[shift1],h[shift1]+23*Point,"Dark Cloud",WHITE);
if Arrow=1 then SetArrow(t[shift1],h[shift1]+15*Point,242,ORANGERED);
};
};

if EveningStar then {
if Name=1 then SetText(t[shift2],h[shift2]+18*Point,"Evening Star",Magenta);
if Arrow=1 then SetArrow(t[shift2],h[shift2]+10*Point,242,ORANGERED);
};

if Shooter then {
if Name=1 then SetText(t[shift1],h[shift1]+13*Point,"Shooting",ORANGERED);
if Arrow=1 then SetArrow(t[shift1],h[shift1]+5*Point,242,ORANGERED);
};


// Tampilkan disaat ada konfirmasi.


If (BullEngulf | BullPierce | MorningStar | Hammer) &
c[shift] > o[shift] then SetIndexValue(shift, l[shift]-7*Point) else SetIndexValue2(shift,0);

If (BearEngulf | DarkCloud | EveningStar | Shooter) &
c[shift] < o[shift] then SetIndexValue2(shift, h[shift]+7*Point) else SetIndexValue2(shift,0);

StartBar-=1;
};
_______________________________
 
2hell
Больно муторно вспоминать MQL2 и разбираться с чужой логикой, проще построить все с нуля. Для этого нужно уточнить некоторые моменты. (аська 321-144-937)
В основе всех свечных конфигураций лежат "обычные", "с маленьким телом", "дожи" свечи, их идентифицирует каждый по-своему. Во избежание неоднозначной идентификации свечи (в индикаторе) нужно определиться сначала что в индикаторе мы будем считать обычной свечой, что с малым телом, и что дожей. Предлагаю не использовать абсолютные величины, а взять % отношение тела и теней к амплитуде, причем амплитуду брать среднюю за n последних периодов. Так устроит? Если да, то следующее предложение (во внешних параметрах)
"дожа" - это свеча у которой амплитуда составляет менее 50% от средней амплитуды + тело составляет менее 20% от ее амплитуды или тело составляет менее 10% от амплитуды,
"с маленким телом (звезды)" - это свеча с амплитудой от 50 до 65% (во внешние параметры только второе значение)
все остальные обычные свечи,
так устроит?
 
Смогу реализовать но не бесплатно. Если интересно стучись 330045750
 
Еще один вариант этого индикатора - более экономично пользуется памятью, не все бары обсчитывает, а только сколько нужно - это его на Viacе поправили


Вот тупой перевод в МТ4, вроде с логикой все в порядке, а вот что оно должно рисовать проверить не могу.

//+------------------------------------------------------------------+
//|                                            Bheurekso_pattern.mq4 |
//|                                                   Кривошеин Е.В. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Кривошеин Е.В."
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- input parameters
extern bool       Arrow=true;
extern bool       Name=true;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,108);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,108);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
//----
	ObjectsDeleteAll(0,OBJ_TEXT);
	ObjectsDeleteAll(0,OBJ_ARROW);
	//DelArrow(0,0); 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }

//+------------------------------------------------------------------+
//SetArrow(t[shift1],l[shift1]-15*Point,241,LIME);
void SetArrow(int sh, datetime tm, double pr, int cod,color clr)
{
	ObjectCreate("Arrow-"+cod+"-"+sh,OBJ_ARROW,0,tm,pr);
	ObjectSet("Arrow-"+cod+"-"+sh,OBJPROP_ARROWCODE,cod);
	ObjectSet("Arrow-"+cod+"-"+sh,OBJPROP_COLOR,clr);
}
//SetText(t[shift1],l[shift1]-28*Point,"Engulfing",LIME);
void SetText(int sh,datetime tm,double pr,string text,color clr)
{
	ObjectCreate(text+"-"+sh,OBJ_TEXT,0,tm,pr);
	ObjectSetText(text+"-"+sh,text);
	ObjectSet(text+"-"+sh,OBJPROP_COLOR,clr);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
	int    counted_bars=IndicatorCounted();
//---- 
	int myBars=0, StartBar=0;//, Kedip(false);
	int shift=0, shift1=0, shift2=0, shift3=0;
	bool BullEngulf=False, MorningStar=False, BullPierce=False, Hammer=False;
	bool BearEngulf=False, EveningStar=False, DarkCloud=False, Shooter=False;
	bool Harami=False;
	int limit;
   
	if(myBars!=Bars) 
	{ 
		myBars=Bars; 
	}
   limit=Bars-counted_bars;
	for(shift=limit;shift>=0;shift--) 
	{
		// Manjakan MT
		shift1=shift+1;
		shift2=shift+2;
		shift3=shift+3;

		//*** periksa pola bullish***
		//***************************
		
		//--- Bullish Engulfing (2 bars)
		if((Close[shift2]<Open[shift2]) && (Open[shift1]<Close[shift2]) && //| l[shift1] < l[shift2]) & 
				(Close[shift1]>Open[shift2])) 
			BullEngulf=True;
		else 
			BullEngulf=False;
		
		//--- Bullish Piercing (2 bars) cuma cari kalo ga ada BullEngulf
		if(!BullEngulf)
		{
			if((Close[shift2]<Open[shift2]) && (Close[shift1]>Open[shift1]) && 
					((Open[shift1]<Close[shift2]) || (Low[shift1]<Low[shift2])) && 
					(Close[shift1]>Close[shift2]+((Open[shift2]-Close[shift2])/2))) 
				BullPierce=True;
			else 
				BullPierce=False;
		}
		else 
		{
			BullPierce=False;
		}
		
		// Morning Star (3 bars)
		if((Close[shift3]<Open[shift3]) && (Open[shift2]<Close[shift3]) && (Close[shift2]<Close[shift3]) &&
				((Open[shift1]>Close[shift2]) || (High[shift1]>High[shift2])) && (Close[shift1]>=Close[shift3]))
			MorningStar=True;
		else
			MorningStar=False;
		
		// Hammer
		if((Close[shift1]>Open[shift1]) && 
				(Open[shift1]-Low[shift1]>MathMax(High[shift1]-Close[shift1],Close[shift1]-Open[shift1])*3))
			Hammer=True;
		else 
			Hammer=False;
		
		//*** periksa pola bearish***
		//***************************
		
		//--- Bearish Engulfing (2 bars)
		if((Close[shift2]>Open[shift2]) && (Close[shift1]<Open[shift1]) && (Open[shift1]>Close[shift2]) &&
				((Close[shift1]<Open[shift2]) || (Low[shift1]<Low[shift2])))
			BearEngulf=True;
		else
			BearEngulf=False;
		
		//--- Bearish Dark Cloud (2 bars) cuma cari kalo ga ada BearEngulf
		if(!BearEngulf)
		{
			if((Close[shift2]>Open[shift2]) && ((Open[shift1]>Close[shift2]) || (High[shift1]>High[shift2])) &&
					(Close[shift1]<Close[shift2]-((Close[shift2]-Open[shift2])/2)))
				DarkCloud=True;
			else 
				DarkCloud=False;
		}
		else 
		{
			DarkCloud=False;
		}
		
		// Evening Star (3 bars)
		if((Close[shift3]>Open[shift3]) && (Open[shift2]>Close[shift3]) && (Close[shift2]>Close[shift3]) && 
				((Open[shift1]<Close[shift2]) || (Low[shift1]<Low[shift2])) && (Close[shift1]<Close[shift3]))
			EveningStar=True;
		else 
			EveningStar=False;
		
		// Shooting Star 
		if((Close[shift1]<Open[shift1]) && (High[shift1]-Open[shift1]>MathMax(Close[shift1]-Low[shift1],Open[shift1]-Close[shift1])*3)) 
			Shooter=True;
		else
			Shooter=False;
		
		// Kasih keterangan dan panah Bullish di chart
		if(BullEngulf)
		{
			if(Name)
				SetText(shift,Time[shift1],Low[shift1]-28*Point,"Engulfing",Lime);
			if(Arrow)
				SetArrow(shift1,Time[shift1],Low[shift1]-20*Point,241,Lime);
		}
		else 
		{
			if(BullPierce)
			{
				if(Name)
					SetText(shift1,Time[shift1],Low[shift1]-23*Point,"Piercing",White);
				if(Arrow)
					SetArrow(shift1,Time[shift1],Low[shift1]-15*Point,241,Lime);
			}
		}
		
		if(MorningStar)
		{
			if(Name)
				SetText(shift2,Time[shift2],Low[shift2]-18*Point,"Morning Star",Magenta);
			if(Arrow)
				SetArrow(shift2,Time[shift2],Low[shift2]-10*Point,241,Lime);
		}
		

		if(Hammer)
		{
			if(Name)
				SetText(shift1,Time[shift1],Low[shift1]-13*Point,"Hammer",Lime);
			if(Arrow)
				SetArrow(shift1,Time[shift1],Low[shift1]-5*Point,241,Lime);
		}
		
		// Kasih keterangan dan panah Bearish di chart
		if(BearEngulf)
		{
			if(Name)
				SetText(shift1,Time[shift1],High[shift1]+28*Point,"Engulfing",OrangeRed);
			if(Arrow)
				SetArrow(shift1,Time[shift1],High[shift1]+20*Point,242,OrangeRed);
		}
		else 
		{
			if(DarkCloud)
			{
				if(Name)
					SetText(shift1,Time[shift1],High[shift1]+23*Point,"Dark Cloud",White);
				if(Arrow)
					SetArrow(shift1,Time[shift1],High[shift1]+15*Point,242,OrangeRed);
			}
		}
		
		if(EveningStar)
		{
			if(Name)
				SetText(shift2,Time[shift2],High[shift2]+18*Point,"Evening Star",Magenta);
			if(Arrow)
				SetArrow(shift2,Time[shift2],High[shift2]+10*Point,242,OrangeRed);
		}
		
		if(Shooter)
		{
			if(Name)
				SetText(shift1,Time[shift1],High[shift1]+13*Point,"Shooting",OrangeRed);
			if(Arrow)
				SetArrow(shift1,Time[shift1],High[shift1]+5*Point,242,OrangeRed);
		}
		

		// Tampilkan disaat ada konfirmasi.


		if( (BullEngulf || BullPierce || MorningStar || Hammer) && 
				(Close[shift]>Open[shift]))
			ExtMapBuffer1[shift] = Low[shift]-7*Point;
		else 
			ExtMapBuffer1[shift] = 0.0;

		if( (BearEngulf || DarkCloud || EveningStar || Shooter) && 
				(Close[shift]<Open[shift]))
			ExtMapBuffer2[shift] = High[shift]+7*Point;
		else 
			ExtMapBuffer2[shift] = 0.0;

		StartBar-=1;
	}
	
	
	
	
//----
   return(0);
}
//+------------------------------------------------------------------+